2023_1_6_TIL

TIL

1주일 동안 학습(알던 것이 아닌 새로운 내용을 공부한 것)을 기록하는 WIL입니다.
CS부터 자료구조와 알고리즘, 코딩테스트에서 사용되는 것, 자바, 스프링 모든 것을 총 망라 했습니다.

자바

플랫폼 독립성 vs 플랫폼 종속성

  • 플랫폼 독립성
    • 하나의 프로그램이 '모든' 플랫폼에서 실행 가능
  • 플랫폼 종속성
    • 하나의 살행 파일은 '하나의 특정' 플랫폼에서만 실행 가능

자바 개발 도구와 자바 실행 환경


여기서 주목해야 하는 점은 포함 관계입니다.

  • JDK
    • 자바 개발 도구
  • JRE
    • 자바 개발 환경
  • JVM
    • 자바 가상 머신

자바 소스 코드의 실행 과정


1. 소스파일(.java) 작성하면 컴파일러를 통해 바이트코드(.class) 실행
2. 소스파일은 src폴더, 바이트코드는 bin폴더에 위치

자바 가상 머신이 할당한 메모리 영역은?

  • 힙 영역
  • 스택 영역
  • 메서드 영역
    • 메서드영역, 클래스영역, 정적영역, 상수 영역(전부 같은 말)
    • 메모리 할당 후 바이트코드는 메서드 영역에 로딩

내부 구성 요소

  • 필드
  • 메서드
  • 생성자
  • 이너 클래스

소스코드 컴파일과 바이트 코드 생성

  • 소스파일(.java) 1개당 public class 1개
public class A {
}
class B {
}
class C {
}

형식대로 출력하기

System.out.println("문자" + 1);// 문자1
System.out.println(1 + "문자" + 2);// 1문자2
System.out.println(1 + 2 + "문자");//3문자
int a = 5;
String b = "안녕"
System.out.println("안녕" + b);// 안녕안녕
System.out.println(a + "안녕" + b);// 5안녕안녕
System.out.printf("%d\n", 10);// 10 10진법
System.out.printf("%0\n", 10);// 12 8진법
System.out.printf("%x\n", 10);// a 16진법
System.out.printf("%s\n", "문자열 출력");// 문자열 출력
System.out.printf("%f\n", 3.2582);// 3.258200
System.out.printf("%4.2f\n", 3.2582);// 3.26 / 전체 자릿수를 4개로 하고, 소수점 아래는 2자리까지 표현하라는 의미
System.out.printf("%d와 %4.2f\n", 10, 3.2582);// 10와 3,26

자료형 선언하기

  • C 와 자바는 컴파일 언어
    • 변수의 자료형 선언 해주기
  • 한 번 지정된 자료형을 바꿀 수 없는 이유
    • 변수의 자료형이 선언되면 메모리에 저장할 공간이 생긴다.
    • 만들어진 메모리 공간은 사라질 수 있어도, 데이터를 저장하는 기능은 변경 불가능
  • 변수의 생존 기간
    • JVM이 알아서 한다
      • 자신이 선언된 중괄호{}가 닫히면 삭제된다.

기본 자료형과 참조 자료형의 차이

  • 기본 자료형
    • 스택에 실제 변수값을 저장
  • 참조 자료형
    • 힙에 실제 데이터 값 저장
    • 스택에 힙의 '주소'를 저장
int n = 10;// 스택
int i = 19;// 스택
int k = 110;// 스택
String b = "안녕";// b("안녕"의 주소 가짐)는 스택 -> "안녕"은 힙

기본 자료형의 값의 범위

float 정밀도 7자리
float f1 = 1.0000001f;// 1.0000001
float f2 = 1.00000001f;// 1.0
double 정밀도 15자리
double d1 = 1.000000000000001;// 1.000000000000001
double d2 = 1.0000000000000001;// 1.0

산술 연산자와 증감 연산자

  • %
    • 모듈로 연산
      • CircularQueue 또는 순환 그래프에 사용됨

비교 연산자

  • ==, !=(등가 비교)시 비교 대상은?
    • stack 메모리 값을 비교
      • 참조 자료형
      • 기본 자료형
참조 자료형
String s1 = new String("안녕");
String s2 = new String("안녕");
System.out.println(s1 == s2);// false

삼항 연산자

int a = 3;
int b = (a > 5) ? 10 : 20;
둘 다 같음
int a = 3;
int b;
if (a > 5) {
	b = 10;
} else {
	b = 20;
}

중괄호{}를 생략했을 때 제어문의 동작

  • 생략시, 반드시 하나의 문장만 실행
if (3 > 5) {
	System.out.println("안녕");// 실행 x
    System.out.println("안녕");// 실행 x
}
if (3 > 5) 
	System.out.println("안녕");// 실행 x <- 이 부분만 제어문
    System.out.println("안녕");// 실행

switch 선택 제어문

  • break 없음
int a = 2;
switch(a) {
case 1:
	System.out.println("A");
case 2:
	System.out.println("B");// 실행
case 3:
	System.out.println("C");// 실행
default:
	System.out.println("D");// 실행
  • break 있음
int a = 2;
switch(a) {
case 1:
	System.out.println("A");
    break;
case 2:
	System.out.println("B");// 실행
    break;// 끝
case 3:
	System.out.println("C");
    break;
default:
	System.out.println("D");
    break;

for문

  • 초기식, 증감식은 쉼표로 구분가능, 여러 개를 동시 표기가능
for (int i = 0, j = 0; (i + j) < 10; i++, j++) {
}

continue 제어문

  • continue Lavel
POS1:// 레이블 위치 지점
	for (int i = 0; i < 5; i++) {
    	for (int j = 0; j < 5; j++) {
        	if (j == 3) {
            	continue POS1;// 레이블 위치로 돌아감
            }
            System.out.println(i + " " + j);
     		// i는 0 ~ 4 까지 순회, j는 0 ~ 2까지 순회(3 print 안함)
        }
    }
}// continue POS1로 대체하는 중괄호
profile
블로그 이전 : https://medium.com/@jaegeunsong97

0개의 댓글