2주차 과제

Jin·2022년 6월 7일
0

목표

자바의 프리미티브 타입, 변수, 배열을 사용하는 방법을 익힌다.

1. 프리미티브 타입종류와 값의 범위 그리고 기본 값

2. 프리미티브 타입과 레퍼런스 타입

  • Primitive type
    : 정수, 실수, 문자, 논리 리터럴을 저장하는 타입
  • Reference type
    : 객체의 번지를 참조하는 타입. 배열, 열거, 클래스, 인터페이스 등.

3. 리터럴

  • 소스 코드 내에서 직접 입력된 값.
  • 종류에 따라 정수, 실수, 논리 리터럴로 구분.
  • 상수와 같은 의미이지만 프로그램에서는 상수를 '값이 한 번 저장되면 변경할 수 없는 변수'로 정의하기 때문에 이와 구분하기 위해 '리터럴'이라는 용어 사용.

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

  • Variable 변수 : 하나의 값을 저장할 수 있는 메모리 공간

  • 변수 명명 규칙 :
    1) 첫번째 글자는 문자이거나 '$', '_' 이어야하고 숫자로 시작할 수 없다.
    2) 영어 대소문자가 구분된다(필수)
    3) 첫 문자는 영어 소문자로 시작하되 다른 단어가 붙을 경우 첫 문자를 대문자로 한다(관례)
    4) 문자 길이의 제한은 없다
    5) 자바 예약어는 사용할 수 없다(필수)
    ** 예약어 : 이미 자바에 등록되어 의미가 약속되어 있는 단어

  • 변수의 사용
    변수에 값을 저장할 때는 대입 연산자 =를 사용한다.
    우측 값을 좌측 변수에 저장한다는 의미

    // 변수선언
    int number;
    // 값 저장
    number = 7;

  • 변수의 초기화
    1) 변수를 선언하고 처음 값을 저장할 경우 이를 초기값이라고 한다.
    2) 변수에 초기값을 주는 행위를 변수의 초기화라고 한다.
    3) 변수는 초기화 되어야 읽을 수 있고 초기화되지 않은 변수는 읽을 수 없다.

5. 변수의 스코프와 라이프타임

  • 변수의 사용 범위(Scope)
    1) 변수는 중괄호 {}블록 내에서 선언되고 사용된다.
    2) 중괄호 블록을 사용하는 곳은 클래스, 생성자, 메소드이다.
    3) 변수는 메소드 블록 내 어디서든 선언할 수 있다. 다반 선언된 블록 내엥서만 사용이 가능하다.
  • 선언 위치에 따른 변수의 종류
    1) 인스턴스변수
    ㅡ 클래스 영역에 선언되며, 클래스의 인스턴스를 생성할 때 만들어진다.
    ㅡ 인스턴스마다 고유한 상태를 유지해야하는 속성의 경우 인스턴스변수로 선언한다.

    2) 클래스 변수
    ㅡ 인스턴스 변수 앞에 static을 붙이면 클래스 변수가 선언된다.
    ㅡ 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야하는 속성의 경우 클래스 변수로 선언해야한다.
    ㅡ 클래스 변수는 인스턴스 변수와 달리 인스턴스를 생성하지 않고도 언제라도 바로 사용가능하며 '클래스이름.클래스변수'와 같은 형식으로 사용된다.

    3) 지역변수
    ㅡ 메서드 내에 선언되어 메서드 내에서만 사용 가능하다.
    ㅡ 메서드가 종료되면 소멸되어 사용할 수 없다.

  • 라이프타임
    ㅡ 변수가 메모리에서 살아있는 기간을 의미
    ㅡ 변수가 선언된 블록 내부에서 프로그램이 도는 동안을 의미.

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

1) 자동 타입 변환 Promotion
ㅡ 프로그램 실행 도중 자동적으로 타입 변환이 일어나는 것을 말한다.
ㅡ 작은 크기의 타입이 큰 크기의 타입에 저장될 때 발생한다.

(float은 4byte지만 표현할 수 있는 값의 범위가 더 큼)
** 예외) char는 2byte크기를 가지지만 0~65535의 범위로 음수가 저장될 수 없다. 따라서 음수 저장이 가능한 byte 타임을 char 타입으로 자동변환 시킬 수 없다

2) 강제 타입 변환 Casting
ㅡ 강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개어 저장하는 것.
ㅡ int 타입 변수는 4byte 이므로 1byte 크기를 가지는 byte타입 변수에 저장할 수 없다. 그래서 강제적으로 캐스팅 연산자를 사용해 1byte씩 쪼개어 끝에 있는 1byte만 byte타입 변수에 저장한다.

** 변환 시 값의 손실을 방지하기 위해 강제 타입 변환 전 값이 안전하게 보존될 수 있는지 검사하는 것이 좋다.

7. 1차 및 2차 배열 선언하기

1) 배열 : 동일 타입의 값을 여러개 취급할 수 있는 기능

  • 인덱스 '[]'로 배열의 길이나 순서를 나타낼 수 있다
  • 인덱스 안의 숫자는 0을 포함한 정수를 사용한다
  • 타입에 따라 default value가 채워진다
    참조 - null
    int / short / byte / long - 0
    float / double - 0.0
    boolean - false
    char - \u0000

2) 1차 배열

  • 예시 :
    int[] array = new int[5];
    array[0] = 1;
    array[1] = 2;
    array[2] = 3;
    array[3] = 4;
    array[4] = 5;

3) 2차 배열

  • 예시 :
    int [][]array = new int[5][5]
    array[0][0] = 1;
    array[0][1] = 2;
    array[1][0] = 2;
    array[1][1] = 2;
    ...

8. 타입 추론, var

1) 타입 추론 (Type Inference):
정적 타이핑을 지원하는 언어에서 타입이 정해지지 않은 변수에 대해 컴파일러가 변수의 타입을 스스로 찾아낼 수 있도록 하는 기능.
타입 추론이 가능하다는 얘기는 타입을 명시하지 않아도 된다는 뜻.
-> 코드량을 줄이고 코드의 가독성을 높일 수 있음

2) Var :
java 10에서는 var라는 Local Variable Type Inference가 추가되었다. 기존의 자바에서는 일반 변수에 대해 타입 추론이 지원되지 않고 generics와 lambda 식에 대해서만 타입 추론을 지원하고 있었다.

  • java 9 - String name = "Jin";
  • java 10 - var name = "JIn";

0개의 댓글