01. 변수
변수 선언
type variableName;
자료형 변수이름
변수 이름 규칙
1. 대소문자를 구분한다
2. 숫자로 시작할 수 없음
3. 밑줄(_)과 달러 표시($)를 사용할 수는 있지만, 사용하지 않는 것이 좋음
→ $는 주로 자동 생성되는 변수명으로 쓰이고, _는 보통 상수 이름에 쓰임
4. class, public과 같은 자바의 예약어는 변수명으로 사용할 수 없음
5. 자바의 변수명은 '카멜 케이스(camelCase)'라는 기법으로 작성하는 게 좋음
→ 첫 번째 글자는 소문자고, 그 후에 새로운 단어의 첫 번째 글자는 대문자임(helloJava, myName)
값 넣어주기
int age;
age = 27;
오른쪽의 27을 왼쪽의 변수 age에 넣어준 것.
선언과 초기값 선언을 같이 할 수도 있는데,
int age = 27;
이렇게 하면 됨.
자바는 변수의 자료형을 지정하기 때문에, 적합하지 않은 값을 넣어주면 아래와 같이 오류가 나옴
int age ="hello"; // 오류
변수 사용
int age = 27;
int num = 13;
System.out.println(num + age); // 27 + 13 출력
age = num; // 13을 age에 지정
System.out.println(num + age); // 13 + 13 출력
age = age + 1; // 13 + 1을 age에 지정
System.out.println(num + age); // 13 + 14 출력
변수의 사용은 다른 언어와 같이, 변수에 값을 대입 할 수도 있고 연산을 할 수도 있음
02. 자료형
기본 자료형
Type | 기본값 | Bits | Range of Values |
byte | 0 | 8bits | -2^7 ~ -2^7-1(-128 ~ 127) |
short | 0 | 16bits | -2^15 ~ 2^15-1(-32768 ~ 32767) |
int | 0 | 32bits | -2^31 ~ 2&31-1(-2147483648 ~ 2147483647) |
long | 0L | 64bits | -2^63 ~ 2^63-1(-9223372036854775808 ~ 9223372036854775807) |
float | 0.0f | 32bits | *single-precision 32-bit IEEE 754 floating point |
double | 0.0d | 64bits | *double-precision 64-bit IEEE 754 floating point |
char | '\u0000' | 16bits | \u0000 ~ \uffff(0 ~ 2^15-1) |
boolean | false | *VMD | true, false |
숫자형
정수형(byte, short, int, long) 소수형(float, double)
▶ 정수형(byte, short, int, long)
- int를 정수형의 메인으로 사용함(정수를 입력하면 기본적으로 int로 간주)
- 만약 int의 범위에서 벗어나는 값을 쓰면 오류가 나옴
int x = 12345678910; // 오류(정수 범위를 벗어남)
long myLong = 12345678910L; // 소문자 l은 1과 헷갈릴 수 있어서 L
▶ 소수형(float, double)
- float과 double은 둘 다 소수형을 담지만, 정밀도(precision) 혹은 정확도에 차이가 있음
- double이 더 정밀하게 값을 보관할 수 있어서 자바에서는 double을 소수형의 기본으로 사용함
- 만약 float을 쓰고 싶으면 소수 뒤에 f를 붙여주면 됨
float f = 3.14f;
double myDouble = 3.14;
글자 char
- 글자 하나를 담는 자료형
- char은 딱 글자 하나만 넣어줄 수 있고, 작은 따옴표 안에 글자를 넣어주어야 함
- 글자를 여러개 담으려면 String이라는 자료형 사용하기
< char 예시 >
char a1 = 'a';
char a2 = 97;
char a3 = '\u0061';
char a4 = '가';
- a1 : 글자 'a'
- a2 : 글자 'a'에 해당하는 ASCII(아스키코드) 값인 97, 즉 a1 = a2
- a3 : 유니코드 값
- a4 : '가'도 유니코드 중 하나라 자바의 char에 담을 수 있음
불린 Boolean
- 참(true)과 거짓(false)를 담음
- 값으로는 true, false
문자열
- String은 기본 자료형이 아닌 클래스
- 클래스를 변수의 형으로 쓰고 변수를 선언하면 그 변수는 클래스의 인스턴스를 담을 수 있음
- String은 큰 따옴표("")로 글자들을 묶어줌
String a = "Hello, I'm ";
String b = ".";
System.out.println(a + 26 + b);
// Hello, I'm 26.
03. 연산자
문자열 연산
- 문자열 사이에 덧셈(+) 연산자를 사용하면 문자열을 연결해줄 수 있음
String myString = "Hello" + "World!";
System.out.println(myString);
- 문자열과 숫자를 더하면 숫자가 저절로 문자열로 바뀌고, 문자열과 불린을 더하면 불린이 저절로 문자열로 바뀜
System.out.println("I am "+27+" years old");
System.out.println("The result is "+false+".");
- 문자열 사이에 특수한 문자 표현하기(큰따옴표 내에 큰따옴표를 넣는 경우, 맥에서는 역슬래쉬, 윈도우에서는 원화표시를 사용하면 됨)
System.out.println("데카르트는 \"나는 생각한다. 고로 존재한다.\" 라고 말했다.");
→ 이렇게 \(역슬래쉬)를 사용하여 문자열 안에 확장된 표현을 하는 문자를 이스케이프 문자(Escape Character)라고 함
"\n", "\"", "\'" 정도를 자주 쓸 것
Escape Sequence | Description |
\t | 탭 |
\b | 백스페이스 |
\n | 줄 바꿈(new line) |
\r | 줄 바꿈(carriage return) |
\f | 폼 피드(form feed) |
' | 작은 따옴표 |
" | 큰 따옴표 |
\ | 역슬래쉬 |
숫자 연산
- + : 덧셈
- - : 뺄셈
- * : 곱셈
- / : 나눗셈
- % : 나머지
▶ 서로 다른 자료형의 연산은 랭크가 더 높은 자료형의 결과를 가짐
→ 소수형은 정수형보다 랭크가 높기때문에 소수형과 정수형 간의 결과값으로는 소수형이 나옴
불린 연산
▶ 비교 연산자(Comparison Operators)
→ 두 숫자형 값을 비교하고 싶을 때 사용
// 비교연산자
int a = 3;
int b = 5;
System.out.println(a > b); // a가 b보다 크다
System.out.println(a >= b); // a가 b보다 크거나 같다
System.out.println(a < b); // a가 b보다 작다
System.out.println(a <= b); // a가 b보다 작거나 같다
System.out.println(a == b); // a는 b와 같다
System.out.println(a != b); // a는 b와 같지 않다
▶ 불린 연산자(Boolean Operators)
- AND(&&)의 경우 양쪽 다 true여야만 true가 나오고, 한쪽이라도 false면 false가 나옴
- OR(||)의 경우 양쪽 다 false여야만 false가 나오고, 한쪽이라도 true면 true가 나옴
- NOT(!) 연산은 불린값을 뒤집어줌(true → false, false →true)
04. 형 변환
리터럴 Literal
- 소스코드의 고정된 값을 대표하는 용어
int myInt = 123;
byte myByte = 38;
short myShort = 2;
// 123,38,2는 '정수 리터럴'
long myLong = 12345678910; // 오류 : 정수 값이 너무 큼(int 리터럴)
long myLong2 = 12345678910L; // 롱 리터럴
- 예시로 확인하기
long e =123;
long f = 123L; // long의 리터럴 표현방법
float g = 3.14; // 오류 : 형이 맞지 않음. 필요한 값 : float, 발견된 값 : double
float h = 3.14f; // float의 리터럴 표현방법
float i = 314f; // float의 리터럴 표현방법
double j = 3.14;
double k = 3.14d;// double의 리터럴 표현방법
→ 아무런 표기가 없는 소수형은 double
랭크
Type | Size |
byte | 1 byte |
short | 2 byte |
int | 4 byte |
long | 8 byte |
float | 4 byte |
double | 8 byte |
- 위에서부터 아래로 갈수록 랭크가 높은 자료형, 기준은 각 자료형이 가질 수 있는 값의 범위
형 변환
to / from | byte | short | int | long | float | double |
byte | - | X | X | X | X | X |
short | O | - | X | X | X | X |
int | O | O | - | X | X | X |
long | O | O | - | X | X | |
float | O | O | O | O | - | X |
double | O | O | O | O | O | - |
- 자바의 숫자 자료형들은 랭크에 따라 형 변환이 가능
- 바꾸고자 하는 형(to)이 기존의 형(from)보다 넓은 데이터를 담을 수 있는 자료형일 경우 특별한 처리 없이 형변환 가능
// 형 변환
int a = 36;
double b = a; // int to double
short c = 17;
long d = c; // short to long
float e = 3.14f;
double f = e; // float to double
타입 캐스팅(Type Casting)
- 값(혹은 변수) 앞에 (자료형)(ex → (int) x)을 적어주면 강제적으로 형 변환 가능
- 물론 형 변환이 가능한 경우에만 가능하고, 숫자 자료형들 사이에서는 모두 가능
- 클래스, 상속 등의 개념에서도 등장
// Type Casting
int a = 3;
double b = (double) a;
long c = (long) a;
System.out.println(b); // 3.0
System.out.println(c); // 3
- 더 큰 랭크의 값을, 작은 랭크의 변수에 담는 것도 가능하지만 데이터의 손실이 있음
double pi = 3.14;
int myInt = (int) pi; // 데이터 손실 (소수 부분)
System.out.println(myInt); // 3
- 예시
// 예시
int a = 9, b = 5;
System.out.println(a / b); // 1
// 소수값을 나오게 하려면?
System.out.println((double)a / b); // 1.8
'DEV > JAVA' 카테고리의 다른 글
접근 제어자 | Access Modifier (0) | 2021.12.15 |
---|---|
객체 만들기 | Object Oriented Programming (0) | 2021.12.13 |
배열 | Array (0) | 2021.12.12 |
조건문과 반복문 (0) | 2021.12.12 |
Hello, Java! (0) | 2021.12.06 |