변수
환경설정
- 자바 프로젝트를 가져올 때는 File - Import - Existing project file - select archive
- eclipse.ini 에서 UTF-8 설정 가능 (preference에서도 가능)
- package 계층적으로도 볼 수있고, flat 하게도 볼 수 있음.
- explorer 에서 package Presentation 에서 확인 가능
변수란?
- 변수란, 자료를 저장하기 위한 메모리 공간이다.
- 변수의 종류는 2가지가 있으며, 기본형과 참조형이 있다.
- 기본형의 갯수는 8가지
- 그 외는 다 참조형이다. String 도 기본으로 많이 써서 기본형이라고 착각하지만, 사실 참조형이다.
- 기본형은 미리 정해진 크기의 메모리 사이즈를 표현한다.
- 변수 자체에 값이 저장된다.
- 참조형은 크기가 미리 정해질 수 없다.
- 변수에 실제 값을 참조할 수 있는 주소만 저장이 된다.
형변환
- 작은집 -> 큰집 (묵시적 형변환) 데이터 손실이 없기 때문에 JVM이 알아서 변경해준다.
- 큰집 -> 작은집 (명시적 형변환) 데이터 손실이 있다.
배열
사용방식
- int[] arr = new int[N];
- 동일한 데이터 타입을 하나의 연속된 메모리 공간에서 관리하는 것을 이른다.
- 선언을 하면 default 값으로 초기화가 된다.
- 정수는 0
- 문자는 null
- 배열이 생성되고 어떻게 메모리가 사용이 되는가?
- 배열이 생성되고, 그 주소값이 담기고
- 주소값을 따라가면 거기에 데이터가 담겨있음.
- for-each 는 값을 copy 해서 사용한다.
- 배열은 최초 메모리 할당 후 변경을 할수가 없다.
- 즉, 파이썬 처럼 append 를 할 수 없다.
- 요소 수정은 가능하다.
2차원 배열
- int[][] arr = new int[N][]; arr[0] = new int[3]; 이런식으로 선언 가능
- 배열은 참조형이라서 데이터가 아닌 메모리 주소값이 할당된다.
- 다차원 배열은 한 개 아래 차원의 배열을 저장하고 관리하는 배열이다.
객체지향 프로그래밍
Object Oriented Programming
- 객체 지향이라는 것이 무엇인가?
- 객체라는 것은 손님 객에 물체 체이다. 즉, 주체가 아닌것. 주체가 활용하는 것을 이른다.
- 우리 주변에 있는 모든 것들은 프로그래밍의 대상이 된다.
- 현실 세계에서 주체 지향이 된다면, 모든 일을 다해야해서 피곤해질 것이다.
- 하지만 객체 지향이 되면 로직은 유지하되 바꿀 것은 바꿀 수 있고, 재사용성도 높아진다.
- 블록 형태의 모듈화된 프로그래밍은 신뢰성이 높다. 왜냐하면 하나하나의 블록은 검증된 크기나 색깔 그런 것들을 지니고 있기 때문이다.
- 현실 객체가 추상화 되고 구체화가 되면 프로그래밍 인스턴스가 된다.
- 클래스 : 붕어빵 틀, 설계도
- 객체(인스턴스) : 붕어빵
- 각각의 붕어빵은 서로를 모르는 붕어빵
- 추상화 : 객체를 클래스로 나타내는 것. 정보를 나열해서.
- 구체화 : 객체를 각각 메모리 공간에 할당하여 사용하는 것.
JVM 메모리 공간
- 3가지로 나누어 진다.
- 클래스 원판
- method stack
- heap
- 클래스 원형에는 클래스나 필드, 메서드, 타입 정보 등이 쌓인다. 상수도 여기에 있다.
- 붕어빵 아저씨가 붕어빵 기계를 끌고 오듯이
- 메서드 스택에는 멤버 변수 등이 쌓인다.
- 스레드 별로 별도로 관리한다.
- 메서드 호출 순서대로 쌓인다.
- 힙 영역에는 객체를 저장한다.
- 생성된 객체는 프로그래머가 삭제할 수없고, 가비지 콜렉터만 제어가 가능하다.
- new
메서드
Variable arguments
- 메서드는 클래스에서 객체의 행위나 기능을 하는 것을 이른다.
- 메서드에서 ... 은 타입이 몇 개든지 들어올 수 있다. print()
- 메서드 접근을 하려면 static, non static 으로 접근 가능하다.
- static 으로 하면 바로 클래스로 접근이 가능하다.
- Person.org 이런식으로
- 물론 p1.org 이렇게 객체로도 접근이 가능하다. 그러나 static에 자연스러운 문법이 아니다.
- 클래스 멤버 변수와 인스턴스 멤버 변수의 차이
- 이것도 static 에서 차이가 있다.
- 클래스 멤버 변수는 즉슨, static 멤버 변수
- static member는 항상 메모리에 있으므로 호출이 가능하다.
- 메서드 호출 스택
- 메서드가 스택의 자료구조로 쌓이고, 해제되고 그런 식
- LIFO
overloading
- 추가적재
- 동일한 기능을 수행하는 메서드의 추가 작성이 필요할 시
- 기억해야할 메서드가 감소하고, 중복 코드에 대한 효율적 관리가 가능하다.
728x90
'⛺ 𝗕𝗼𝗼𝘁 𝗖𝗮𝗺𝗽 > SSAFY 8기' 카테고리의 다른 글
[TIL] Day 4 - Computational Thinking (0) | 2022.07.11 |
---|---|
[TIL] Day 3 - Computational Thinking (0) | 2022.07.05 |
[TIL] Day 2 - Computational Thinking (0) | 2022.07.05 |
[TIL] Day 1 - Computational Thinking (2) | 2022.07.04 |
[후기] SSAFY 8기 지원과정 (면접) (3) | 2022.07.01 |