if(true or false) {
조건이 true 시 실행되는 영역
}
if(true or false) {
조건이 true 시 실행되는 영역
} else {
조건이 false 시 실행되는 영역
}
// if else를 여러번 사용할 때
if(true or false) {
조건이 true 시 실행되는 영역
} else if (true or false) {
前조건들이 모두 false & 現조건이 true 시 실행되는 영역
} else {
모두 false 시 실행되는 영역
}
switch(변수){
case 값1 :
실행문;
break;
case 값2 :
실행문;
break;
default :
실행문;
break;
}
public static void main(String[] args) {
switch(num) {
case 12 : case 1 : case 2 :
System.out.println("겨울");
break;
case 3 : case 4 : case 5 :
System.out.println("봄");
break;
case 6 : case 7 : case 8 :
System.out.println("여름");
break;
case 9 : case 10 : case 11 :
System.out.println("가을");
break;
default :
System.out.println("다시 입력해주세요");
break;
}
}
절차지향
프로그램은 전체가 유기적으로 연결되있어서 프로그램의 실행속도가 빠르지만 유지보수가 어렵고 순서를 바꾸지 못하기때문에 비효율적이었다객체지향
이라는 개념이 등장하며 프로그램을 각각의 사물로 생각하여 하나로 이어진 것이 아닌 서로서로 상호작용이 가능하게 만든다.객체
가 있다 이 아이폰14라는 객체는 스마트폰이라는 틀
안에 존재한다.클래스
안에서 다른 객체
인 갤럭시s20, 아이폰12 등등 수많은 객체를 만들 수 있다.public class Circle {
접근지정자 클래스선언 클래스이름
필드
int radius;
String color;
메소드
double calrArea() {
return 3.14 * radius * radius;
}
}
Circle cir = new Circle();
클래스자료형 객체참조변수 = new연산자 클래스();
new연산자
를 통해 Heap영역
에 데이터를 저장할 공간을 할당받고 객체
에게 반환하여준 다음 생성자 클래스()
를 호출하게된다.먼저 자바의 메모리 구조에 대해 간단하게 알아보면
자바는 Static, Stack, Heap으로 이루어져있다
가장 바깥부분(필드)부분에 선언된 변수(전역변수)나 정정(static이 붙은) 변수, 클래스가 이 필드에 속한다
기본 자료형(int, double, boolean등)과 지역변수, 메서드 등이 이 필드에 속한다
간단하게 실제 메모리의 영역이다
객체타입의 데이터가 저장된다(String, Intege 등), 배열
실제 데이터를 가지고있는 Heap영역의 참조 값을 Stack영역이 가지고있다
이 참조값을 얻기위해 new연산자는 인스턴스를 생성해 Heap에 배치한 다음 참조값을 Stack에서 받아온다
위처럼 메모리의 구조가 있다
여기서 ‘스마트폰’이라는 클래스를 만들고 그 안에 ‘아이폰14’라는 객체를 만들어보자
이 아이폰14라는 객체를 만들기 위해 클래스에 기본적으로 프로퍼티와 메서드를 넣었다
class smartPhone {
public String color;
public int space;
public void sound() {
System.out.println("띵동");
}
}
public class Phone {
public static void main(String[] args){
smartPhone iphone14 = new smartPhone();
iphone14.color = "mid night";
iphone14.space = 128;
iphone14.sound();
}
}
이렇게 코드를 작성하고실행을 해보자
main인 Phone클래스와 smamrtPhone클래스가 스태틱영역에 들어갔다
smartPhone iphone14 = new smartPhone();에서
smartPhone iphone14가 실행되어 smartPhone객체에 대하나 참조변수 iphone14를 만들었다
이제 new smartPhone()이 실행되어 인스턴스를 하나 만들어서 Heap에 배치한다
그 다음 객체 참조 변수 iphone14를 통해 작성한 값들을 대입한다
iphone14.color = “mid night”;
이렇게 객체 참조 변수 iphone14를 이용해 실제 Heap객체에 접근해 데이터를 할당하고있다
그렇게 데이터를 다 할당이 다 끝나면 마지막줄이 실행된다
iphone14.sound();
메서드가 실행되어 콜솔에 “띵동”이 출력되게 되고
참조가 끝난 Heap에 smartPhone객체는 갈비지컬렉터(GC)에 의해 사라지게 된다