[Java 기본] do-it 1~2장

박정훈·2022년 6월 20일
0

java

목록 보기
15/15
  • compile
    고급 언어로 작성된 코드를 기계어 코드로 변환하는 일.
  • JVM(Java Virtual Machine)
    자바 프로그램 실행 환경을 만들어주는 소프트웨어
  • JRE(Java Runtime Environment)
    자바 실행환경
  • JIT(Just In Time)컴파일러는 실행 시점에 기계어 코드를 생성한다.
    같은 코드가 반복되면 매번 기계어 코드를 새로 생성하지 않고 이전에 만든 기계어를 사용. 이전 Java Interpreter 방식보다 성능이 10~20배 더 좋음.
  • JDK(Java Development Kit)
    최적화된 알고리즘 라이브러리를 제공
  • package(패키지)
    프로그램 소스의 묶음.
    항상 소문자로 쓴다.
  • 클래스
    클래스의 전체 이름(full name)은 package이름.class이름 이다. class이름이 같더라도 package 이름이 다르다면 다른 클래스가 된다.
  • 빌드
    컴파일러가 소스 코드를 컴파일하여 실행 파일을 만드는 과정

Java의 특징

  1. 플랫폼에 영향을 받지 않는다.
    플랫폼은 프로그램이 실행되는 환경으로 OS를 의미한다.
    자바 프로그램을 컴파일하면 .class 파일이 생성된다. 이 파일을 바이트 코드라고 한다.
    자바 컴파일러가 JIT(Just In Time)컴파일 방식으로 개선됨. 자바 프로그램의 실행 속도가 문제되지 않을 정도로 빨라짐.
  1. 객체 지향 언어
    객체 지향 프로그래밍이란 여러 객체의 협력을 통해 프로그램을 구현하는 것.
    유지보수가 쉽고 확장성이 좋다.

  2. 프로그램이 안정적이다.
    포인터를 사용하지 않아서 메모리를 직접 제어할 수 없다.
    동적 메모리 수거를 프로그래머가 하지 않고 GC(Garbage Collector)를 이용해서 메모리를 효율적으로 관리.

  3. 오픈 소스
    최적화된 알고리즘 라이브러리를 제공하는 JDK가 있다. 오픈 소스를 연동하여 더 풍부한 기능을 빠르게 구현할 수 있다는 장점이 있다.

  4. 모두 클래스 기반
    자바 프로그램은 모두 클래스 기반으로 구성된다.
    클래스란 객체를 소스 코드로 나타낸 것.

변수와 자료형

// 2진수 13
0b1101 
// 8진수 13
0015
// 16진수 13
0x0d

MSB(Most Significant Bit)
맨 앞에 있는 비트, 부호비트라고도 한다.

초기화
변수를 선언 후 처음으로 값을 대입하는 경우

자바에서 제공하는 자료형은 기본 자료형과 참조 자료형이 있다.
참조 자료형은 클래스형이다. 자바에서 제공하는 것도 있고 사용자가 직접 만들 수도 있다.

기본 자료형

boolean, byte, short, char, int, float, long, double

정수 자료형

  • byte(1 byte)
  • short(2 bytes)
  • int(4 bytes)
  • long(8 bytes)
    자바는 모든 정수 값을 기본으로 int 형으로 처리한다. 그래서 long 형을 쓸 때는 long 형을 나타내는 식별자인 L이나 l을 사용하려는 숫자 뒤에 붙여야 한다. int 형 범위내의 숫자에서는 식별자 L이나 l을 붙이지 않아도 좋지만 명시적으로 붙이는 편이 좋다.

프로그램이 실행되어 정수 값을 연산할 때 4 bytes를 기본 단위로 사용한다. 그리고 결과 값도 int형으로 저장된다. 즉, 정수의 기본형은 int 형이고, int 형 보다 작은 byte, short 같은 경우 연산을 할 때 내부적으로 int 형으로 변하게 된다.

문자 자료형

  • 문자 세트
    각 문자에 대한 코드 값 세트
  • 문자 인코딩
    문자를 정해진 코드 값으로 변환하는 것
    ASCII코드가 일반적이다.
  • 문자 디코딩
    코드 값을 다시 문자로 변환하는 것
  • 유니코드
    각 언어의 표준 인코딩을 정의해 놓은 것
    전 서계의 모든 문자를 처리할 수 있도록 만든 표준 문자 전산 처리 방식

문자를 사용할 때는 작은 따옴표('')를 사용한다.
문자열을 사용할 때는 큰 따옴표("")를 사용한다. 문자열의 끝에는 항상 널 문자('\0')가 있다.
문자와 문자열은 전혀 다르다.
'A'는 정수 값 65로 정해진 문자이고, "A"는 "A\0"와 같다.
자바에서 문자열을 다룰 때는 String 클래스를 사용한다.
char형은 음수 값을 표현할 수 없다. char형으로 선언한 변수에 음수 값을 대입하면 오류가 발생한다.

자바는 모든 문자를 2바이트로 표현하는 UTF-16 인코딩을 사용한다.
UTF-8은 각 문자마다 1바이트에서 4바이트까지 사용하여 문자를 나타낸다. UTF-16에 비해 메모리 낭비가 적고 전송 속도가 빠르다. 이러한 특성으로 UTF-8은 인터넷에서 많이 사용한다.

실수 자료형

부동 소수점 방식
가수 부분과 지수 부분을 나누어서 실수를 나타내는 방식
0.1 = 1.0 * 10^(-1)
가수 부분: 1.0
지수 부분: -1

float형과 double형
float형: 부호 1비트 + 지수부 8비트 + 가수부 23비트
doublt형: 부호 1비트 + 지수부 11비트 + 가수부 52비트

자바에서 실수는 double형을 기본으로 사용한다. 그래서 float형을 사용할 때는 식별자 f나 F를 사용해야한다.
float형에 비해 double형이 더 정밀하게 실수를 표현할 수 있다.
부동 소수점 값을 연산하면 약간의 오차가 발생할 수 있다. 약간의 오차를 감수하고라도 더 넓은 범위의 실수 값을 표현하기 위해 부동 소수점 방식을 사용한다.

논리 자료형

boolean형 한 가지 뿐이다.
true, false 두 가지 값만 갖는다.

자료형 없이 변수 선언하기(자바 10부터 생긴 문법)

지역 변수 자료형 추론(local variable type inference)
자료형을 쓰지 않고 변수를 사용하는 것

var num = 10;
var dNum = 10.0;
var str = "hello";

var를 사용할 때 유의할 점
1. 한번 선언한 자료형 변수를 다른 자료형으로 사용할 수 없다.
2. 지역 변수만 가능하다.

참조 자료형

상수와 리터럴

상수(constant)

변하지 않는 수. final 예약어를 사용해서 선언한다. 대문자를 사용한다. 여러 단어를 연결 할 때 _기호를 사용한다. 한 번 선언한 상수는 변하지 않기 때문에 선언과 동시에 초기화하는 것이 일반적이다. 상수는 초기화 이후에 값을 변경할 수 없다.

리터럴(literal), 리터럴 상수

프로그램에서 사용하는 모든 숫자, 문자, 논리값을 일컫는 말이다.
프로그램이 시작할 때 시스템에 같이 로딩되어 특정 메모리 공간인 상수 풀(constant pool)에 놓인다.
예를 들어 int num = 3; 문장에서 값 3이 메모리 공간 어딘가에 존재해야 num 변수에 그 값을 복사할 수 있다. 즉 숫자가 변수에 대입되는 과정은 일단 숫자 값이 어딘가 메모리에 쓰여 있고, 이 값이 다시 변수 메모리에 복사되는 것이다.

형 변환(type conversion)

형 변환의 기본 원칙
1. 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어진다.
2. 덜 정밀한 자료형에서 더 정밀한 자료형으로 형 변환은 자동으로 이루어진다.

묵시적 형 변환

byte -> short, char -> int -> long -> float -> double
long형이 float형으로 형 변환 되는 이유는 실수가 정수보다 표현 범위가 더 넓고 정밀하기 때문이다.

명시적 형 변환(강제 형 변환)

자료 손실이 일어날 수 있는 경우는 명시적으로 써줘야한다.
1. 바이트 크기가 큰 자료형에서 작은 자료형으로 대입하는 경우

int iNum = 10;
byte bNum = (byte)iNum;
  1. 더 정밀한 자료형에서 덜 정밀한 자료형으로 대입하는 경우
double dNum = 3.14;
int iNum2 = (int)dNum;
profile
정팔입니다.

0개의 댓글