Leeyebin의 블로그

[JAVA] 02. 변수와 타입 본문

공부 기록실/JAVA

[JAVA] 02. 변수와 타입

안되면될때까지 2017. 3. 1. 12:06

2.1 변수

2.1.1 변수란?

변수란, 하나의 값을 저장할 수 있는 메모리 공간이다.

변수에는 복수 개의 값을 저장할 수 없고, 하나으 기밧만 저장할 수 있다. 또한 다양한 타입의 값을 저장할 수 없고, 한 가지 타입의 값만 저장할 수 있다.

변수를 선언만하고 초기화를 하지 않으면, 컴파일이 되지 않음. (The local variable ? may not have been initailized. 


2.1.2 변수의 선언

int age;  //정수(int)값을 저장할 수 있는 age 변수 선언
double value; //실수(double)값을 저장할 수 있는 value 변수 선언

변수 명명 규칙

작성 규칙

 첫 번째 글자는 문자이거나 '$', '_' 이어야 하고 숫자로 시작할 수 없다.(필수)

 영어 대소문자가 구분된다.(필수)

 첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 한다.(관례)

 문자 수(길이)의 제한은 없다.

 자바 예약어는 사용할 수 없다.(필수)


*자바 예약어들로 변수 이름을 지정하면 컴파일 에러가 발생하니 주의

 분류

예약어

기본데이터타입 

boolean, byte, char, short, int, long, float, double 

 접근 지정자

private, protected, public

 클리스와 관련된 것

 class, abstract, interface, extends, implements, enum

 객체와 관련된 것

 new instanceof, this, super, null

 메소드와 관련된 것

 void, return

 제어문과 관련된 것

 if, else, switch, case, default, for, do, while, break, continue

 논리값

 true, false

 예외 처리와 관련된 것

 try, catch, finally, throw, throws

 기타

 transient, volatile, package, import, synchronized, native, final, static, strictfp, assert


2.1.3 변수의 사용

변수값 저장

변수에 값을 저장할 대에는 대입 연산자(=)를 사용한다.(우측의 값을 좌측 변수에 저장한다는 의미를 갖는다.) 변수를 선언하고 처음 값을 저장할 경우, 이러한 값을 초기값이라고 한다. 그리고 변수에 초기값을 주는 행위를 변수의 초기화라고 한다.


변수의 초기값은 코드에서 직접 입력하는 경우가 많은데, 소스 코드 내에서 직접 입력된 값을 리터럴(literal)이라고 부른다.

리터럴의 종류 - 정수, 실수, 문자, 논리 리터럴로 구분된다.


상수 - 값을 한 번 저장하면 변경할 수 없는 변수로 정의


정수리터럴

-소수점이 없는 정수 리터럴은 10진수로 간주한다.

-0으로 시작되는 리터럴은 8진수로 간주한다.

-0x 또는 0X로 시작하고 0~9 숫자나 A, B, C, D, E, F 또는 a, b, c, d, e, f로 구성된 리터럴은 16진수로 간주한다.

-정수 리터럴을 저장할 수 있는 타입은(byte, char, short, int, long) 5개가 이다.


실수리터럴

-소수점이 있는 리터럴은 10진수 실수로 간주한다.

-대부문자 E또는 소문자 e가 있는 리터럴은 10진수 지수와 가수로 간주한다.

-실수 리터럴을 저장할 수 있는 타입(float, double) 이 있다.


문자리터럴

-작은 따옴표(')로 묶은 텍스트는 하나의 문자 리터럴로 간주한다.

-역슬래쉬(\)가 붙은 문자 리터럴은 이스케이프 문자라고 하는데 특수한 용도로 사용

출처 : https://docs.oracle.com/javase/tutorial/java/data/characters.html


문자열 리터럴

-큰따옴표(")로 묶은 텍스트는 문자열 리터럴로 간주한다.

-문자열 리터럴 내부에서도 이스케이프 문자를 사용할 수 있다.


논리 리터럴

-true와 false는 논리 리터럴로 간주한다.

-논리 리터럴로 저장할 수 있는 타입은 boolean이다.


변수값 읽기

-변수는 초기화가 되어야 읽을 수가 있고, 초기화가되지 않은 변수는 읽을 수가 없다.


2.1.4 변수의 사용 범위

변수는 중괄호 {} 블록 내에서 선언되고 사용된다. 중괄호 블록을 사용하는 곳은 클래스, 생성자, 메소드

메소드 블록 내에서 선언된 변수를 특히 로컬 변수(local variable)라고 부른다. 로컬 변수는 메소드 실행이 끝나면 메모리에서 자동으로 없어진다.

변수는 메소드 블록 내 어디에서든 선언할 수 있지만, 변수 사용은 제약이 따른다.(변수는 선언된 블록 내에서만 사용이 가능하다.)

코드블록이란?


(참고 : 

1. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

2. http://beginwithjava.blogspot.kr/2008/06/code-blocks.html

)


2.2 데이터 타입

2.2.1~2.2.4 기본(원시 : primitive)타입, 정수 타입(byte, char, char, int, long), 실수 타입(float, double), 논리 타입(boolean)



참고 : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html



2.3 타입 변환

표출처 : http://interviewquestionjava.blogspot.kr/2014/01/java-data-types-conversion-chart.html


2.3.1 자동 타입 변환

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

//큰 크기 타입 = 작은 크기 타입(자동 타입 변환)
inbyte byteValue = 10;
int intValue = byteValue; //자동 타입 변환이 일어난다.


크기별 타입

byte(1) < shore(2) < int(4) < long(8) < float(4) < double(8)


p.s 자동 타입 변환에서 단 하나의 예외가 있는데 char는 2byte의 크기를 가지지만, char의 범위는 0~65535이므로 음수가 저장될 수 없다. 따라서 음수가 저장될 수 있는 byte 타입을 char 타입으로 자동 변환시킬 수 없다.


2.3.2 강제 타입 변환

//작은 크기 타입 = (작은 크기 타입) 큰 크기 타입 //강제 타입 변환
int intValue = 103029770;
byte byteValue = (byte)intValue; //강제 타입 변환(캐스팅)

강제 타입변환에서 우선 안전하게 값이 보존될 수 있는지 검사하는 것이 좋다.


p.s 최대, 최소값 상수

기본 타입

최대값 상수 

최소값 상수 

 byte

Byte.MAX_VALUE 

Byte.MIN_VALUE 

 short

Short.MAX_VALUE 

Short.MIN_VALUE 

 int

Integer.MAX_VALUE 

Integer.MIN_VALUE 

 long

Long.MAX_VALUE 

Long.MIN_VALUE 

 float

Float.MAX_VALUE 

Float.MIN_VALUE 

 double

Double.MAX_VALUE 

Double.MIN_VALUE 


2.3.3 연산식에서의 자동 타입 변환

연산은 기본적으로 같은 타입의 피연산자간에만 수행되기 때문에 서로 다른 타입의 피연산자가 있을 경우 두 피연산자 중 크기가 큰 타입으로 자동 변환된 후 연산을 수행한다.


double = double + int

int = int + (int)double

사례 보충하기


'공부 기록실 > JAVA' 카테고리의 다른 글

[JAVA] 01. 자바 시작하기  (0) 2017.02.27
Comments