변수의 종류 타입에 따른 분류 기본형(primitive type) - boolean, byte, char, short, int, long, float, double 참조형(reference type) - 기본형을 제외한 나머지. String, int[] 등 선언 위치에 따른 분류 멤버 변수 - 클래스 멤버 변수, 인스턴스 멤버 변수 지역변수 - 지역 변수, 파라미터 변수 public class VariableTypes { int instanceVariable; //인스턴스 멤버 변수 static int classVariable; //클래스 멤버 변수 public static void main(String[] args) { //파라미터 변수 int localVariable = 10; //로컬 변수 for(..
클래스와 객체의 관계 현실의 객체가 갖는 속성과 기능은 추상화되어 클래스에 정의된다. 클래스는 구체화되어 프로그램의 객체(instance, object)가 된다. 클래스 객체를 정의해 놓은 것. 객체의 설계도이다. 직접 사용할 수 없고, 객체를 만들기 위한 틀을 제공한다. 객체의 데이터 타입이라 할 수 있다. 객체 클래스를 데이터 타입으로 하여 클래스를 구체화 한 것이다. 실제로 동작한다. 메모리에 생성된다. 객체 생성될 때 메모리에서는 어떻게 동작될까? metaspace 클래스 정보 (타입 정보, 필드 정보, 메서드 정보) stack 메서드들의 실행 공간이다. thread 별로 별도 관리한다. 메서드 호출 시 마다 메서드 프레임이 적층된다. 메서드 프레임에 로컬 변수도 쌓이는 구조이다. heap 객체를..
객체지향 프로그래밍이란? 객체 / 지향 / 프로그래밍를 나눠서 의미를 분석해보자. 객체란, 현실에서 존재하거나 생각할 수 있는 모든 것이다. 객체는 속성과 기능으로 구성되어 있다. 지향이란, '향하다'라는 의미로, 객체지향은 객체를 중심으로 한다는 뜻이다. 프로그래밍이란, 컴퓨터에게 특정 작업을 수행하도록 지시하는 일이다. 따라서 "객체지향 프로그래밍"은 "객체를 중심으로 한 방식으로 프로그래밍하는 것"이다. 우리가 살아가는 일상생활이 객체지향이라고 볼 수 있다. A가 B에게 꽃을 전달하고 싶다. A는 꽃에 대한 전문적인 지식이나, 택배 경로에 대한 전문적인 지식이 필요하지 않다. 꽃집이라는 객체와, 택배사라는 객체를 사용하기 때문이다. 객체지향 프로그래밍의 장점 블록(레고) 형태의 모듈화된 프로그래밍 ..
생성자 객체를 생성할 때 호출되는 인스턴스 초기화 메서드 new 키워드와 함께 호출 Person person1 = new Person(); 일반 멤버 변수의 초기화나 객체 생성 시 실행돼야 하는 작업 정리 클래스 이름과 동일 리턴 타입이 없음 기본 생성자(default constructor) 파라미터가 없고 구현부가 비어있음 생성자 코드가 없으면 컴파일러가 기본 생성자 제공 public class DefaultPerson { String name; int age; boolean isHungry; //public DefaultPerson() {} -- 생략된 기본 생성자 public static void main(String\[\] args){ DefaultPerson person = new Default..