본문 바로가기

JAVA

(34)
클래스 변수, 인스턴스 변수, 지역 변수, 생성자 1. 변수 변수는 타입 이외에도 선언되는 위치에 따라서도 그 종류를 구분한다. 변수 종류 선언 위치 생성 시기 종료 시기 클래스 변수 (class variable) 클래스 영역 클래스 로딩 시 단 한 번 생성 프로그램이 종료될 때 인스턴스 변수 (instance variable) 생성자를 호출 GC에 의한 자원 반환 시 지역 변수 (local variable) 클래스 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) 변수가 선언될 때 변수가 선언된 블록이 끝날 때 - 클래스 변수 🔹선언 : 인스턴스 변수 앞에 'static' 키워드 추가 🔹호출 : 클래스명.클래스변수명 👉 클래스 변수는 클래스를 로딩하고자 할 때 method area 영역에 생성되기 때문에, 인스턴스를 생성하지 않고서도 사용할 수 있다..
배열 1. 배열이란? 같은 타입의 여러 변수를 하나로 묶어 낸 형태이다. 개별적인 변수와 달리 배열의 저장공간은 서로 연속적인 배치를 보인다. 2. 배열의 선언과 생성 배열의 선언은 변수의 타입에 []를 붙이는 형태로 선언이 가능하다. (int[] score) 이러한 배열의 선언 시에는 아직 배열의 참조 변수의 저장 공간이 생성되었을 뿐이다. 때문에 배열을 선언하고 나서는 생성을 꼭 해줘야 한다. 배열의 생성은 new 연산자를 통해서 생성이 가능하며, 배열의 타입과 길이를 함께 지정한다. (new int[15];) 이렇게 생성된 배열은 지정한 타입의 기본값으로 초기화 되며, 타입이 참조형 타입인 경우에는 null 값으로 초기화 된다. 또한 생성된 배열의 주소값을 앞서 선언한 참조 변수에 저장하게 된다. // ..
클래스 객체 인스턴스 1. 클래스 1-1. 클래스란? 객체를 만드든 데에 사용되는 것으로, 생성될 객체의 속성과 기능을 포함하고 있다. 또한 여러 타입의 서로 관련된 변수를 묶어 하나의 타입으로 정의하는 것을 '사용자 정의 타입'이라고 하는데 자바에서는 클래스가 바로 사용자 정의 타입이라고 볼 수 있다. 1-2. 속성 '멤버 변수' 즉 변수로 표현되는 구성 요소로 객체가 저장해야 할 데이터의 저장 공간을 확보한다. ex ) Tv 라는 클래스에는 크기, 길이, 높이 등이 멤버 변수로 작성될 수 있다. 1-3. 기능 '메서드'라고 하며, 객체가 어떠한 기능을 수행하는지에 대한 내용이 작성된다. ex ) Tv 클래스에는 전원을 켜고 끄는 기능이 작성될 수 있다. class Tv{ // 멤버변수 String color; boolea..
깊은 복사와 얕은 복사 Call By Value(값에 의한 호출) 기본형 타입의 변수를 복사하게 되면 대상이 된 변수와 복사본인 변수는 서로 영향을 받지 않는다. int a = 10; int b = a; // a의 값(value)을 복사 System.out.println(a); // 10 System.out.println(b); // 10 b = 20; // 새로운 값 대입 System.out.println(a); // 10 System.out.ptintln(b); // 20 기본형 타입의 변수는 스택 영역에 자리를 잡을 때 변수별로 각자의 데이터 영역을 갖게 된다. 이 영역에 자신의 값을 저장하고 있기 때문에 변수 b는 생성될 때는 변수 a의 값을 복사 받아 10 이라는 데이터 값이 있었으나, 새롭게 20 이라는 값을 할당 ..
객체 지향 4대 특성 : 다형성, 캡슐화 3. 다형성 : 사용 편의성 3-1. 오버라이딩(Overriding)와 오버로딩(Overloading) 🔹오버라이딩 : 상위 클래스의 메서드를 재정의 하는 것으로 같은 메서드 이름, 같은 인자를 받는다. 🔹오버로딩 : 같은 기능을 수행하는 메서드를 확장 사용하기 위한 기능으로 같은 메서드 이름, 다른 인자로 다수의 메서드를 중복해서 정의한다. 상위 클래스의 메서드를 하위 클래스 내부에 오버라이딩 하게 되면, 재정의 된 메서드가 실행된다. 이는 상위 클래스 타입의 참조 변수를 사용하더라도 하위 클래스에 재정의 된 메서드가 있다면 해당 메서드가 우선적으로 호출된다. 이러한 특성으로 형변환이나 instanceof 연산자를 사용하여 굳이 하위 클래스가 누구인지 찾아볼 필요가 없어진다. 예를 들어, 정수 타입 두..
객체 지향 4대 특성 : 추상화, 상속 1. 추상화(Abstraction) : 모델링(Modeling) 1-1. 추상화란? 클래스를 설계할 때, 이 클래스로부터 실체화 될 객체의 공통된 특성을 먼저 찾게 된다. 사람을 예로 들면 이름, 나이, 직업, 키, 혈액형 등의 속성 값을 공통적으로 가질 수 있을 것이고, 먹다, 자다, 일하다, 공부하다, 웃다 등 기능 및 행위를 나타내는 메서드를 공통으로 가질 수 있을 것이다. 사람이라는 객체를 나타내는 특성은 상기된 내용보다도 훨씬 많기 때문에 우리는 강제적으로 어느 정도까지 만들겠다는 일종의 경계(Context)가 필요하다. 그렇다면 그 경계는 어떻게 만들어 질 수 있을까. 경계는 개발하고자 하는 어플리케이션의 사용 목적에 따라 경계가 구분될 수 있다. 개발의 목적에 따라 우리는 같은 객체를 두고도..
클래스(Class) 와 객체(Object) 1. 클래스(Class)와 객체(Object) 1-1. 객체(Object) Java의 클래스를 이해하기 위해서는 객체를 먼저 이해할 필요가 있다. 객체는 실제 세계에서 유형 또는 무형으로 존재하는 식별 가능한 모든 것을 의미한다. 예를 들어 유형으로는 사람, 컴퓨터, 고양이 등이 존재할 수 있고, 무형으로는 생산, 운동, 운전 등이 존재할 수 있다. 1-2. 클래스(Class) 클래스는 실제 세계에 존재하는 객체를 Java 프로그램에서 구현하고자 만든 일종의 설계도이다. 클래스는 필드(Field), 생성자(Constructor), 메서드(Method)로 구성되어 있으며, 이는 생략될 수 있다. 👉 필드(Field) : 객체를 구성하는 속성이며, 데이터가 저장되는 공간이다. 멤버 변수라고도 부른다. 👉 생..
조건문과 반복문 1. 조건문 1-1. if / else 문 if 문은 ()에 들어가는 조건식이 참인 경우 {} 블록의 코드를 실행하는 조건문이다. int num = 7; if(num > 1) { // 조건식 참 System.out.println("num이 1보다 큰 경우 실행되는 코드"); } 만약 if 문의 조건식이 참이 아닌 경우가 발생한다면? if 문 블록의 코드는 실행되지 않고 끝나버린다. 이런 경우에는 다른 조건을 추가해서 데이터를 걸러야 하는데, 이를 다중 조건 else if 문을 통해 구현할 수 있다. int num = 7; if(num < 5) { // 조건식 거짓 System.out.println("num이 5보다 작은 경우 실행되는 코드"); // {} 블록은 실행되지 않는다. } else if (nu..