Skip to content

Latest commit

 

History

History
310 lines (185 loc) · 6.28 KB

TIL_221113.md

File metadata and controls

310 lines (185 loc) · 6.28 KB

❤️‍🔥 TIL DAY 04 ❤️‍🔥

📆 2022년 11월 13일 일요일




티스토리에 Java 혼자 이론 공부하면서 적어뒀던 문서들 가져오기 😭
...
하려고 했으나..!!
너무 노가다성이 짙어서 포기

22일에 시험이라는데 큰일이다 😭




자바 가상 기계 (JVM)

JVM : Java Virtual Machine


byte 코드를 기계어로 바꿔줌

  • why? 자바 프로그램은 byte 코드임

운영체제마다 따로 만들지 않아도 됨

  • why? 자바 프로그램은 JVM 위에서 돌아감



개발 순서

  1. .java 소스 파일 작성
  2. 컴파일러 javac.exe로 바이트 코드 파일 .class 생성
  3. JVM 구동 명령어 java.exe로 실행



class{}, main(), method()

  public class Hello {
    public static voic main(String[] args) {
    System.out.println("Hello, welcome to the java world!");
    }
  }

"Hello, welcome to the java world!" 출력

System.out.println(); : () 안의 내용이 출력됨
Hello : class 이름
method() : 반드시 class의 {} 안에 포함


  • class{} : 필드 또는 메소드를 포함
  • method() : 실행문 작성, 끝에 ; 붙여야함

❗️ main() 안의 실행문이 모두 실행되면 종료됨




주석

프로그램 실행 과정에서 ⭐️ 무시됨 ⭐️

기호 설명
// // 부터 라인 끝까지 주석으로 처리 (행 주석)
/* ~ */ /* */ 사이 모든 범위를 주석으로 처리 (범위 주석)



변수란?

  • 메모리 공간
  • 한 가지 타입의 하나의 값만 저장 가능



변수의 선언

"타입 변수이름;" 의 형식으로 선언

  • int age; : 정수 age 변수 선언
  • double value; : 실수 value 변수 선언
  • int x, y, z; : ,를 이용해 정수 x, y, z 변수를 한번에 선언

작성 규칙

  • $ || _ || 문자로 시작해야 함
  • 영어 대소문자 구분
  • applePhone 형식으로 작성
  • 길이의 제한 없음
  • 자바 예약어 사용 불가



변수값 저장

대입 연산자 = 사용
초기값 : 변수에 처음 저장한
초기화 : 변수에 초기값을 주는 행위
❗️ 변수 선언 & 초기화 동시 가능 ❗️

int score1;
score1 = 90;
❗️ int score2 = 90; ❗️

💡 정수 리터럴

  • 정수 리터럴은 10진수로 간주한다.

    0, 75, -100
    
  • byte, char, short, int, long에 저장 가능

💡 실수 리터럴

  • 소수점이 있는 리터럴은 10진수 실수로 간주한다.

    0.25, -3.14
    
  • float, double에 저장 가능


💡 문자 리터럴

  • 작은 따옴표로 묶은 텍스트는 하나의 문자 리터럴로 간주

    'A', '한', '\t', '\n'
    
  • 문자 리터럴을 저장할 수 있는 타입은 char 하나 뿐


💡 문자열 리터럴

  • 큰따옴표로 묶은 텍스트는 문자열 리터럴로 간주

  • 텍스트가 없어도 문자열 리터럴로 간주

  • 문자열 리터럴 내부에서도 이스케이프 문자를 사용할 수 있다.

    "대한민국"
    "탭 만큼 이동 \t 합니다."
    "한 줄 내려 쓰기 \n 합니다."
    
  • 문자열 리터럴을 저장할 수 있는 타입은 String 하나 뿐이다.


💡 논리 리터럴

  • truefalse논리 리터럴로 간주

    true, false
    
  • 논리 리터럴을 저장할 수 있는 타입은 boolean 하나 뿐이다.





변수 값 읽기

  • 초기화가 되어야 읽을 수 있다.




변수의 사용 범위

  • {} 내에서 선언되고 사용
  • 클래스, 생성자, 메소드에서 사용
  • 메소드 블록 내에서 선언된 변수 : 로컬 변수local variable
    • 메소드 실행이 끝나면 메모리에서 자동으로 없어진다.
  • 선언된 블록 내에서만 사용 가능



데이터 타입

타입에 따라 저장할 수 있는 값의 종류와 범위가 달라짐

💡 정수 타입

타입 크기 범위
byte 1 byte = 8 bit -128 ~ 127
char 2 byte = 16 bit 0 ~ 65,535
short 2 byte = 16 bit -32768 ~ 32767
int 4 byte = 32 bit -2147483648 ~ 2147483647
long 8 byte = 64 bit -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

💡 실수 타입

타입 크기 범위
float 4 byte = 32 bit 1.4E-45 ~ 3.4028235E38
double 8 byte = 64 bit 4.9E-324 ~ 1.7976931348623157E308

💡 논리 타입

타입 크기 범위
boolean 1 byte = 8 bit true, false



타입 변환

데이터 타입을 다른 데이터 타입으로 변환하는 것

💡 자동 타입 변환

  • 자동적으로 타입 변환이 일어나는 것
  • 작은 타입이 큰 타입에 저장될 때 발생

크기별로 타입을 정리하면 다음과 같다.

byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)

❗️ bytechar 으로 자동 변환 불가 ❗️


💡 강제 타입 변환

  • 캐스팅 Casting
  • 강제로 큰 타입을 작은 타입으로 쪼개어서 저장하는 것
  • 캐스팅 연산자 () 사용
  • 괄호 안에 들어가는 타입은 쪼개는 단위

다음은 int타입을 byte타입으로 캐스팅 시키는 코드이다.

int intValue = 103029770;
byte byteValue = (byte) intValue;
byte byteValue = 10;

Why? intValue타입 끝의 1byte만 저장되었기 때문

❗️ int 값을 실수 타입으로 변환 시 double 타입을 사용하는 것이 좋다.


💡 연산식에서의 자동 타입 변환

  • 크기가 큰 타입으로 자동 변환된 후 연산을 수행
  • 정수 연산일 경우 int 타입을 기본으로 함