20230403 TIL
오늘은 자바와, 자바 기본 코드 형식, 및 변수의 종류를 배웠다.
대표적 객체지향언어
C 언어 + 공통 실행환경 (JVM) + 클래스 (데이터, 메서드 포함) + 객체
가장 많이 쓰이는 언어
1.) 공통 실행환경이 있어 여러 기기에서 실행 가능
2.) 세상과 닮아있는 개발언어라 코드를 이해하기 쉽고 유지 보수가 쉬움
3.) 안정성이 높아서 프로그래밍 오류를 방지하고 보안상 안전
4.) 네트워크 및 데이터베이스 연결 및 통신 등의 작업을 처리하는 API를 제공
5.) 다양한 개발 도구와 라이브러리를 사용
여러 기기 위에 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는 것
Byte Code = .java 파일을 운영체제가 읽을수 있도록 Java compliler가 변환한 파일 (.class)
Compiler = .java 파일을 .class로 변환하는 변환기
Interpreter = byte code를 기계어로 번역
JIT(Just In Time) Compiler = Interpreter의 효율을 높여주는 서포터 해석기
메모리 영역 = 운영체제로 부터 JVM이 할당받은 메모리 영역
Class Loader = JVM으로 byte code를 불러와서 메모리에 저장
Garbage Collector = 메모리 영역에서 안쓰는 데이터를 주기적으로 흡수해가는 청소기
JRE (Java Runtime Environment) = 자바 실행 환경 = .class 파일만 실행 가능
JDK(Java Development Kit) = 자바 개발 키츠 = JRE, javac(Java Compiler), 및 디버깅 기능 포함
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
public class main {}
- 클래스 정의
- public = 클래스 경로 외부에서 실행시킬 수 있다고 표시해주는 “접근 제어자”
( private 과 protected 도 있다. )- class = 객채를 만드는 클래스라고 선언
- Main = 클래스 명, 파일 이름과 같아야한다.
public static void main {}
- main 메서드 정의
- public = 외부에서 실행시킬 수 있다고 표시해주는 “접근 제어자”
- class = Java 컴파일러가 바이트 코드로 변환할때 미리 정의되는 메서드 표기
- void = 메서드의 응답값을 정의하는 곳인데 void 는 응답할 값이 없다는 정의
(String[] args)
- 메서드가 시작될때 넘겨받을 데이터들
- String[] = 문자열 여러개 데이터 타입
- args = 문자열 여러개 데이터의 이름 (사용자가 정의한값 아무거나 써도됨)
설명을 달아놓는 기능
개발자들끼리 협업할때 코드에 대한 설명을 추가하거나 주의사항을 적어놓을 때 사용
실제 프로그램 실행에는 영향을 미치지 않는 유령코드
예시:
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!"); //이것은 주석입니다.
}
}

저장공간에 담을 데이터의 타입과 이름을 명시해서 선언한다.
public class Main {
public static void main(String[] args) {
// 변수
int num = 10;
num = 20;
//상수
final int num = 10;
}
}
기본형 변수
True/ False 값만 저장문자 값만 저장 ('A', '1')정수형 숫자값을 저장int 와 long 데이터값을 구분하기 위한 구분자로 long으로 담을 숫자뒤에 L을 붙입니다.실수형 숫자값을 저장float 와 double 데이터값을 구분하기 위한 구분자로 float으로 담을 숫자뒤에 f를 붙입니다.참조형 변수
“Apple”, “텍스트” 와 같은 문장을 저장객체, 배열, 리스트와 같은 단일 저장공간에 담을 수 없는 값을 저장래퍼 클래스 변수 (Wrapper Class)
기본형 변수를 클래스로 한번 랩핑(감싸는) 변수
기본형 변수 타입명에서 첫글자를 대문자로 바꾸어서 래퍼 클래스를 정의한다.
박싱
기본 타입에서 래퍼 클래스 변수로 변수를 감싸는 것
언박싱
래퍼 클래스 변수를 기본 타입 변수로 가져오는 것
예시 :
// 박싱
// Integer 래퍼 클래스 num 에 21 의 값을 저장
int number = 21;
Integer num = new Integet(number);
// 언박싱
int n = num.intValue(); // 래퍼 클래스들은 intValue() 같은 언박싱 메서드들을 제공해줍니다.
문자 한개만 저장하며 따옴표를 사용하여 값을 지정합니다. (ex. ’A’)문자 여러개를 문장형태로 저장하며 쌍따옴표를 사용하여 범위를 지정합니다. (ex. “ABCDEFG”)문자 뒤에 \0(널문자)가 없다.1 byte만 사용한다 문장의 끝에 \0(널문자)가 함께 저장이 된다. n개의 byte가 사용된다. 기본형 변수 = 원본 값을 저장한다. Stack에 저장.
참조형 변수 = 원본 값을 저장한 저장 공간의 주소값을 저장한다. 주소값은 Stack, 원본 값은 Heap에 저장.

double doubleNumber = 10.101010;
float floatNumber = 10.1010
int intNumber;
intNumber = (int)doubleNumber; // double -> int 형변환
intNumber = (int)floatNumber; // float -> int 형변환 int intNumber = 10;
double doubleNumber = (double)intNumber; // int -> double 형변환
float floatNumber = (float)intNumber; // int -> float 형변환📌 변수 타입별 크기 순서
byte(1) → short(2) → int(4) → long(8) → float(4) → double(8)
예시 :
byte byteNumber = 10;
int intNumber = byteNumber; // byte -> int 형변환
System.out.println(intNumber); // 10
char charAlphabet = 'A';
intNumber = charAlphabet; // char -> int 형변환
System.out.println(intNumber); // A의 유니코드 : 65 (ASCII 코드)
intNumber = 100;
long longNumber = intNumber; // int -> number 형변환
System.out.println(longNumber); // 100
intNumber = 200;
double doubleNumber = intNumber; // int -> double 형변환
System.out.println(doubleNumber); // 200.0 (소수점이 추가된 실수출력)
📓 오늘 느낀 점 한줄 요약
"여행은 시작 되었다!" 🚢
20230403 TIL