JAVA 02 : 계층(개요), 리터럴, 변수, 진법, 연산자, 제어문

LeeWonjin·2022년 7월 12일

2022 백엔드스터디

목록 보기
2/20

생활코딩 JAVA1 - 6 ~ 15 (完)
인프런 Do it! 자바 프로그래밍 입문 1장 ~ 4장

계층

JAVA Platform, Standard Edition 8 API Specification

  • 패키지 : 연관된 클래스의 집합 (e.g. java.lang)
  • 클래스 : 연관된 필드(변수)와 메소드(함수)의 집합 (e.g. java.lang.String)

리터럴 예시

constant pool에 저장

// numeric
System.out.println(53); // 53
System.out.println(5/5+3*5); // 16

// Character
System.out.println('A'); // A
System.out.println('A'+'B'); // 131 (아스키코드 합)

// string
System.out.println("ABCDE"); // ABCDE
System.out.println("A"+"BC"); // ABC
System.out.println("ABC".length()); // 3
System.out.println("I am Wonjin".replace("Wonjin", "Student")); // I am Student
  // --- 문자열 내에 이스케이프 문자열 사용가능.

자료형

괄호 안의 숫자는 잡아먹는 메모리 공간(바이트단위)

  • 정수 : byte (1), short (2), int (4), long (8)
  • 문자 : char (2)
  • 실수 : float (4), double (8)
  • 논리 : boolean (1)

정수형

  • 음의 정수는 2의 보수로 표현 (첫비트 MSB)
  • 정수 리터럴은 기본적으로 4바이트로 저장. 뒤에 L 붙이면 8바이트로 저장.

문자형

아스키값으로 저장.
정수로 출력하면 아스키값, 문자로 출력하면 아스키문자로 나타남.

문자세트
문자를 위한 코드값(수)를 정해 놓은 세트
자바는 UTF-16 인코딩 사용

  • 아스키코드 : 1바이트로 영문자, 숫자, 특수문자 표현
  • 유니코드 : 복잡한 언어 표현 위한 표준인코딩. (e.g. UTF-16)

실수형

실수 = 가수 * (밑수^지수)
** 일반적인 밑수 : 2, 10, 16

  • float 32비트 = 부호 1 + 지수 8 + 가수 23
  • double 64비트 = 부호 1 + 지수 11 + 가수 52

0.1은 double, 0.1f는 float.

논리형

true, false

타입 추론

지역변수의 경우 자료형 대신 var키워드를 사용하여 변수 선언+대입 가능

var n = 5; // int
var r = 0.1234; // double

변수

변수는 사용되기 전에 선언되어야 함

명명규칙

  • a-z, A-Z, 0-9, $ 사용 가능
  • 숫자로 시작 불가
  • 공백 사용 불가
  • 키워드를 사용 불가

선언, 대입, 출력

int i = 10;
double d = 123.456;
System.out.println(i);
System.out.println(d);

char ch = 'C';
System.out.println(ch);

string s = "abcdefgesdfd";
System.out.println(s);

캐스팅

// 캐스팅
int i = 5;
double d = i; // 묵시적 캐스팅
System.out.println(i); // 5
System.out.println(d); // 5.0

int ii = (int)d; // 명시적 캐스팅 : double을 int로 묵시적으로 캐스팅할 수 없음
System.out.println(ii); // 5

// 메소드를 통해 문자열-숫자간 전환
String s1 = Integer.toString(i);
String s2 = Double.toString(d);
System.out.println(s1); // 5
System.out.println(s2); // 5.0 

double dd = Double.parseDouble(s2);
System.out.println(dd+0.123); // 5.123

상수

final 키워드로 상수선언

final int NUM = 123;

진법

각 진법별 숫자(digit) 표현

16진수 한 자리는 2진수 네 개 비트로 표현
8진수 한 자리는 2진수 세 개 비트로 표현

10진수2진수16진수8진수
0000000
1000111
2001022
3001133
4010044
5010155
6011066
7011177
81000810
91001911
101010A12
111011B13
121100C14
131101D15
141110E16
151111F17
16100001020

리터럴로 표현된 진법

int decimal = 53;
int binary = 0B110101; // 0B
int octal = 065; // 0
int hexa = 0X35; // 0X

System.out.println(decimal); // 53
System.out.println(binary); // 53
System.out.println(octal); // 53
System.out.println(hexa); // 53

연산자

  • 대입 : =
  • 부호 : + -
  • 증감 : ++ --
  • 복합 : += -= *= /= %= <<= >>= >>>= &= != ^=
  • 관계 : > < >= <= == !=
  • 논리 : && || !
  • 비트 : ~ & | ^ << >> >>>
    • >>> : 오른쪽 shift한 뒤 채워지는 왼쪽비트가 무조건 0
  • 조건 : ? : (삼항연산자)

제어문

조건문

if(조건식) {

} else if(조건식) {

} else {

}

switch( <variable> ) {
  case: // java 7부터 값에 String이 올 수 있음.
    문장
    break;
  case:
    문장
    break;
  default:
    문장
}

반복문

while(조건식) {

}

do {

} while(조건식)

for(int i=0; i<n; i++){

}
profile
노는게 제일 좋습니다.

0개의 댓글