dbeaver 실행
-> mariadb 선택 - > 패스워드 입력 ->
//is a, Has a
/*
* is a ~는 ~입니다.
*
* has a ~는 ~을 가지고 있습니다.
*
//memory
/*
* 호출 스택은 예외처리 할 때 필요합니다!
*
* 메소드 영역 클래스 데이터(클래스 변수)
* 프로그램 실행 중 어떤 클래스가 사용되면
* JVM은 해당 클래스 파일을 읽어서 클래스 데이터를
* 이 곳에 저장하며 동시에 클래스 변수도
* 이곳에 생성
*
* 호출 스택 메인 메소드(지역 변수)
* 메소드 작업에 필요한 메모리 공간을 제공
* 메소드가 호출되면 호출 스택에 메소드 활용을 위한
* 메모리가 할당됩니다.
* 메모리에서 메소드가 작업을 하는 동안
* 지역 변수와 연산의 중간 결과가 저장됩니다.
* 메소드가 작업을 마치면 할당된 메모리 공간은
* 반환되어 비워집니다.
* 호출스택은 제일 상위에 있는 메소드가 지금 실행중인
* 메소드 입니다. 나머지는?
* 나머지는 모두 대기중입니다.
* ※ 언제나 호출스택의 제일 위에 있는 메소드가
* 지금 실행 중인 메소드 입니다.
* 아래에 있는 메소드가 바로 위에 있는 메소드를
* 호출해서 사용중인 메소드 입니다.
*
* 힙 영역 인스턴스(인스턴스 변수)
* 인스턴스가 이곳에 생성됩니다.
*
* ------------------------------------------------------------------------------------
* 리턴타입이 있는 메소드는 종료되기 직전 결과값을 반환합니다.
* 누구에게 반환? = 자신을 호출한 메소드에게 결과값을 반환
* 누구? 대기타고 있는 호출 메소드가 받아서 프로그램을 진행합니다.
*/
//enum
/*
* 열거형 타입
*
*/
public enum Season {
Spring,
Summer,
Fall,
Winter
}
일 때
Season season;
this.season = season.Spring;
//랩퍼 클래스
/*
* 컬렉션 하기 위해서 = 값을 담을 때 참조형 R만 담을 수 있어요!
* 기본 자료형은 컬렉션을 담을 수 없기 때문에
* 기본 자료형을 객체타입으로 만들어 주는 것이 랩퍼클래스 입니다.
*
* 기본 자료형의 값을 컬렉션에 담기 위해서는 랩퍼 클래스를 사용합니다.
* 모든 기본 자료형에 대해 그에 대응하는 랩퍼 클래스가 있습니다.
* 기본 자료형의 값을 멤버 변수의 값으로 저장하고
* 이 값 주위로 값을 가공하는 메소드들이 감싸고 있다고 해서
* 랩퍼(Wrapper : 감싸다) 클래스 라고 불립니다.
*
*
* 기본 자료형 랩퍼 클래스
* byte Byte
* short Short
* int Integer
* long Long
* float Float
* double Double
* char Character
* boolean Boolean
*/
//오토 언박싱 / 오토 박싱
Integer integer3 = 200; //오토박싱 원래는 나오면 안되는 코드!
//Integer integer3 = new Integer(200); //위 코드를 아래처럼 인식해서 알아서 바꿔준다.
//형변환 아님!! 기본 자료형이 참조형으로 바뀌는 것
integer = 200;
integer2 = new Integer(200);
//위 integer처럼 값을 넣으면 아래 integer2처럼 들어가는데,
//이 new XXX();는 새 객체 생성이므로
//integer와 integer2는 다른 객체이다.
if(integer == integer2) { //이건 객체가 똑같냐고 물어보는 것이므로 두개 주소값은 다르다!
System.out.println("같아요?");
} else { //그래서 다르다고 출력된다..
System.out.println("달라요@");
}
/* integer와 integer2가 같은 int값을 가지고 있는지
* 판별하기 위해서는 integer 속에 있는 equals()를 써야 합니다.
* Integer의 equals()는 값이 int인지 판단하도록
* Object에서 이 equals()를 오버라이딩 합니다.
* ==은 P타입만 비교 가능, R타입은 equals로 비교해야 합니다.
*/
오토박싱과 오토언박싱, 랩퍼클래스!
numInt2 = integer3; //p = R
//integer3 객체 안에 int 값이 나와서 numInt3에 대입
//이게 오토 언박싱입니다!
integer3 = numInt3 //R = p
//오토 박싱!
Object obj = 10;
System.out.println(obj);
int num4 = (int)obj + 1;
System.out.println(num4);
obj = "10";
System.out.println(obj);
int num5 = Integer.valueOf((String)obj) + 1;
System.out.println(num5);
int num6 = ((Integer)obj).intValue();//방법2
/*
* 다른 형태로.
* obj에는 10을 내포하는 Integer객체의 참조값이 대입
* 컴파일 단계에서 Object = new Integer(10);으로 변경
* Object타입의 레퍼런스로 Integer고유의 메소드를
* 호출할 수 없습니다.
* 호출하려면 형변환이 필요합니다.
*/