티스토리 뷰

728x90

기본 (Primitive) 타입 종류와 값의 범위 그리고 기본 값

모든 변수에는 타입(Type)이 있으며, 타입에 따라 저장할 수 있는 값의 종류와 범위가 달라진다.

변수를 선언할 때 주어진 타입은 변경할 수 없기 때문에 변수를 선언할 때 어떤 타입을 사용할지 충분히 고려해야한다.

 

기본 타입이란 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입을 말한다.

출처 - 이것이 자바다 기본 타입

메모리에는 0과 1을 저장하는 최소 기억 단위인 비트(bit) 가 있다.

8개의 비트를 묶어서 바이트(byte) 라고 한다.

 

자바는 기본적으로 정수 연산을 int 타입으로 수행하고 실수 연산을 dobule 타입으로 수행한다. 

저장하려는 값이 정수형이면 int 타입의 변수에 저장하는 것이 좋고 실수형이면 dobule 타입의 변수에 저장하는 것이 좋다.

기본 (Primitive) 타입과 참조(Reference) 타입

참조 타입이란 기본타입을 제외한 모든 타입을 참조타입이라고 한다.

객체의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입을 말한다.

기본타입에는 변수의 값이 저장되지만 참조 타입으로 선언된 변수는 메모리의 주소를 값으로 갖는다.

 

이것이 자바다 그림 출처

리터럴(Literal)

리터럴(literal)이란 그 자체로 값을 의미한다.

즉, 변수와 상수와는 달리 데이터가 저장된 메모리 공간을 가리키는 이름을 가지고 있지 않는다.

자바의 정석(page31) - 변수와 상수 그리고 리터럴

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

변수를 선언하고 초기화

public static void main(String args[]){
	
    int age;  //변수 선언
    age = 25;  //값 저장
    
}

초기값은 변수를 선언함과 동시에 줄 수도 있다.

public static void main(String args[]){
	
    int age = 25;  //변수 선언과 동시에 초기화
    
}

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

변수는 중괄호 {} 블록 내에서 선언되고 사용된다.  

변수는 클래스변수, 인스턴스 변수, 지역변수 모두 세 종류가 있는데 변수의 종류를 결정짓는 중요한 요소는 변수의 선언된 위치 이다.

public class Variables{
    static int classVariable;	//클래스 변수(static 변수)
    int instanceVariable;	//인스턴스 변수

    public void method(){
    	int localValue = 0;	//지역 변수
    }
}

인스턴스 변수는 클래스 영역에 선언되며, 클래스의 인스턴스를 생성할 때 만들어진다.

그렇기 때문에 인스턴스 변수의 값을 읽어 오거나 저장하기 위해서는 먼저 인스턴스를 생성해야 한다.

 

클래스 변수는 인스턴스마다 독립적인 저장공간을 갖는 인스턴스 변수와는 달리, 모든 인스턴스가 공통된 저장공간(변수)를 공유하게 된다.

공유 변수라고도 한다. 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야 하는 속성의 경우 클래스 변수로 선언해야 한다.

클래스 변수에 접근할 때는 클래스이름.클래스변수로 접근할 수 있다.

 

지역변수는 메서드 내에 선언되어 메서드 내에서만 사용이 가능하며, 메서드가 종료되거나 블록을 벗어나면 지역변수는 소멸되어 사용할 수 없게 된다.

출처 - 자바의 정석 (변수의 종류와 특징)

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

타입 변환이란 데이터 타입을 다른 데이터 타입으로 변환하는 것을 말한다.

타입 변환에는 두 가지 가 있는데 자동(묵시적) 타입 변환과 강제(타입) 변환이 있다.

자동 타입 변환 (Promotion)

자동 타입 변환(Promotion)은 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것을 말한다.

자동 타입 변한은 작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 발생한다.

출처 - 이것이 자바다. 자동 타입 변환

강제 타입 변환 (Casting)

큰 크기의 타입은 작은 크기의 타입으로 자동 타입 변환 할 수 없다.

그러나 강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개어서 저장할 수 있는데 이를 강제 타입 변환(Casting) 이라고 한다.

출처 - 이것이 자바다.  강제 타입 변환

그렇다면 이럴 때 큰 크기 타입이 작은 크기 타입으로 들어 갈때 데이터는 어떻게 될까?

예를들어 1byte 타입에  int 타입을 쪼개서 넣으려고 하면 int 타입이 4byte 이니까 마지막 1byte 크기의 데이터만 들어갈 수 있게되고 나머지 앞의 3byte의 값은 소멸된다.

출처 - 이것이 자바다 int형을 byte로 강제 타입 변환 (값 소멸)

하지만 int 의 값이 1byte로만 표현이 가능한 수를 byte 타입으로 변환해도 값이 소멸되지 않고 그대로 유지 될 수 있다. 이럴 경우에 강제 타입 변환이 의미 있게 된다.

출철 - 이것이 자바다 int 형을 byte로 강제 타입 변환 (값 보존)

1차 및 2차 배열 선언하기

배열은 참조타입으로 변수에는 한 개의 데이터만 저장할 수 있지만 배열은 같은 타입의 데이터를 많은 양으로 저장할 수 있다.

배열은 같은 타입의 데이터를 연속된 공간에 나열시키고, 각 데이터에 인덱스(index)를 부여해 놓은 자료구조이다.

public static void main(String args[]){

	String[] stringArray

	String stringArray[]
}

 

배열을 선언할 때는 타입 앞에 [] 를 붙일 수도 있고 변수명 뒤에 []를 붙일 수도 있지만 타입 앞에 []를 붙이는게 좀 더 명확하게 들어온다.

배열을 선언과 동시에 초기화 할때는 타입[] 변수명 = {} 중괄호 안에 값을 넣어 준다. 해당 타입에 맞는 값을 넣어줘야 한다.

public static void main(String args[]){

	//배열을 선언과 동시에 초기화
	String[] stringArray = {"sskim", "안녕하세요"}

}

2차원 배열 선언 방법

public static void main(String args[]){

	//2차원 배열을 선언과 동시에 초기화
	String[][] stringArray = {
    		{"sskim", "안녕하세요"}
    		{"JAVA", "FUN"} 
    }

}

 

 

타입 추론, var

타입추론이란 컴파일러가 코드에 타입이 정해져 있지 않지만 데이터 타입을 유추하는 것을 말한다.

보통 제네릭에서 많이 사용된다.

 

 

 

참조

http://www.yes24.com/Product/Goods/15651484

 

이것이 자바다

15년 이상 자바 언어를 교육해온 자바 전문강사의 노하우를 아낌 없이 담아낸 자바 입문서. 저자 직강의 인터넷 강의와 Q/A를 위한 커뮤니티(네이커 카페)까지 무료로 제공하여 자바 개발자로 가

www.yes24.com

http://www.yes24.com/Product/Goods/24259565

 

Java의 정석

최근 7년동안 자바 분야의 베스트 셀러 1위를 지켜온 `자바의 정석`의 최신판. 저자가 카페에서 12년간 직접 독자들에게 답변을 해오면서 초보자가 어려워하는 부분을 잘 파악하고 쓴 책. 뿐만 아

www.yes24.com

http://tcpschool.com/java/intro

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함