JAVA 웹개발 과정 국비 2일차 정리

2일차

※ 배우는 과정이므로 정확하지 않을 수 있습니다.
잘못된 점은 알려주시면 수정하도록 하겠습니다!


1. 출력과 코딩 스타일

1) 출력

  • System.out.println(); : 줄바꿈 + 출력
  • System.out.print(); : 출력
  • sysout + (Ctrl+Space) : eclipse에서의 Code Assistant -> System.out.println()을 의미한다.
  • ; (세미콜론) : 문법 구분자
  • ” “ (큰따옴표) : 문자열 출력
  • ’ ‘ (작은따옴표) : 문자 출력
  • 따옴표 없음 : 숫자 출력
  • // : 주석 (Comment) -> 컴파일 타이밍에 모두 떨어져나가므로 상관 X

2) 코딩 스타일

  • BSD Style : 중괄호가 아래로 내려가는 코딩 스타일
  • GNU Style : 중괄호가 아래로 + 한칸 안으로 들어가는 코딩 스타일
  • K&R Style : 중괄호가 아래로 내려가지 않고 옆으로 위치하는 코딩 스타일

이는 모두 Convention(관습)이므로 어떤 것을 써도 괜찮다!

2. CPU, RAM, HDD(SDD)

  • CPU : 중앙처리장치(Central Processing Unit)
  • RAM : 주기억장치
    • 전기의 힘을 이용하여 기억한다.
    • 휘발성 기억장치 (전기를 끄면 날라감)
  • HDD (SDD) : 보조기억장치
    • 전기를 쓰지 않음, 자석을 이용한다.
  • RAM과 HDD(SDD)를 나누는 기준은?
    • CPU 때문! CPU는 RAM에 기억된 것만 처리가 가능하다(직접적으로)
      HDD의 내용을 처리하려면 RAM에 복사해서 처리해야한다.
      HDD —> RAM 복사하는 과정을 Loading 이라고 한다.
  • 문제 해결 방식 : 입력 -> 기억 -> 처리

3. 변수

데이터 또는 자료를 저장하기 위한 메모리 공간

위에서 문제 해결 방식과 CPU, RAM, HDD를 공부한 이유는 결국은 변수가 왜 필요한지를 이해하는 과정에서 필요하기 때문이다.

우리가 37 X 42 를 계산할 때, 우리는 37이란 수와 42라는 수를 눈으로 보고 입력을 받아 기억하고 곱해서 처리한다.
이와 같이 컴퓨터에서도 입력 -> 기억 -> 처리 단계를 거쳐야 한다.
예를 들어 컴퓨터에 37 X 42 를 곱한 결과를 화면에 출력시키게 한다면,

1. 컴퓨터 변수를 하나 만들어  
2. 거기에 37을 저장해  
3. 컴퓨터 변수를 하나 더 만들어  
4. 거기에 42를 저장해  
5. 컴퓨터 두 변수에 저장된 값을 곱해  
6. 그 곱해서 나온 결과를 화면에 출력해줘  

위와 같은 과정을 모두 거쳐야 한다.
따라서 컴퓨터에 변수를 선언(변수를 만드는 것)하는 것은 굉장히 중요한 일이다.

1) 변수선언

DataType 변수명 ;

2) 자료형(DataType)

  • 기본형 변수 (Primitive Type)
    • 논리형 : boolean(1)
    • 정수형 : byte(1) / short(2) / char(2) / int(4) / long(8)
    • 실수형 : float(4) / double(8)
  • 참조형 변수 (Reference Type)
    • 기본형을 제외한 나머지 자료형
    • 객체의 주소를 저장한다.
    • String 등 참조형 변수는 모두 4byte

3) 참조형 변수, 주소를 저장한다는 의미는?

위의 의미를 이해하려면, 우선 O/S가 하는 일이 무엇인지를 이해해야 한다.
O/S가 하는 일 중 가장 핵심은 Resource Manager, 즉, 자원관리이다.
그 중 RAM은 Virtual Memory System을 이용하여 영역을 구분하는데, 자세한 것은 뒤에서 배우니 그 중 Stack과 Heap만 알아보자.
기본자료형은 값이 고정되어있기 때문에 Stack 메모리에 쌓인다. 그러나 참조자료형은 값이 가변적이기 때문에 Heap 메모리에 쌓이게 된다.(Stack도 이용하긴 함)

만약 아래와 같은 코드가 있다고 한다면,

public class Exam_01 {
	public static void main(String[] args){
		int a = 1047;
		String i = "ABC";
	}
}

변수 a는 Stack 메모리에 1047의 값을 가지고 저장된다.
변수 i도 동일하게 Stack 메모리에 저장되지만 ABC라는 값은 Heap 메모리에 저장된다.
그리고 이 ABC의 주소값이 1000이라고 한다면, Stack에는 변수 i의 주소값인 1000이 저장된다.
따라서, 변수 i의 값은 결국 주소값인 1000이 저장되는 것이다.

4. Data type Promotion & Data type Casting

  • Data type Promotion (자동형변환)
    • 좁은 범위의 자료형이 넓은 범위의 자료형에 대입 될 때
    • 실수형 > 정수형
  • Data type Casting (강제형변환)
    • 넓은 범위의 자료형이 좁은 범위의 자료형에 대입 될 때
    • Cast 연산자를 이용한다.
  • boolean 과 String 은 형변환이 되지 않는다

좁은 범위와 넓은 범위가 어떤 건지 잘 기억하고 있다면 에러를 줄일 수 있다.
실습 문제를 풀 때, 애매했던 문제들이 있었다.
long l = 40L; -> L을 빼도 에러가 나지 않는다(int < long)
float f = 3.14f; -> f를 빼면 에러가 난다(double > float)

아직 맞고 틀린 것을 구분하는 데는 오래 걸리지만, 익숙해질 때까지 자주 봐야겠다.
자바의 정석 실습문제도 풀어봐야겠다.

댓글남기기