ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java - 프리미티브 타입과 레퍼런스 타입
    Java/java study 2021. 12. 10. 01:43
    반응형
    • 프리미티브 타입 종류와 값의 범위 그리고 기본 값
    • 프리미티브 타입과 레퍼런스 타입
    • 리터럴
    • 변수 선언 및 초기화하는 방법
    • 변수의 스코프와 라이프타임
    • 타입 변환, 캐스팅 그리고 타입 프로모션
    • 1차 및 2차 배열 선언하기
    • 타입 추론, var
    • Wrapper Class에 대해 말해주세요.
    • java final과 불변객체에 대해 정리해주세요. (https://www.youtube.com/watch?v=ej-bnXlHk-E)

     

    프리미티브 타입(Primitive tyoe)

    • 실제 데이터 값을 저장하는 타입
    • 실제로 데이터 값을 넣는 메모리 공간을 차지한다.
    • null 값을 가질 수 없다.

     

    레퍼런스 타입(Reference Type)

    • heap 영역에 저장되어 있는 실제 객체들의 주소 값를 저장
    • stack영역에 저장
    • 객체를 참조하지 않는 null값을 넣을 수 있다.

     

    리터럴

    • 변수 초기화 시 저장되는 값
    int i = 10;
    double d = 3.14;
    String s = "java";
    boolean b = false;

     

    변수 선언 및 초기화하는 방법

    1. 변수 선언

    • 첫 번째 글자는 문자이거나 '$', '_' 이어야 한다. ( 숫자 x )
    • 영어 대소문자 구분된다.
    • 문자 길이의 제한이 없다.
    • 예약어를 사용할 수 없다.

    2. 변수 선언 방법

    변수 타입  변수이름 

    int            count;
    double      pi;

     

    3. 초기화 방법

    변수 타입   변수이름    리터럴

    int             count   =    100;
    double       pi        =    3.14 ;  
    • 멤버 변수는 선언하면 0으로 초기화 된다.
    • 지역 변수는 자동으로 0으로 초기화되지 않는다.

     

    변수의 영역(스코프)와 라이프타임

    Class variables - 클래스 내부, 모든 블록 외부에서 선언되고 static으로 표시된 변수
    • 라이프 타임 - 처음 JVM이 실행되어 클래스가 메모리에 올라가고, 프로그램이 종료될 때까지 유지
    • 스코프 - 클래스 전체
    • 클래스 객체들이 공유함
    Instance variables - 클래스 내부에서 선언되어 있고 모든 메소드 및 블록 외부에 선언된 변수
    • 라이프 타임 - 객체가 생성되어 메모리에 있다가 메모리에서 살아질때까지
    • 스코프 -  static 메서드를 제외한 클래스 전체
    Local variables - 인스턴스, 클래스 변수가 아닌 모든 변수
    • 라이프 타임 - 변수 선언 후 블록을 벗어날 때 까지
    • 스코프 - 변수가 선언된 블록 내부

     

     

    타입 변환, 캐스팅 그리고 타입 프로모션

    타입 변환 (형변환) - 변수 타입을 다른 타입으로 변환
    • 자동(묵시적) 타입 변환 (프로모션) - 데이터가 손실 되지않을때, 즉 타입의 데이터가 커지면 자동 형변환이 된다.
    • 강제(명시적) 타입 변환 (캐스팅) - 데이터의 손실 가능성을 감안하고 사용자가 강제적으로 형변환을 시킨다.

     

     

    1차 및 2차 배열 선언하기

     

    1. 1차배열

    1차원 배열 선언
    int [] intArray;
    int intArray[];
    1차원 배열 생성
    intArray = new int[5];

    1차원 배열 선언과 생성
    int [] intArray = new int[5];

     

     

    2. 2차배열

    2차원 배열 선언
    int [][] intArray;
    int intArray[][];
    2차원 배열 생성
    intArray = new int[2][5];

    2차원 배열 선언과 생성
    int [][] intArray = new int[2][5];

     

     

     

    타입 추론, var

    타입 추론 - 개발자가 변수의 타입을 명시적으로 적지 않아도,
                    컴파일러가 변수에 대입된 리터럴 값으로 추론하는 것을 말한다.

     

    var str = "hello java";

     컴파일러가 초기화값 "hellow java" 리터럴을 통해 str은 String 타입으로 추론한다.

     

    • var는 초기화값이 있는 지역변수로만 선언이 가능
    • var는 키워드가 아니다.
    • var는 null 값이 들어갈 수가 없다.
    • 람다식에는 명시적인 타입을 지정해줘야 한다.

     

     

    Wrapper Class

    Wrapper Class - 기본 자료타입(primitive type)을 객체로 다루기 위해 사용하는 클래스
    기본타입(Primitive type) 래퍼 클래스(Wrapper Class)
    byte Byte
    char Character
    int Integer
    float Float
    double Double
    boolean Boolean
    long Long
    short Short

     

    박싱(Boxing과 언박싱(UnBoxing)

     기본 타입의 값을 객체로 만드는 과정을 박싱이라 하고 객체에서 기본타입의 값으로 만드는 과정을 언박싱이라 한다.

     

     

     

    불변객체

    불변 객체란? 재할당은 가능하지만, 한번 할당하면 내부 데이터를 변경할 수 없는 객체를 말한다.
    • 객체가 한번 생성되면 변하지 않으므로 transaction 내에서 믿고 쓸 수 있기 때문에 신뢰도가 높아진다.
    • 생성자, 접근메소드에 대한 방어 복사가 필요없다.
    • 멀티스레드 환경에서 동기화 처리없이 객체를 공유할 수 있다.

     

    반응형

    'Java > java study' 카테고리의 다른 글

    Java - LinkedList, Stack, Queue 구현하기  (0) 2022.01.02
    JUnit 5  (0) 2022.01.02
    Java - 제어문  (0) 2022.01.01
    Java - 연산자  (0) 2021.12.19
    Java - JVM에 대하여  (0) 2021.12.03

    댓글

Designed by Tistory.