1. 변수의 자료형(Data Type)
- 변수에는 크게Primitive Type - 기본 자료형과Reference Type - 참조형이 있다
-Reference Type - 참조형에는 클래스형, 인터페이스형, 배열, String등이 있지만 나중에 보자
2. 기본자료형(Primitive Type)
1) 수치형
* 정수형
- byte : 1byte (-2^7~2^7-1 : -128~127)
- short : 2byte (-2^15~2^15-1 : -32768~32767)
- int : 4byte (-2^31~2^31-1 : -2147483648~2147483647)
- long : 8byte (-2^63~2^63-1)
// long 형은 값 맨 뒤에 L/l(소문자)를 붙여주도록 한다.
// 그렇지 않으면 정수형의 기본(Default값)인 int형으로 인식한다.
long a = 123456789L / 123456789l;
* 실수형 (소수점)
- float : 4byte
- double : 8byte
// long 형과 마찬가지로 float 형도 맨뒤에 F/f를 붙여준다
// 실수형의 기본은 double형이다
float f = 3.3F / 3.3f;
※
- 정수형에서는 int, 실수형 에서는 double 이 default 이다.
- 소수점이 없는 숫자는 int형, 소수점이 있는 숫자는 double형으로 간주한다
- long > int > short > byte
byte a = 1;
byte b = 2;
byte c = a + b; // [x] 같은 형 끼리 더해도 default는 int이므로 형변환이 필요하다
byte c = (byte)(a+b); // [o], 형변환
int c = a + b; // [o]
int d = 1;
long e = 2l;
int f = d + e; // [x], 디폴트가 int지만 int보다 큰 long형과 연산이므로 오류
int f = (int)(d + e); // [o], 형변환
long f = d + e;
// long형 선언
long g = 1000;
long h = 1000000000l;
/*
실수형에서 같은 float형끼리의 연산은 float형이고
float과 double은 double이 된다
*/
float f = 10; // 소수점이 아닌경우 안붙여도됨
float f1 = 5.5f;
float f2 = f + f1; // [o]
double d = f + f1; // [o]
2) 문자형
- char (2 byte) : 보통 문자를 캐릭터형(차 라고도 부름)이라고 한다
ex) '가', 'A' 등등 한 문자를 할땐 '' 외따옴표 안에 넣고 여러 문자인 경우 "" 쌍따옴표 안에 넣는다 "Hello World"
- char형은 메모리에 저장될때 아스키 코드값으로 저장된다
char ch = 'A';
System.out.print(ch); // A 출력됨
System.out.print(ch + 1); // 66 출력됨
* 컴퓨터는 0과 1밖에 모르기 때문에 문자 혹은 기호들은 아스키 값으로 저장된다
* 예시처럼 A는 문자지만 숫자를 더할경우 A는 65로 인식한다
(char형은 int보다 작은 형이기때문에 숫자를 더하면 int가됨)
3) 논리형
- boolean (1byte) : true, false값만 있다
※ 자료형의 규칙
- 실수 > 정수
- double > float > long > int > short > byte,char
- 큰 자료형과 작은 자료형의 연산 결과는 큰 자료형을 따른다
ex) long + int => long,
double + float => double
* int or float 으로 남기고 싶으면 형변환 해주자
- 같은 자료형 끼리의 연산결과는 자료형을 따른다
단, int 형보다 작은 자료형들끼리 연산결과는 int형
- 큰 자료형을 더 작은 자료형으로 대입 불가능
int a = 100000;
byte b = a; // [x], 큰 그릇을 작은 그릇에 넣을수 없다
byte b = (byte)a; // [o], 가능은 하지만 byte범위를 벗어날 경우 이상한 값이 나오므로 하지말자
- 정수형과 실수형의 연산결과는 실수형 (크기상관없이 실수 우선)
long l = 1; // 8 byte
float f = 2; // 4 byte
System.out.print(l + f); // type을 확인해보면 float형이 나옴
3. 상수 (Constant)
- 절대로 변하지 않는 불변의 값
- 상수로 정의시 final을 붙여준다
public static final int A = 10;
- 상수의 변수명은 보통 대문자로 정의한다 (가독성을 위함)
- 상수의 값을 변경할 시 오류
- 반드시 초기화해야됨
public static final int MY_CONSTANT=10;
int num;
public void Hap() {
num=20;
MY_CONSTANT=20; // [x], 값은 변하지 않음
System.out.print(num + MY_CONSTANT);
}
4. 형변환 (Type Casting)
- 묵시적 형변환
byte b = 1;
int i = 2;
int i1 = b + i;
- 강제적 형변환 : 큰 그릇은 작은 그릇에 넣고자 할때
byte b = 1;
int i = 2;
byte b1 = (byte)(b + i);
5. 이스케이프 (Escape)
- 기존 문자의 기능을 탈출(escape)하고 새로운 기능을 부여받은 문자 (\ 역슬래시를 사용, 폰트마다 다르게 표기됨)
* 이스케이프 문자 종류
- \t (tab기능)
- \n (줄바꿈, 엔터값)
- \r (커서를 맨 앞으로)
System.out.print("Hello World"); // Hello World 가 출력
System.out.print("Hello World");
System.out.print("Java");
/*
출력시 Hello WorldJava가 출력된다
이럴때 이스케이프 문자를 사용한다
*/
System.out.print("Hello World\t");
System.out.print("Hello World");
// Hello World Hello World 가 출력, 탭만큼 들여쓰기가 됨
System.out.print("Hello World\r\n");
System.out.print("Hello World");
System.out.print("Hello World\r\n Java");
/*
Hello World
Hello World
엔터값
Hello World
Java
*/
- \' (외따옴표)
- \" (쌍따옴표)
- \\ (\ 출력)
System.out.print("Hello World 'Java'");
System.out.print("Hello World "Java"");
// 위 두 값은 오류가 난다 이럴경우 \를 사용해주자
System.out.print("Hello World \"Java\""); // Hello World "Java"
* print의 종류는 3가지 이다
- print (줄바꿈 기능 없음)
- println (줄바꿈기능 추가) : print보다 println을 더 많이 사용한다
- printf (형식 문자열)
6. 형식 문자열(Format String)
- 형식 문자열은 출력 형식을 지정해주는 문자열을 의미
- printf 메소드에서 사용 가능하며 %를 사용
* 종류
- %d (정수)
- %f (실수)
- %c (문자 char)
- %b (논리)
- %s (문자열 String)
- %n (줄바꿈)
System.out.printf("나는 %d살", 28); // 나는 28살
- 형식문자열이 들어간경우 갯수에 맞게 값이 있어야 된다 (%n제외)
System.out.printf("내 이름은 %c, 나이는 %d, 사는 곳은 %s%n입니다", "코난", 28, "서울");
// 내 이름은 코난, 나이는 28, 사는 곳은 서울
// 입니다
* 만약 타입을 모를 경우 %s 를 써주면 된다(상위클래스)
* 자리수 표시
double d = 1.2345678;
System.out.printf("%.2f", d);
// 소수점 2개까지 출력하겠다 => 1.23
System.out.printf("%4d", 1);
// +는 왼쪽으로 0001
System.out.printf("%-4d", 1);
// -는 오른쪽으로 1000
'개발 > JAVA' 카테고리의 다른 글
08. JAVA 제어문 - 조건문(IF, SWITCH) / 반복문(FOR, WHILE) / 중첩 (0) | 2020.06.08 |
---|---|
07. JAVA의 연산자 (Operator) (0) | 2020.06.08 |
05. JAVA의 변수 (variable) (0) | 2020.06.08 |
04. OOP (0) | 2020.06.08 |
03. JAVA의 기본 구조/실행/주석 (0) | 2020.06.08 |