Java 89

[Java] this() - 다른 생성자 호출 2022.11.27

생성자 오버로딩이 많아질 경우 생성자 간의 중복된 코드가 발생할 수 있음 매개 변수의 수만 다르고 필드 초기화 내용이 비슷한 생성자에서 많이 발생 개션 방법 ) 필드 초기화 내용 ➡ 한 생성자에만 집중적으로 작성 나머지 생성자 ➡ 초기화 내용을 가지고 있는 생성자를 호출 생성자에서 다른 생성자를 호출할 때는 this( ) 코드를 사용 this() : 다른 생성자를 호출하는 코드로 반드시 생성자의 첫줄에만 허용 됨 this()의 매개값은 호출되는 생성자의 매개 변수 타입에 맞게 제공해야 함 this() 다음에는 추가적인 실행문들이 올 수 있음 호출되는 생성자의 실행이 끝나면 원래 생성자로 돌아와서 다음 실행문을 진행 this() 사용하여 중복 코드 제거 EX) Car(String model) { this...

[Java] 생성자 오버로딩 (Overloading) 2022.11.27

생성자 오버로딩 (Overloading) : 매개 변수를 달리하는 생성자를 여러 개 선언하는 것 외부에서 제공되는 다양한 데이터들을 이용해서 객체를 초기화하려면 생성자도 다양해야 함 EX) Car 객체 생성 - 외부에서 제공되는 데이터가 없다면 기본 생성자로 Car 객체 생성 - 외부에서 model 데이터가 제공되거나 model 과 color가 제공될 경우에도 Car 객체를 생성 할 수 있어야 함 생성자가 하나 뿐이라면 다양한 요구 조건을 수용할 수 없음 Java ➡ 다양한 방법으로 객체를 생성할 수 있도록 생성자 오버로딩 (Overloading)을 제공 생성자 오버로딩 EX) public class Car { Car {...} Car(String model) {...} Car(String model, ..

[Exception] java.lang.NullPointerException 2022.11.26

✔ java.lang.NullPointerException 참조변수를 사용하면서 가장 많이 발생하는 예외중 하나 NullPointerException 참조 타입 변수가 null을 가지고 있을 경우 참조 타입 변수는 사용할 수 없음 (즉, 객체를 사용할 수 없음) == null 값을 가질 경우 참조할 객체가 없으므로 사용할 수 없음 null 값을 가지고 있는 참조 타입 변수를 사용할 경우 NullPointerException 발생 EX) 1) null 객체의 인스턴스 메서드를 호출 2) null 객체의 필드에 접근하거나 수정 3) null 인 배열의 length 필드를 사용 void action() { if(this.tool.equals("도끼")) { System.out.println("나무배기"); }..

[Java] 생성자 2022.11.26

생성자 (Constructor) : new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당객체 초기화 : 필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비를 하는 것 생성자를 실행시키지 않고는 클래스로부터 객체를 만들 수 없음 new 연산자에 의해 생성자가 성공적으로 실행되면 힙(heap) 영역에 객체가 생성되고 객체의 주소가 리턴됨리턴된 객체의 주소는 클래스 타입 변수에 저장되어 객체에 접근할 때 이용됨* 생성자가 성공적으로 실행되지 않고 예외(에러)가 발생하면 객체는 생성되지 않음  기본 생성자모든 클래스는 생성자가 반드시 존재하며, 하나 이상을 가질 수 있음클래스 내부에 생성자 선언을 생략➡ 컴파일러가 중괄호 { } 블럭 내용이 비어있는 기본 생성자 (D..

[Java] 필드 2022.11.23

필드 (Field) : 객체의 고유 데이터, 객체가 가져야 할 부품, 객체의 현재 상태 데이터를 저장하는 곳 EX) 자동차 객체       - 고유 데이터 : 제작회사, 모델, 색깔, 최고 속도       - 상태 데이터 : 현재 속도, 엔진 회전수       - 부품 : 차체, 엔진, 타이어  필드 선언클래스 중괄호 { } 블록 어디서든 존재할 수 있음생성자 선언과 메소드 선언의 앞과 뒤 어떤 곳에서도 필드 선언이 가능생성자와 메소드 중괄호 블록 내부에는 선언될 수 없음생성자와 메소드 중괄호 블록 내부에 선언된 것 ➡ 로컬변수필드선언 : 변수의 선언과 비슷 (클래스 멤버 변수라고 부르기도 함)타입 필드 [ = 초기값]; 타입 : 필드에 저장할 데이터의 종류기본 타입 : byte, short, int, ..

[Java] 클래스의 구성 멤버 2022.11.21

클래스에는 객체가 가져야 할 구성 멤버가 선언됨 클래스의 구성 멤버 1) 필드 (Field) 2) 생성자(Constructor) 3) 메소드 (Method) 구성 멤버들은 생략되거나 복수 개가 작성될 수 있음 필드 (Field) 객체의 고유 데이터, 부품객체, 상태 정보를 저장하는 곳 선언 형태는 변수(variable)와 비슷하지만, 필드를 변수라고 부르지 않음 변수 : 생성자와 메소드 내에서만 사용되고 생성자와 메소드가 실행 종료되면 자동 소멸 필드 : 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재 생성자 (Constructor) new 연산자로 호출되는 특별한 중괄호 { } 블록 객체 생성 시 초기화를 담당 ➡ 필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비 ..

[Java] 객체와 클래스 2022.11.21

현실에서의 객체 → 설계도를 바탕으로 만들어짐 EX) 사람들이 자동차를 이용하기 위해서는 공장에서 설계도를 보고 자동차를 만들어야 함 객체 지항 프로그래밍에서의 객체 → 메모리에서 사용하고 싶은 객체가 있다면 우선 설계도로 해당 객체를 만드는 작업 필요 ✔ 클래스 (class) : 객체를 만들기 위한 설계도 ➡ 객체를 생성하기 위한 필드와 메소드가 정의되어 있음 ✔ 인스턴스 (instance) : 클래스로부터 만들어진 객체 ✔ 인스턴스화 : 클래스로부터 객체를 만드는 과정 *하나의 클래스로부터 여러개의 인스턴스를 만들 수 있음 (1:N) 객체 지향 프로그래밍 개발의 세 가지 단계 ① 클래스 설계 ② 설계된 클래스를 가지고 사용할 객체를 생성 ③ 생성된 객체를 이용 클래스 선언 Naming Conventi..

[Java] 객체 지향 프로그래밍의 특징 2022.11.21

객체 지향 프로그램의 특징으로는 추상화, 캡슐화, 상속, 다형성을 들 수 있음 추상화 (Abstraction) 공통의 속성이나 기능을 묶어 이름을 붙이는 것 객체 지향적 관점에서 클래스를 정의하는 것을 추상화라고 할 수 있음 어떤 관념을 클래스로 정의하는 것 EX) 개라는 관념을 Dog Class로 정의 여러 클래스간의 공통 속성/기능을 묶어 새로운 클래스를 정의하는 것 EX) Dog Class와 Cat Class의 공통된 기능을 묶어 Animal Class를 정의 캡슐화 (Encapsulation) 객체의 필드, 메소드를 하나로 묶고 실제 구현 내용을 감추는 것을 말함 외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있음 필드와 메소드를 캡슐화하여 보호하..

[Java] 객체 지향 프로그래밍 2022.11.21

객체 지향 프로그래밍 (OOP : Object Oriented Programming) : 소프트웨어를 개발할 때 부품에 해당하는 객체들을 먼저 만들고 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법 객체 객체(Object) : 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것 EX) 물리적으로 존재하는 자동차, 자전거, 책, 사람 등       추상적인 학과, 강의 주문 등객체는 속성과 동작으로 구성되어 있음EX) 사람 - (속성) 이름, 나이 / (동작) 웃다, 걷다       자동차 - (속성) 색상, 모델명 / (동작) 달린다, 멈춘다자바에서는 속성을 필드(field), 동작을 메소드(method)라고 부름 객체 모델링 (Object..

[Java] Random 클래스 2022.11.19

의사 난수를 생성할 때 사용하는 클래스 선형합동법 (Linear Congruential Method)를 사용하여 만들어진 48bit의 seed를 사용 $$X_{n+1} = (aX_{n}+c)\quad mod \quad m$$ 재귀 관계식으로 정의되며 난수들의 수열을 반환 난수에 주기성이 있고 생성되어 나오는 난수들 사이에 상관 관계가 존재하기 때문에 마지막으로 생성된 난수와 그 외 변수들만 알면 그 다음에 생성될 난수를 모두 예측할 수 있음 Random 클래스 사용하기 java.util 패키지에 있으므로 import 문이 필요함 import java.util.Random; 생성자 Random rnd1 = new Random(); Random rnd2 = new Random(10); 생성자 설명 Rando..