[TIL] 변수, 형변환, 배열, 객체, 메서드
⛺ 𝗕𝗼𝗼𝘁 𝗖𝗮𝗺𝗽/SSAFY 8기

[TIL] 변수, 형변환, 배열, 객체, 메서드

 

 

 

 변수 

환경설정

  • 자바 프로젝트를 가져올 때는 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