package me.day01.overview;
public class MainClass {
public static int a = 0;
public static void main(String[] args) {
System.out.println("한국어");
System.out.print("한국어");
System.out.println("한국어");
String str1 = "Hello Java!";
str1 = "Hello Python!";
System.out.println(str1);
final String CONST_STRING;
CONST_STRING = "Hello Java!";
String STR1;
if (true) {
int a = 10;
System.out.println(a);
}
System.out.println(a);
for (int i = 0; i < 10; i++) {
int b = 10;
System.out.println(b);
}
int c = 10;
for (int i = 0; i < 10; i++) {
int a = 10;
System.out.println(a);
}
}
}
- 변수 : 수정 가능
- literal : int, double, char, String, boolean
- 상수 : 수정 불가 (final)
변수명 정하는 법
- c/c++ 과 다르게 자바는 가독성을 중요시함 (cnt vs. count)
대소문자
구분
숫자
로 시작X (컴파일러가 리터럴인지 변수인지 구분하라고)
_
와 $
만 특수문자 가능
예약어
불가
- 변수이름 길어지는건
카멜케이스
, 상수값 길어지는건 대문자+언더바
변수 scope
- 함수 내부에서 생성 → 메서드 종료 시 소멸, 메서드 밖에서 사용 불가
- 변수는 중괄호 {} 블록 내(클래스, 생성자, 메소드, 제어문(if, for,while))에서 선언되고 사용함
- 글로벌 변수 : 해당 클래스 내에서 다 사용 가능, 메소드 외부
static
: 모든 클래스에서 다 사용 가능 (클래스 로드 될때 같이 생성됨, 프로그램 끝나지 않는 한 계속 살아있음)
- 로컬 변수 : 메소드 내부
상수 처리
- 에러코드, 에러메시지, DB 정보, IP 주소 정보 등 저장 할때 사용
- 코드에 숫자 리터럴을 작성하는 것은 좋지 않음 → 나중에 하나하나 수정해야하기 때문
- 3.14를 상수로 저장하면 코드 유지보수 + 가독성 에 좋음
double area = 3.14 * r * r;
double circum = 2 * 3.14 * r;
double area = 3.141592 * r * r;
double circum = 2 * 3.141592 * r;
final double PI = 3.14;
PI = 3.141592;
double r = 8.5;
double area = PI * r * r;
double circum = 2 * PI * r;
리터럴의 종류
- 정수 리터럴 (소수점이 없는 값)
0.75
, -100
(10진수)
02
, -04
(8진수)
0x5
, 0xA
, 0xB3
, 0xAC08
, 0X5
, 0XA
, 0XB3
, 0XAC08
(16진수)
- 실수 (소수점 있는 값) → 고정소수점, 부동소수점
0.25, -3.14
(10진수)
5E7
= 5 x 10^7
, 0.12E-5
= 0.12 x 10^-5
(대문자 E 또는 소문자 e가 있는 리터럴은 10진수 지수와 가수로 간주)
- 문자 (’ 로 묶은 데이터)
‘A’
‘한’
‘\t’
, ‘\n’
(탈출하기 위해 작성한 문자 🏃🏻)
- 문자열 (” 로 묶은 데이터)
“대한민국”
, “탭마큼 이동 \t 합니다.”
, “한줄 내려쓰기 \n 합니다.”
- 논리 (true, false)
컴퓨터는 데이터를 어떻게 저장할까?
- 정수 (4byte)
- 실수 (4byte)
정수.실수
(고정소수점)
- 소수점의 위치 고정됨
- 실수 저장할때 총 4byte (32bit) 사용 = 16bit(정수부분) + 16bit(소수부분)
- 점 기준으로 앞에 8비트, 뒤에 8비트 → 실수 저장하는데 너무 큰 공간 사용
2.12334234243 → 소수점 뒤 자리가 너무 부족
(-1)^부호 X 가수 X 밑^지수
(부동소수점)
- 소수점의 위치 고정X (floating-point)
- 부호, 지수를 표현하는 작은 공간(
2
) 제외한 나머지는 다 유효부분(1.23456
)이 사용
123.456
→ 1.23456x10^2
로 표현 후 1.23456
과 2
만 저장
- 유효부분에 더 많은 비트를 할당시켜서 데이터의 유효성을 더 많이 판단할 수 있도록
= 표현 할 수 있는 데이터의 범위가 넗어짐 (16bit → 32bit)
32bit(실수) = 1bit(부호) + 8bit(10의 몇승) + 23bit(유효부분)

- 문자 (2byte)
- 문자에 대응되는 숫자값으로 저장 (자바에서는 유니코드 이용)
- 아스키코드
- 7비트 사용해서 문자 저장
- 마지막 1비트는 통신 에러 검출을 위해 사용
- 문자 하나 = 1byte 정도 사용
- 유니코드
- 아스키코드의 확장판 (한국어 중국어도 정의)
- 16비트 사용해서 문자 저장
- 한 으로 저장하면 2byte 사용 (완성형)
- ㅎ + ㅏ + ㄴ 으로 나눠서 저장하면 3byte 사용 (조합형)
부동 소수점의 오차 (실수의 비교)
1 == 1
→ 같다
1.0 == 1.00001
→ 같지 않을 수도 있다 → 실수와 실수가 같다라는 표현은 없음
- 유효부분 공간이 부족할 수도 있고
- 실수에 딱 떨어지는 이진수 값이 없으면 뒤에 이상한 값이 붙음 (
1.000010001
)
1.0 - 1.000010001 ≤ 0.01
→ 0.01 보다 작거나 같으면 두개의 수는 같다고 표현함
BicDecimal, BicInteger
클래스 이용하면 배열 이용하여 저장하기 때문에 실수간 정확히 같은지 체크할 수 있다.
whitespace 종류
