- 클래스 이름의 첫글자는 대문자
변수와 메서드 이름의 첫글자는 소문자- 여러 단어로 이루어진 이름은 단어 첫 글자를 대문자
ex) LastAttributeName- 상수의 이름은 대문자
여러 단어로 이루어진 경우 '_'로 구분
ex) PI, MAX_STACK_SIZE
기본 자료형: 8가지
논리형(boolean), 문자형(char), 정수형(byte, short, long, int), 실수형(float, double)
참조형: 객체의 주소를 저장. 기본 자료형 이외의 모든 것.
값으로는 null(어떤 주소도 저장되지 않음) 또는 객체의 주소
참조형 변수는 선언 시 변수 타입으로 클래스 이름 사용
∴ 클래스 작성은 새로운 참조형을 추가하는 작업
- 참조변수 선언
String name;
- 참조변수 선언 및 초기화
String name = new String();
* String 객체를 생성해서, 그 주소를 name에 저장
- 자료형(data type)은 '저장하는 값'에 따라 나누는 기본형을 말할 때 사용
- 타입(type)은 모두 객체의 주소를 값으로 저장하고 '객체의 종류'에 따라 나눔.
타입 > 자료형
- 기본형의 종류와 크기(암기)
문자 리터럴과 문자열 리터럴
- 문자 리터럴: 'A'문자 하나를 작은따옴표로 감쌈
- 문자 리터럴은 ''빈 문자열(empty string)을 넣으면 error
- ' '공백문자(blank)라도 채워야 함
- 문자열 리터럴: "ace" 두 문자 이상을 큰따옴표로 감쌈
- String은 클래스이므로 객체 생성을 해야 사용 가능
String name= new String ("Java");
- 덧셈 연산자로 문자열 결합
import java.util.*;
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
int num = Integer.parseInt(input);
char ch = 'A';
위 아래 같은 문장.. char ch = 65;
int code = (int)ch;
인코딩: 문자를 코드로 변환하는 것. 저장할 때.
디코딩: 코드를 문자로 변환하는 것. 읽어올 때.
JVM의 피연산자 스택이 피연산자를 4byte 단위로 저장하기 때문에 byte나 short 타입으로 저장된 값도 4byte로 변환하여 연산이 수행된다. 그러므로 int를 사용하는것이 효율적이다.
형변환: 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
double d = 85.4;
int score = (int)d;
float를 double로 형변환 할 경우 빈 공간에 0을 채운다.
double타입을 float타입으로 형변환 하는 경우 float크기를 넘어서는 부분은 버려진다.
* 버려지면서 반올림 된 값이 있어 원래의 데이터와 값이 달라질 수 있다.
float타입이 저장할 수 있는 크기보다 크거나 작은 값을 넣으면 0또는 무한대의 결과를 얻는다.
10진수 7을 정규화를 거쳐 float 형식으로 저장
111 -> 1.11 x 2^(1+127)
<< 오차가 발생할 수 있음.
float는 정밀도가 7자리 이므로 8자리 정수를 저장할 때 오차가 발생할 수 있다.
정수 -> float -> int
- 91234567 -> 91234568.0 -> 91234568
double은 15자리 정밀도를 갖으므로 오차없이 변환할 수 있다.
정수 -> double -> int
- 91234567 -> 91234567.0 -> 91234567
float f = 1234;
char ch = (char)1000;
기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환한다.
즉, 표현 범위가 넓은 타입으로 형변환한다.
- boolean을 제외한 나머지 7개의 기본형은 서로 형변환 가능
- 기본형과 참조형은 서로 형변환 할 수 없다.
- 서로 다른 타입의 변수간의 연산은 형변환을 하는 것이 원칙이지만, 값의 범위가 작은 타입에서 큰 타입으로의 형변환은 생략할 수 있다.