[TIL] 20220927 - 자바 기초(1)

yujamint·2022년 9월 27일
0

TIL

목록 보기
4/9

자바 프로그래밍의 특징

  • 플랫폼에 영향을 받지 않는다.
    C언어의 경우, 윈도우 컴파일러를 통해 나온 실행 파일을 리눅스 환경에서는 실행할 수 없다.
    Java의 경우 .class라는 바이트 코드가 나오게 되고, 이 바이트 코드가 JVM(Java Virtual Machine) 상에서 돌아가게 된다. 그렇기 때문에 JVM만 있다면 어떤 환경이든 상관 없이 실행할 수 있다. ↔ 직접 컴파일한 실행파일이 실행되는 것보다는 속도가 느리다.
  • 객체 지향 언어이기 때문에 유지보수가 쉽고 확장성이 좋다
  • 쉽게 다운되는 C,C++에 비해 안정적이다.

객체 지향 프로그래밍이란?

프로그램의 구현을 시간의 흐름순이 아닌 객체간의 관계와 협력을 기반으로 프로그램하는 것

cf. 절차 지향 프로그래밍 (Procedural Programming)

Java

컴퓨터에서의 자료 표현

  • 10진수 : int num = 10;
  • 2진수 : int bNum = 0B1010;
  • 8진수 : int oNum = 012;
  • 16진수 : int xNum = 0xA;

변수

변수를 선언하기 위해서는 해당 변수를 저장하기 위한 자료형과 함께 선언되어야 한다.

int age = 10; 이는 age가 10이 되는 것이 아니라, age에 10을 대입하는 것이다.

자바는 네이밍 convention이 그렇게 빡빡하지 않지만, 다음의 경우는 따르는 것이 좋다.

  • pacakage : 소문자
  • Class : 첫 글자만 대문자
  • 변수 : 영문자와 숫자, 특수문자는 $_ 만 사용 가능
    • 숫자로 시작할 수 없다.
    • 자바에서 사용하고 있는 예약어(Keyword)는 사용할 수 없다.
    • 카멜 표기법 주로 사용 (numberOfStudents)

자료형

기본 자료형(Primitive Type)

  • 정수형 : byte , short, int, long
    • 각각 1,2,4,8 바이트
    • byte : 동영상, 음악 파일, 실행 파일의 자료를 처리할 때 사용
    • short : C/C++ 언어와 호환 시 사용
    • int : 자바에서의 정수 기본 자료형, 프로그램에서 사용하는 모든 숫자(리터럴)가 int로 저장된다.
    • long : int로 표현할 수 없는 크기의 자료를 처리한다. 1020402051L과 같이 저장한다.
  • 문자형 : char
    • 2 바이트
  • 실수형 : float, double
    • 각각 4,8 바이트
    • double : 자바에서의 실수 기본 자료형, 프로그램에서 사용하는 모든 실수(리터럴) float로 저장된다.
    • float : 4바이트인 float로 처리하기 위해서는 3.14f와 같이 저장해야 한다.
  • 논리형 : boolean
    • 1 바이트

실수는 어떻게 표현될까?

  • 부동 소수점 방식
    0.1을 표현할 때, 1.0 * 10^(-1) 과 같이 가수(1.0)와 지수(-1)로 표현한다.
    실수를 표현하는 자료형인 float와 double에는 특정 수의 비트에 가수부와 지수부가 할당되어 있다.
    - 정규화 : 가수가 밑수보다 작은 한 자리까지 가수로 표현되는 것
    ex) 0.4 * 2^(-1)1.6 * 2^(-3)
    컴퓨터에서는 밑수가 2이므로, 정규화를 하면 2보다 작은 1이 항상 들어오게 된다.

부동 소수점 방식의 오류 : 부동 소수점으로 실수를 표현할 때, 2^(-n) 에 n을 아무리 크게 넣어도 0보다 크기 때문에 0을 표현할 수는 없어서 약간의 오차가 발생할 수 있다.

문자는 어떻게 표현될까?

  • 아스키 코드 8bit를 사용하는 아스키를 사용해 문자를 컴퓨터 내부에서 표현할 수 있도록 한다.
    • 알파벳 52개 + 각종 특수문자들을 모두 256개 문자를 인코딩해서 컴퓨터에서 표현 가능
    • 각 나라마다의 언어를 표현하기 위한 문자세트가 존재한다 → 한국어를 표현하는 문자세트는 euc-kr
      • 나라마다 문자세트가 달라서 발생하는 문제 → UNICODE가 해결
        UNICODE는 2byte 사용, 그 중 1byte는 아스키 코드와 완벽하게 호환됨

인코딩 : 문자가 숫자로 변환되는 것
디코딩 : 숫자에서 다시 문자로 변환되는 것

자바는?

  • 문자를 나타내기 위해 전세계 표준인 UNICODE 사용
  • utf-16 인코딩 사용(모든 문자를 2바이트로 표시)

문자형 변수 char

char ch = 'A'

'A'"A"는 다르다. → 'A'는 2byte짜리 문자이고, "A" 는 문자열이다.

"A" 의 내부를 보면, 사실 ‘A’와 문자열의 끝을 알리는 ‘\0’가 합쳐져 있다.

지역 변수 자료형 없이 사용하기

추론 가능한 변수에 대한 자료형을 선언하지 않는다.

ex) var i = 10; , var str = "hello" , var j = 10.0;

한 번 선언하여 추론된 변수는 다른 타입의 값 대입할 수 없다.

  • 자바10부터 지원된다.

변하지 않는 상수

상수 선언 : final 예약어를 사용하여 선언

  • 초기화한 후에는 값 변경 불가능

final을 통해 상수로 선언함으로써 중요한 변수로 인지하게끔 한다.

리터럴(literal)

프로그램에서 사용하는 숫자, 문자, 논리값을 뜻한다.

int num = 10; ← 10을 리터럴이라고 한다.

  • 상수 풀
    프로그램이 실행되고, 코드가 한줄한줄 실행되면서 메모리를 load하는 경우가 있고, 프로그램이 메모리에 올라가자마자 메모리를 load 하는 경우가 있다.
    이렇게 프로그램이 메모리에 올라가자마자 load되는 메모리 영역을 Data 영역, Constant Pool(상수 풀) 이라고 한다.
    이러한 Data 영역에는 상수(literal)와 static 변수가 load 된다.

형 변환(type conversion)

서로 다른 자료형 간에 연산 등의 수행을 위해 하나의 자료형으로 통일하는 것

  • 묵시적 형 변환(자동 형 변환)
    • 바이트 크기가 작은 자료형 → 바이트 크기가 큰 자료형 (int → long)
    • 덜 정밀한 자료형 → 더 정밀한 자료형 (정수 → 실수)
  • 명시적 형 변환(강제 형 변환)
profile
개발 기록

0개의 댓글