<윤성우의 열혈 Java 프로그래밍> 공부
ch 02. 변수와 자료형
변수의 기본 자료형은 자바도 동일하다.
크게 4가지로, 다음과 같다.
정수: byte, short(2byte), int(4byte), long(8byte)
실수: float(4byte-소수점 이하 6자리까지 정밀도), double(8byte-소수점 이하 15자리까지 정밀도)
문자: char(1byte)
참거짓: boolean(1byte)
정수를 계산할 때, 2의 보수법을 활용한다. 실수를 계산할 때는 근사치를 구한다. (s, e, m 구해서 변환하는 공식 그거)=> double계산 등에서 오차가 발생할 수 밖에 없다.
자바에서는 정수형 연산을 int로만 진행하기 때문에, 큰 자료형에서 작은 자료형으로 변환하려 하면 데이터 손실 오류가 생긴다. (int -> short x) 그냥 int로 쓰자.
ch 03. 상수와 형 변환
상수 - final
c에서 const로 상수를 정의한 것처럼, 자바에서는 final로 상수를 정의한다. (한번만 값 할당, 이후 변경 불가)
public static void main(String[] args) {
final int MAX_SIZE = 100;
final char CONST_CHAR = '와';
final int CONST_NUM;
CONST_NUM = 16;
System.out.println("상수1: " + MAX_SIZE);
System.out.println("상수2: " + CONST_CHAR);
System.out.println("상수3: " + CONST_NUM);
}

일반적으로 상수는 대문자로 쓴다. 또한 대입 연산자 뒤에 있는 것을 '리터럴(Literals)', '리터럴 상수'라고도 한다. (그냥 상수이긴 함)
정수형 상수의 표현 방법
10진수: 11
2진수: 0B11_01 (앞에 0B 또는 0b 붙임, 중간 언더바는 무시됨)
8진수: 011 (앞에 0을 붙임)
16진수: 0x11 (앞에 0x 또는 0X 붙임)
long형: 8140122012L (숫자 끝에 L 또는 l 붙임)
마찬가지로 double형은 끝에 D, float형은 끝에 f를 붙여서 print때 바로 사용할 수 있다.
형 변환
-자동 형 변환(Implicit Conversion)
자료형의 크기가 큰 방향으로, 정수보다 실수 자료형이 우선시되어 변환된다.
예를 들어, int형과 long형을 덧셈할 때 int형이 자동으로 long형으로 변환되어 계산된다. (데이터 손실 막음, 오차는 생김)
-명시적 형 변환(Explicit Conversion)
(자료형)변수; <- 방식으로, 괄호안에 명시적으로 자료형을 써주면 변환된다.실수를 정수로 변환할 시 소수점 아래는 잘려나간다.덧셈 연산을 하면 자동으로 int형이 되어버리므로 이때 명시적 형 변환을 사용할 수 있다.ex: short num3 = (short)(num1 + num2);
ch 04. 연산자(operators)
이항 연산자(binary operator)
-우선순위: 후위 연산자 > 전위 연산자 (같은 것끼리는 오른쪽에서 왼쪽으로 연산 진행)
-나머지는 왼쪽에서 오른쪽으로 연산 진행
-대입 연산자(<-), 산술 연산자(->)
(근데 우선순위 어차피 기억 못함 그냥 소괄호로 쓰는게 제일 좋음)
-복합 대입 연산자(간단하게 줄여 쓰는 거)를 사용하면 자동으로 형 변환까지 해준다.
-관계 연산자는 결과로 true / false 반환 ( <, >, <=, >=, ==, != )
-논리 연산자도 마찬가지 true / false 반환 ( &&(and), ||(or), !(not) )
-Short Circuit Evaluation(불필요 연산 생략)
ㄴ&&의 왼쪽 피연산자가 false면 오른쪽 생략
ㄴ||의 왼쪽 피연산자가 true면 오른쪽 생략
=> 오른쪽 식의 연산 진행 안되는 문제 발생 가능, 그냥 나눠 쓰는게 좋음
단항 연산자
-부호 연산자(+, -)로 부호를 바꾼 뒤 변수에 저장할 때, 형 변환을 해야 오류가 생기지 않는다.
-증감 연산자(++, --)
ㄴprefix, 전위 연산자는 증감 후 연산
ㄴpostfix, 후위 연산자는 연산 후 증감(다음 라인으로 넘어가야 반영됨)
-비트 연산자(&(and), |(or), ^(xor), ~(all not))
ㄴ피연산자는 반드시 정수, 각 비트를 대상으로 연산 진행
-비트 shift 연산자(<<, >>, >>>)
ㄴ <<는 비트 열을 왼쪽으로 이동, 빈 공간 0 채움 (n<<2: n의 비트열을 왼쪽으로 2칸 이동) -> LSL, 곱셈(한 칸당 2배)
ㄴ >>는 비트 열을 오른쪽으로 이동, 부호 따라 채움 -> ASR, 나눗셈(한 칸당 2배)
ㄴ >>>는 비트 열을 오른쪽으로 이동, 빈 공간 0 채움 -> LSR
오늘 내용은 뭐 새로운 내용이 없어서 그냥 복습느낌으로 했다,,,, 그래도 shift는 아직도 좀 헷갈림 하여튼 오늘은 가볍게 끝~~~
'✨언어 > Java' 카테고리의 다른 글
| [ch 08, 09] 패키지, 정보 은닉 (0) | 2024.06.28 |
|---|---|
| [ch 05, 06, 07] 제어문, 메소드, 클래스 (1) | 2024.06.27 |
| [ch 01] Java 시작 (1) | 2024.06.25 |