2진법 밖에 할줄 모르는 컴퓨터와 대화하기 위해서 우리는 눈높이를 많이 낮춰야한다.
1 + 3 이 4 라는건 인간인 우리에게는 너무 쉬운 문제이지만 컴퓨터가 이 문제를 계산하기 위해서는 0과 1로 표현해야 한다.
0과 1로 표현된 언어를 기계어라고 부르는데 인간의 입장에서 기계어를 이해하기란 쉽지 않다.
따라서 기계어와 인간의 언어를 매칭하는 코드표를 만들었다.
어셈블리라고 하는데 CPU마다 실행할 수 있는 기계어가 다르기 때문에 이 어셈블리어도 다르게 만들어졌다.
어셈블리어 이후 많은 언어들이 탄생했는데 그중 Java라는 언어를 공부할 것이다.
변수는 하나의 값을 저장하는 메모리 공간을 의미한다.
(다른 값으로 자동 덮어 씌워짐)
변수타입 변수이름 = 값;
한번만 값이 저장가능해 변하지 않고 고정된 값을 담는 변수를 의미한다.
final 변수타입 변수이름 = 값;
그 자체로 값을 의미한다.
int score = 100; final int finalScore = 1000;
score - 변수
finalScore - 상수
100, 1000 - 리터럴
타입은 기본형과 참조형이 있다.
8개가 있고 데이터의 가장 기본이 되는 타입이다.
크게 논리형, 문자형, 정수형, 실수형으로 분리된다.
논리형
참, 거짓으로 조건식과 논리적 계산에 사용된다.
문자형
하나의 문자를 저장하는데 사용된다.
정수형
정수값을 지정하고 크기에 따라 byte, int, long을 사용한다.
실수형
실수값을 저장하고 크기에 따라 float, double을 사용한다.
컴퓨터는 0과 1밖에 이해하지 못하기 때문에 문자를 표현하기 위해 문자와 숫자를 매칭하는 아스키 코드가 있다.
숫자 -> 문자
숫자 + '0'
문자 -> 숫자
문자 - '0'
숫자 -> 문자열
숫자 + ""
문자열 -> 숫자
Integer.parseInt(문자열)
Double.parseDouble(문자열)
(실수로 변환)
문자 -> 문자열
문자 + ""
문자열 -> 문자
문자열.charAt(문자열의 인덱스)
- 기본형을 제외한 나머지 타입을 뜻한다.
- 객체의 주소를 저장하고 어떤 객체도 저장하고 있지 않음을 뜻하는 null을 저장하기도 한다.
- 4byte의 크기를 저장한다.
변수 또는 상수의 타입을 다른 타입으로 변환하는 것이다.
public class Hello {
public static void main(String[] args) {
int i = 65;
int num = 10;
char ch = 'A';
float f = 1.6f;
System.out.println("(char)i = " + (char) i);
System.out.println("(int)ch = " + (int) ch);
System.out.println("(int)f = " + (int) f);
System.out.println("(float)num = " + (float) num);
}
}
결과
(char)i = A
(int)ch = 65
(int)f = 1
(float)num = 10.0
float f = 1234;
int타입이 float타입보다 작기 때문에 형변환이 가능하다.
float f = (float)1234;
원래는 이렇게 형변환을 해줘야하지만 컴파일러가 형변환을 생략해도 컴파일러가 자동으로 형변환을 해준다.
하지만 큰 타입을 작은타입에 저장할때는 에러가 발생한다.
int i = 3.14f
3.14를 정수로 변환하면 소수점을 버리고 3이되기 때문에 값손실이 일어난다. 이렇게 값손실이 일어날때는 컴파일러가 자동형변환을 해주지 않기 때문에 에러가 발생하는 것이다.
따라서
int i = (int)3.14;
수동으로 형변환을 해줘야 한다.
큰 타입으로 일치
long + int -> long
float + int -> float
int보다 작은 타입이면 int로 변환
byte + short -> int
char + short -> int
++j;
--j;
j++;
j--
문자열을 비교할 때는 ==
대신 equeals()
를 써야한다.
조건식 ? 반환값 1: 반환값 2
수학과 관련된 메서드를 가지고 있는 클래스이다.
- round() - 첫째자리에서 반올림한 정수 반환
- ceil() - 올림값 반환 (double형으로)
- floor() - 내림값 반환 (double형으로)
- abs() - 절대값