정수를 저장할 수 있는 타입 : byte, char, short, int, long
소수점이 있는 실수를 저장할 수 있는 타입 : float, double
true와 false 같은 논리값을 저장할 수 있는 타입에는 boolean
이 있다
그러므로 정수형의 값이 -2,147,483,648 ~ 2,147,483,647 범위를 벗어난 것이라면 반드시 숫자뒤에 소문자 l 또는 대문자 L 을 붙여야 한다.
byte (1byte == 8bit) : -2^7 ~ 2^7-1 ==> -128 ~ 127
short(2byte == 16bit) : -2^15 ~ 2^15-1 ==> -32,768 ~ 32,767
char(2byte == 16bit)
int (4byte == 32bit) : -2^31 ~ 2^31-1 ==> -2,147,483,648 ~ 2,147,483,647
long (8byte == 64bit) : -2^63 ~ 2^63-1 ==> -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
* 메모리 사용 크기 정도는 알고 있는 것이 좋다
char 타입은 음수 값을 가질 수 없으며, 나머지 정수 타입이 저장할 수 있는 값의 범위는 -2^n-1 ~ (2^n-1-1)이다
여기서 n은 메모리 bit수이다
리터럴
: 소스코드에서 프로그래머에 의해 직접 입력된 값
*long 타입 변수에 정수 리터럴을 저장할 때 반드시 L을 안붙여도 된다
정수 리터럴이 int 타입의 허용범위 이내라면 L을 붙이지 않아도 된다
long balance = 300000000000; -> 컴파일 에러
long balance = 300000000000L;
float(4byte)
: 단정밀도 소수점이하 7자리까지 표현됨. 135.3246235
double(8byte)
: 배정밀도 소수점이하 15~16자리까지 표현됨. 135.3246234502345642
-- 자바에서 실수형의 기본타입
은 double
이다.
그러므로 실수값을 float 형태로 나타내기 위해서는 실수뒤에 반드시 소문자 f 또는 대문자 F를 붙여야 한다.
문자형(char
) : 자바는 유니코드 체계를 사용하므로
문자형 타입인 char 는 2byte 이며, 범위는 0 ~ 65535 이다. 그래서 char 타입에는 문자 1개 또는 숫자(0~65535)도 올 수 있다.
[⭐]
int(4byte) 아래의 크기인 byte(1byte), hort(2byte), char(2byte) 타입이 사칙연산(+ - * /)을 만나면 자동적으로 int 타입으로 자동 형변환
이 발생된다
'A' => 65 'a' => 97
'B' => 66 'b' => 98
'C' => 67 'c' => 99
'대문자' + 32 => 소문자에 해당하는 숫자
'소문자' - 32 => 대문자에 해당하는 숫자
'0' => 48
'1' => 49
'2' => 50
'9' => 57
' ' => 32
메모리상에 저장되어진 객체(인스턴스)의 메모리 주소를 참조하는 것이다.
예: Member mbr = new Member();
--> 참조형 타입(Reference Type)은 메모리상에 크기는 4byte 를 차지한다.
byte (1byte == 8bit) : -2^7 ~ 2^7-1 ==> -128 ~ 127
short(2byte == 16bit) : -2^15 ~ 2^15-1 ==> -32,768 ~ 32,767
int (4byte == 32bit) : -2^31 ~ 2^31-1 ==> -2,147,483,648 ~ 2,147,483,647
long (8byte == 64bit) : -2^63 ~ 2^63-1 ==> -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 ```
문자 리터럴
: 하나의 문자를 작은따옴표(')로 감싼 것
정수
타입에 속한다char c = 65; //10진수
char c = 0x0041; //16진수
char var1 = 'A';
int var2 = 'A';
System.out.println(var1); //A를 출력
System.out.println(var2); // 65를 출력
작은따옴표(,)로 감싼 문자
는 char 타입 변수에 저장되어 유니코드로 저장되지만, 큰따옴표(")로 감싼 문자 또는 여러 개의 문자들은 유니코드로 변환되지 않는다
잘못된 코딩의 예
char var1 = "A";
char var2 = "홍길동";
문자열
: 큰따옴표(")로 감싼 문자들
*) 작은따옴표와 큰따옴표는 컴파일러가 문자 리터럴과 문자열 리터럴을 구별하는 기호로 사용한다
문자열을 변수에 저장하고 싶다면 string 타입을 사용해야함
올바른 코딩의 예
String var1 = "A";
String var2 = "홍길동";
문자열 내부에 역슬래시()가 붙은 문자를 사용할 수 있는데 이것을 이스케이프 문자
라고 한다
이것을 사용하면 문자열 내부에 특정 문자를 포함시킬 수 있다
출력을 제어할 수 있고 탭만큼 띄우거나(\t), 개행(한줄 내림,\n)을 지시할 수 있다
소수점이 있는 실수 리터럴을 저장할 수 있는 타입에는 float
, double
이 있다
실수 리터럴은 기본적으로 double 타입으로 해석하기 때문에 double 타입 변수에 저장해야 한다
실수 리터럴을 float 타입 변수에 저장하면 컴파일 에러가 발생한다
float var = 3.14; <- 컴파일 에러
double var = 3.14;
double var = 314e-2;
실수 리터럴을 float 타입으로 저장하고 싶다면 리터럴 뒤에 소문자 f나 대문자 F를 붙여 컴파일러가 float 타입임을 알 수 있도록 해야함
float var = 3.14; <- 컴파일 에러
float var = 3.14f;
float var = 3E6F;
float 타입과 double 타입이 허용하는 소수점 이하 자리는 각각 7자리와 15자리이다.
double타입은 float 타입보다 2배 정도 정밀도가 높기 때문에 좀 더 정확한 데이터 저장이 가능하다
참과 거짓을 의미하는 논리 리터럴로 true와 false를 사용한다
논리 리터럴은 다음과 같이 1byte
크기의 boolean 타입
변수에 저장할 수 있다
boolean stop = true;
boolean stop = false;
boolean 타입 변수는 주로 두 가지 상태값에 따라 조건문과 제어문의 실행 흐름을 변경하는데 사용한다
stop 변수가 true를 가지고 있기 때문에 if 블록이 실행되어 "중지합니다"가 출력된다
만약 stop 변수가 false를 가지고 있다면 else 블록이 실행되어 "시작합니다"를 출력한다
public class Sungjuk {
String hakbun; // null 학번로 초기화 됌,
// 주의사항 ==> 모두 숫자로 입력한다고 해서 정수형 타입은 byte, short, int, long 을 사용하면 안되는 경우도 있다.
// 예를 들어, 학번에 091234 을 입력하는 경우 정수형 타입을 사용하면 맨 앞의 0 은 없어지고 91234 되어지므로
// 비록 모두 숫자이지만 맨 앞에 0 이 들어올수 있는 경우라면 반드시 String 타입으로 해야 한다.
String name; // null 학생명
byte kor; // 0 국어 (0 ~ 100) 숫자 (정수)
byte eng; // 0 영어 (0 ~ 100) 숫자 (정수)
byte math; // 0 수학 (0 ~ 100) 숫자 (정수)
char hakjum; // ' ' 학점 'A' 'B' 'C' 'D' 'E' 'F'