Skip to content

Latest commit

 

History

History
104 lines (86 loc) · 5.68 KB

2주차.md

File metadata and controls

104 lines (86 loc) · 5.68 KB
  • 프리미티브 타입 종류와 값의 범위 그리고 기본 값

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

  • 리터럴

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

  • 변수의 스코프와 라이프타임

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

  • 1차 및 2차 배열 선언하기

  • 타입 추론, var

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

불리언 타입

boolean : 1비트의 정보를 표현하지만 사용하는 메모리의 크기는 정해져 있지 않다 기본값 false

수치 타입

정수 타입 8Bit -> 1Byte

자료형 크기(Bit) 값의 범위 기본값
Byte 8 -128~127 0
Short 16 -32,768~32,767 0
Int 32 -2,147,483,648~2,147,483,647 0
Long 64 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 0 0

부동 소수접 타입

자료형 크기(Bit) 값의 범위 기본값
Float 32 1.4E-45 ~ 3.4028235E38 0.0f
double 64 4.9E-324 ~ 1.7976931348623157E308 0.0d
  1. 프리미티브 타입과 레퍼런스 타입

자바의 데이터 타입은 크게 프리미티브 타입(원시 타입) 과 레퍼런스 타입 ( 참조 타입)으로 나눠진다

프리미티브 타입: 메모리 공간에 직접 데이터를 담는다 스택 영역에 저장

기본값은 null이 아니다 null을 넣고 싶다면 래퍼클래스를 사용

레퍼런스 타입: 다른 곳을 참조하는 주소값을 담는다.

기본형을 제외하고 모두 참조형!
빈객체는 null
값이 저장된 힙 메모리의 주소값을 스택영역에 저장
레퍼런스 타입에는 (클래스 , 인터페이스, 배열 ,열거)타입을 갖는다.

static은 classArea에 저장, static 클래스는 힙에 저장되고 주소값 저장

  1. 리터럴

리터럴: 소스코드의 고정된 값을 대표하는 용어

상수와 리터럴 상수:는 변하지 않는 변수 final int a=1; 상수는 a
클래스도 상수로 만들 수 있지만 의미가 다르다 참조 변수 메모리의 주소값이 변하지 않는다는 의미지 그 주소가 가리키는 데이터들 까지 상수라는 의미는 아니다
리터럴: 변수에 넣는 변하지 않는 데이터 ex) int a= 1; 여기서의 리터럴은 1
종류는 (정수, 실수 , 문자 ,논리 ,문자열) 리터럴
인스턴스(클래스 데이터) 가 리터럴이 될 수 있을까 -> x
그럼 불변 객체는 무엇일까?
값객체안의 데이터는 변하지 않지만 변할 사황이 오면 새로운 객체를 만들기 때문이다.

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

가능한 선언과 동시에 초기화 해주는 것이 좋다.
Int a; a=10; 원시타입은 스택영역에 저장된다.

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

변수의 스코프

프로그램상에서 사용되는 변수들은 사용 가능한 범위를 가진다. 그 범위를 변수의 스코프라고 한다.
변수가 선언된 블록이 그 변수의 사용범위이다. 전역변수와 지역 변수 가 있다.
전역변수 2가지로 나뉜다.
Ex) int global; // 전역변수 인스턴스변수
Static int staticGlobal; // 전역변수 클래스변수
클래스 영역에서 선언해 사용하면 전역이고 -> 클래스 전체에서 사용
클래스 안의 메소드에서의 변수 선언은 지역변수이다 ->메소드 블록 내에서 사용

라이프 타임
  • 지역변수
    변수를 선언한 곳에서 생성되어 블록이 종료한 시점에서 삭제
  • 전역변수
    인스턴스 변수: 인스턴스가 생성될 때 생성 -> 어플리케이션 종료시 삭제
    클래스 변수: 클래스가 메모리에 올라갈 때 생성 -> 어플리케이션 종료시 삭제
  1. 타입 변환, 캐스팅 그리고 타입 프로모션

자바에서는 동일한 데이터 타입에서만 연산이 가능하지만 다른 데이터 타입끼리의 연산을 할 수 있는 방법을 제시해 준다.

방법은 캐스팅(강제형변환) 프로모션(자동 형변환) 이있다.
프로모션:

크기가 더 작은 자료형을 더 큰 자료형에 대입할 떄, 자동으로 작은 자료형이 큰 자료형으로 반환되는 것
Ex) int a=10; float b=a; 별다른 오류가 없다 float 범위가 int보다 크기 때문

캐스팅:

크기가 더 큰 자료형을 더 작은 자료형에 대입할 때, 자료형을 명시해서 강제로 집어 넣는 것
Ex)float a=10; int b=a; 는 오류가 발생 -> int b=(int) a; 로 명시적 형변환을 해줘야 한다.
더 큰 것을 작은 곳에 넣기 때문에 데이터 손실이 일어날 수있다.

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

배열: 동일한 자료형의 데이터를 연속된 공간에 저장하기위한 자료구조
배열을 선언하면 stack영역에 heap영역의 주소값이 저장된다.
1차원 배열 선언 : int [] I = new int [3];
2차원 배열 선언 : int [][] I= new int [3][3];

  1. 타입 추론, var

타입 추론이란 코드 작성 당시 타입이 정해지지 않았지만, 컴파일러가 그 타입을 유추하는 것이다.
Java 9 이하에서도 generic, lambda 를 사용할 때 타입 추론이라는 말을 썼다.
Java 10 에서 var이라는 타입이 추가 되었다.
이 키워드는 lcal variable 이면서 선언과 동시에 초기화가 필수적으로 요구된다.
Ex) var message =“apple”;

주의 해야하는 부분
Var message=new ArrayList<>(); 는 오류