JAVA/memo

데이터 타입 & 변수

마이구미2 2021. 3. 5. 15:07

식별자(identifier)

클래스, 변수, 상수, 메소드 등에 붙이는 이름

 

식별자 이름 규칙

- 특수분자, 공백 사용 불가('_', '$' 예외로 사용 가능)

- 한글 사용 가능

- 자바 언어의 키워드 사용 불가

- 첫번째 문자로 숫자 사용 불가

- true, false, null 사용 불가

- '_', '$'는 첫번째 문자로 사용 가능하지만 대체로 사용하지 않음

- 대소문자 구분

- 길이 제한 없음

 

 

자바 키워드 : 예약어(reserved word)

이미 용도가 정해져 식별자의 이름으로 사용 불가한 단어

abstract continue for new switch
assert defalut if package synchronized
boolean do goto private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while

 

자바 언어 이름 붙이는 관습

// 클래스 이름
// 각 단어의 첫글자를 대문자로 표기
public class HelloWorld {}
class AutoVendingMachine {}

// 변수, 메소드 이름
// 첫단어는 소문자로 이후 각 단어의 첫글자를 대문자로 표기
int myAge;
boolean isSingle;
public int getAge() {return 20;}

// 상수 이름
// 전체 대문자 표기
final double PI = 3.14;

 


데이터 타입(data type)

기본 타입(basic type)

구분 데이터 타입 크기 범위 기본값
논리 boolean 1bit true or false false
문자 char 2byte Unicode '\u0000'(NULL)
정수 byte 1byte -128 ~ 127 0
short 2byte -32768 ~ 32767 0
int 4byte -231 ~ 231-1 0
long 8byte -263 ~ 263-1 0L
실수 float 4byte -3.4E38 ~ 3.4E38 0.0f
double 8byte -1.7E308 ~ 1.7E308 0.0d, 0.0

레퍼런스 타입(reference type)

기본값: NULL

C의 포인터와 유사한 개념

용도

- 배열에 대한 레퍼런스: 배열에 대한 주소값

- 클래스(class)에 대한 레퍼런스: 객체에 대한 주소값

- 인터페이스(interface)에 대한 레퍼런스

 

 

문자열(String)

기본값: NULL

자바에서 문자열은 기본 타입에 속하지 않음

문자열과 기본 타입의 + 연산이 실행될 경우,

기본 타입의 값이 문자열로 바뀌고 두 문자열이 연결된 새로운 문자열 생성

 


변수 선언

// 변수 선언
데이터타입 변수이름;

int price;
char c1, c2, c3;

// 변수 선언과 동시에 초기화
데이터타입 변수이름 = 초깃값;

int radius = 10;
char c1 = 'a', c2 = 'b', c3 = 'c';
double weight = 75.56;

 


리터럴(literal)

프로그램에 직접 표현한 값

 

 

정수 리터럴

int 타입으로 자동 컴파일

// 10진수: 0으로 시작하지 않는수
int n = 15; -> 10진수 15

// 8진수: 0으로 시작하는 수
int m = 015; -> 10진수 13

// 16진수: 0x로 시작하는 수
int k = 0x15; -> 10진수 21

// 2진수: 0b로 시작하는 수
int b = 0b0101; -> 10진수 5

// long타입 지정
long g = 24L;

 

실수 리터럴

double 타입으로 자동 컴파일

// 소수점 형태
double d = 0.1234;
double c = 12.;

// 지수(exponent) 형태
double e = 1234E-4;

// 타입 강제 변환
float f = 0.1234f;
double w = .1234D;

 

문자 리터럴

// 단일 인용부호(' ') 사용
char a = 'A';
char b = '글';

// 유니코드 값 사용
char c = \u0041; -> 'A'의 유니코드
char d = \uae00; -> '글'의 유니코드

 

특수문자 리터럴 : 이스케이프 시퀀스(escape sequence)

'\b': 백스페이스(backspace)
'\t': 탭(tab)
'\n': 라인피드(line feed)
'\f': 폼피드(form feed)
'\r': 캐리지 리턴(carriage return)
'\"': 이중 인용부호(double quote)
'\'': 단일 인용부호(single quote)
'\\': 백슬래시(backslash)

 

논리 리터럴 | boolean 타입

논리 리터럴은 true, false 두 개밖에 없으며, boolean 타입의 변수에 직접 치환하거나 조건문에 사용

boolean a = true;
boolean b = 10 > 0; // b = true

// 타입 불일치 오류
boolean c = 1;

// 무한루프
while(true) {
    ...
}

 

이외의 리터럴

// null 리터럴
// 기본 타입에 사용될 수 없고, 객체 레퍼런스에 대입됨
String str = null;

// 문자열 리터럴
// String 클래스의 객체
// 이중 인용부호로 표현하며, 문자열 이라고 함
String str = "Good";

 


상수

변수와 달리 실행중에 값이 바뀌지 않음

한 번 값을 초기화하면 더 이상 변경 불가

final 데이터타입 상수이름 = 초깃값;

final double PI = 3.141592;

 


타입 변환

자동 타입 변환

치환문(=)이나 수식 내에서 타입이 일치하지 않을 경우, 컴파일러가 오류 대신 작은 타입을 큰 타입으로 자동 변환

long m = 25;
double d = 3.14*10;

 

강제 타입 변환 : 캐스팅(casting)

큰 타입의 값을 작은 타입의 값으로 변환해야 할 경우, 컴파일러는 자동 변환 대신 오류를 발생시킴

이때 타입 변환을 원한다면 강제 타입변환 지시

강제 변환을 하면 컴파일 오류가 발생하지 않을 뿐 데이터 손실 발생

(변환할타입)변수

int n = 300;
byte b = (byte)n;

double d = 1.9;
int n = (int)d;

 

'JAVA > memo' 카테고리의 다른 글

반복문  (0) 2021.03.08
조건문  (0) 2021.03.05
연산자  (0) 2021.03.05
키 입력  (0) 2021.03.05
자바 프로그램 구조  (0) 2021.03.05