JAVA를 JAVA라

[JAVA] 21.06.10 본문

JAVA/JAVA 수업

[JAVA] 21.06.10

샛별KIM 2021. 6. 10. 16:54

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고유의 메소드를
 * 호출할 수 없습니다.
 * 호출하려면 형변환이 필요합니다.
 */

'JAVA > JAVA 수업' 카테고리의 다른 글

[JAVA] Linked List  (0) 2021.06.11
[JAVA] ArrayList의 값은 주소값이라고 생각하자  (0) 2021.06.11
[JAVA & DB] 21.06.09  (0) 2021.06.09
[JAVA & HTML] 21.06.08  (0) 2021.06.08
[JAVA & HTML] 21.06.07  (0) 2021.06.07
Comments