new 연산자 객체를 생성한 후 생성자를 호출해서 객체를 초기화함 - 객체 초기화 : 필드 초기화를 하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것 생성자 실행이 끝나면 new 연산자는 객체의 주소 리턴 - 리턴된 주소는 클래스 변수에 대입되어 객체의 필드나 메소드에 접근할 때 이용 클래스 변수 = new 클래스(); 기본 생성자 모든 클래스에는 생성자가 존재하며, 하나 이상을 가질 수 있음 생성자 선언하지 않아도 컴파일러가 기본 생성자를 바이트 코드 파일에 자동으로 추가시킴 - 명시적으로 선언한 생성자가 있다면 기본 생성자를 추가하지 않음 클래스가 public으로 선언되면 기본 생성자에도 public이 붙고 없으면 붙지 않음 public class Car { public Car() { } } 생..
분류 전체보기
필드 : 객체의 데이터를 저장하는 역할 객체의 데이터에는 고유데이터, 현재 상태 데이터, 부품 데이터가 있음 - 고유 데이터 : 회사, 모델, 색깔 등 - 상태 데이터 : 현재 속도, 엔진 등 - 부품 데이터 : 차체, 엔진, 타이어 등 필드 선언 기본 타입과 참조 타입 모두 가능 필드명은 첫 문자를 소문자로 하고 캐멀 스타일로 작성 초기화를 하지 않으면 자동으로 기본 값으로 초기화됨 - 정수는 0, 실수는 0.0, boolean은 false, 참조 타입은 null 타입 필드명 [=초기값]; 필드와 변수의 차이점 변수는 생성자와 메소드 블록에서 선언되며 생성자와 메소드 호출 시에만 생성되고 사용됨 필드는 클래스 블록에서 선언되며, 객체 내부에서 존재하고 객체 내, 외부에서 사용 가능 필드 사용 필드 사용..
객체와 클래스 클래스 : 객체를 생성하기 위해 필요한 설계도 인스턴스 : 클래스로부터 생성된 객체 - 동일한 클래스로부터 여러 인스턴스를 만들 수 있음 인스턴스화 : 클래스를 가지고 객체를 만드는 과정 클래스 선언 객체 생성을 위한 설계도를 작성하는 작업 어떻게 객체를 생성(생성자)하고, 객체가 가져야 할 데이터(필드)가 무엇이고, 객체의 동작(메소드)는 무엇인지를 정의하는 내용이 포함됨 클래스명을 첫 문자를 대문자로 하고 캐멀 스타일로 작성 - 첫 문자는 숫자가 될 수 없음 - 특수 문자 중 $, _를 포함할 수 있음 하나의 소스 파일에 여러 개의 클래스 선언 가능 - 하지만 소스 파일명과 동일한 클래스 하나만 공개 클래스(public) 로 선언할 수 있음 - 공개 클래스 : 다른 패키지에서도 사용할 ..
객체 (Object) 물리적으로 존재하거나 개념적인 것 중에서 다른 것과 식별 가능한 것 - 물리적 : 자동차, 자전거, 책, 사람 등 - 개념적 : 학과, 강의, 주문 등 속성과 동작으로 구성 (각각 필드와 메소드라 부름) - 속성 : 이름, 나이 등 - 동작 : 웃다, 걷다 등 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링이라고 함 객체의 상호작용 객체들 사이의 상호작용 수단은 메소드이고, 객체가 다른 객체의 기능을 이용할 때 메소드를 호출함 //메소드 호출 형태 메소드(매개값1, 매개값2..) 메소드 이름과 함께 전달하고자 하는 데이터를 괄호 안에 기술하는데, 이러한 데이터를 매개값이라 함 (메소드가 실행할 때 필요한 값) 리턴값은 메소드 실행의 결과이며, 호출한 곳에서 변수로 대..
계절, 요일같이 한정된 값을 갖는 타입을 열거 타입 이라고 함 열거 타입을 사용하기 위해서는 Enum으로 소스 파일을 생성하고 한정된 값을 코드로 정의해야함 열거 타입 소스 파일 열거 타입 이름은 첫 문자를 대문자로 하고 캐멀 스타일로 작성 값을 변경할 수 없기 때문에 상수와 같으므로 대문자로 작성 public enum Season { SPRING, SUMMER, AUTUMN, WINTER } 클래스 파일 참조 타입이므로 null로 초기화 할 수 있음 열거값 이외의 값을 대입하면 오류가 남 public static void main(String[] args) { // 열거 타입 변수 선언 Season today = null; //열거값 대입 today = Week.SPRING; //열거값 비교 today..
배열 및 컬렉션을 쉽게 처리할 목적으로 사용 카운터 변수와 증감식을 사용하지 않고 항목의 개수만큼 반복 후 자동으로 빠져나감 타입 변수의 타입은 배열 타입과 동일해야함 인덱스가 필요할 때는 기본 반복문을 쓰는 것이 좋음
배열 복사 배열은 한 번 생성하면 길이를 변경할 수 없으므로 더 많은 저장 공간이 필요하다면 더 큰 길이의 배열을 새로 만들고 이전 배열의 항목을 복사해야함 얕은 복사 배열의 주소값만을 복사 원본과 복사본 모두 하나의 주소값을 가지고 있음 복사본 값을 수정하면 원본도 수정됨 int [] origin = {1,2,3,4,5}; int [] copy = origin; 깊은 복사 동일한 새로운 배열을 하나 생성해서 실제 내부값들을 복사 원본과 복사본이 다른 주소값을 가지고 있음 복사본 값을 수정해도 원본 값은 수정되지 않음 for문을 이용한 배열 복사 메소드를 이용한 배열 복사 (얕은 복사) 번지 복사가 되어 참조하는 String 객체는 변함이 없음 System.arraycopy 몇번 인덱스부터 몇개를 어느 ..
다차원 배열 : 배열 항목에 또 다른 배열이 대입되는 것 이차원 배열 선언 [표현법] 1. 자료형 배열명 [][]; 2. 자료형 [][] 배열명; 3. 자료형 [] 배열명 []; 이차원 배열 할당 // 배열명 = new 자료형[행크기][열크기]; arr3 = new int[2][3]; // 이차원배열 선언과 동시에 할당 int[][] arr = new int[3][5]; 배열변수.length = 2 배열변수[0].length = 3 다차원 배열 각 항목에 접근하는 법 변수[1차원인덱스][2차원인덱스]...[N차원인덱스]... 값 목록으로 다차원 배열 생성 타입 뒤에 대괄호를 차원의 수만큼 붙이고 값 목록도 차원의 수만큼 중첩 타입[][]변수 = { {값1, 값2, ...}, {값1, 값2, ...}, ...
배열 같은 자료형의 변수를 하나의 묶음으로 다루는 것 연속된 공간에 값을 나열 시키고 각 값에 인덱스를 부여해놓은 자료구조 배열의 특징 배열 안에는 모두 같은 타입의 값이 들어가야 함 배열의 크기는 변경할 수 없음 배열 변수 선언 관례적으로 첫 번째 방법을 주로 사용 1. 타입 [] 변수; 2. 타입 변수 []; 배열은 참조 변수이고 객체이므로 힙 영역에 생성되고 배열 변수는 힙 영역의 배열 주소 저장 참조할 배열이 없다면 null로 초기화 할 수 있음 - null값을 가진 상태에서 변수[인덱스]로 값을 읽거나 저장하면 NullPointException 발생 타입[] 변수 = null; 값 목록으로 배열 생성 변수를 미리 선언한 후에는 값 목록을 변수에 대입할 수 없음 배열 변수 선언 시점과 값 목록 대..
문자열 비교 (==, equals) 자바의 문자열은 String 객체로 생성 (참조 타입) char타입과 다르게 빈 문자열 (”“)를 대입할 수도 있음 자바는 문자열 리터럴이 동일하다면 String 객체를 공유함 new 연산자로 직접 String 객체를 생성하고 대입할 수도 있음 new 연산자는 새로운 객체를 만드는 연산자로 객체 생성 연산자라고도 함 String name1 = "홍길동"; String name2 = "홍길동"; String name3 = new String"홍길동"; name1 == name2 // true name1 == name3 // false 내부 문자열을 비교할 경우에는 equals() 메소드 사용 (대소문자 구분) boolean result = str1.equals(str2)..