///////
Search

조건, 객체 , 메소드

작성 날짜
2022/09/22 10:00
작성자
황시은

if문

if(true or false){
조건 true 시 실행되는 영역
}
else if(){
if문의 조건이 아니면서 else if 문의 조건이 true일때 실행됨
}
else{
위의 조건들이 모두 false일때 실행됨
}
→ if 문과 else 절에 속한 문장이 하나일 경우 중괄호가 생략이 가능하다.

switch문

스위치 문의 기본은 걸리면 브레이크까지 실행한다. defalut 문은 아무 조건에 걸리지 않을 때 실행한다.
package eud.lion.quiz; import java.util.Scanner; public class 가위바위보게임 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("가위(0), 바위(1), 보(2): "); int user = sc.nextInt(); int computer = (int) (Math.random() * 3); if (user == computer) System.out.println("인간과 컴퓨터가 비겼음"); else if (user == (computer + 1) % 3) // 0은 1한테 지고 1은 2한테, 2는 0한테 진다. System.out.println("인간: " + user + " 컴퓨터: " + computer + " 인간 승리"); else System.out.println("인간: " + user + " 컴퓨터: " + computer + " 컴퓨터 승리"); } } -> 이해하기
Java
복사

객체

절차 지향 언어

메소드와 변수만 존재해 사용함.

객체 지향 언어

절차 지향 언어에서 없던 점을 보완해 만든 언어.
캡슐화
상속
추상화
정보은닉

클래스 정의 후 객체 생성

1.
클래스 정의 class Car
2.
참조 변수 선언 Car car
3.
객체 생성. Car car = new Car();
4.
객체의 필드 선언 car.speed = 100
5.
객체 메소드 접근 car.go()
무조건 메인 메소드 먼저 실행한다. → 코드의 간결성을 위해 class, 함수를 활용해 필요한
내용을 불러오면서 코딩하는게 좋다.
클래스명은 참조형
그럼 객체를 생성해 변수명으로 생성할때 용량을 얼마나 차지 할까?

그럼 객체 생성시 참조형을 선언할 때 얼마나 차지 할까?

참조형은 4byte, 주소값을 참조해 생성한다.
객체 생성시 힙 메모리에 올린다.
obj = new Circle()← 함수!
함수 또한 4byte
class Circle{ int radius // 4byte String color // 4byte double calcArea(){} // 4byte }12byte의 객체를 생성한다!
Java
복사

즉,객체! → 객체(인스턴스)란 .class 를 메모리로 올린것

ex) Car car = new Car()
Car = 자료형
car = 객체변수 → 참조값을 저장한다 (c언어의 포인터 개념)
new = 메모리 할당 , 인스턴스 생성 ,참조값을 리턱한다
Car() = 생성자(함수)를 호출한다.
즉, Car car 에 1000(예시)번지에 생성한 new Car()의 2000번지 메모리 주소(4byte)가 저장된다.
그 후 메인에서 calcArea함수를 호출하면, 2000번지의 calcArea를 호출한다.

String 객체

ex) String str = "Happy";
str은 메모리에 Happy의 주소값이 저장된다.

추가로 찾기

String 은 각 문자를 char 배열 형태로서 저장한다.
String 으로 리터럴 방식으로 값을 지정할 경우 같은 문자의 경우 같은경우 같은 메모리주소를 가진다.
new String 형태로 생성했을 경우 다른 메모리주소를 가져 == 연산을 진행했을 때 false를 리턴한다.
자바 1.5 버전 이후 StringBuffer와 StringBuilder 를 사용하여 문자열에 문자열을 더할 때 append함수를 사용하면 본래의 메모리주소를 동일하게 가지는 새 문자열을 가질 수 있다. ex) 1000번지 Happy에 Day를 append함수로 붙이면 1000번지에 HappyDay를 가지게된다.
concat 함수를 이용해 붙이게 되면 Happy, Day 와 다른 메모리주소를 가지는 HappyDay를 가진다.
리터럴 방식과 객체방식으로 동일한 문자열을 생성했을 경우 == 연산으로 비교하면 false를 출력하기 때문에equals()함수를 통해 비교해야 한다.

Class 생성 규칙

1.
카멜 케이스를 기본으로 한다.
2.
class생성시 앞글자는 대문자

메소드(함수)

메소드는 입력을 받아서 처리를 하고 결과를 반환하는 가상적인 상자와 같다.
void : 값을 반환하지 않음.
반환하기 위해서는 함수에 반환형태로 자료형을 정의해주어야한다.
return: 값의 반환을 명령한다.

static이란? (그냥 궁금해서 찾은거)

Java에서 Static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미합니다.이를 정확히 이해하기 위해서는 메모리 영역에 대한 이해가 필요합니다.
일반적으로 우리가 만든 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap영역에 생성됩니다. 즉 서로다른 영역에 메모리영역에 생김.
객체의 생성시에 할당된 Heap영역의 메모리는 Garbage Collector를 통해 수시로 관리를 받습니다.
Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만,
Garbage Collector의 관리 영역 밖에 존재하므로 Static을 자주 사용하면 프로그램의 종료시까지 메모리가 할당된 채로 존재하므로 자주 사용하게 되면 시스템의 퍼포먼스에 악영향을 주게 됩니다.
→ static은 클래스 변수이므로 객체를 생성하지 않고 class의 메소드를 사용하는것이 가능하다.
ex)static int calcArea(){}
로 class내의 생성시 메인에서 circle.calcArea()로 객체생성 없이 사용이 가능하다.

과제

Grade 클래스를 만들고 국어,영어,수학을 입력받는 기능을 만들고 평균이 90점이상시 수, 우 ,미, 양, 가 를 출력하는 프로그램 만들기 GradeTest 클래스 필요
금일 업다운 게임 리팩토링 하여 클래스에서 업다운 만들기