본문 바로가기
  • 시 쓰는 개발자

자바8

생성자 왜 쓸까? 생성자 왜 쓸까? 생성자를 왜 쓸까? 생성자를 명시해주지 않아도 컴파일러가 기본 생성자를 자동으로 만들어주고, 값을 초기화할 때도 setter를 쓸 수 있는데 왜 쓸까?? 이런 궁금증이 문득 들어서 정리해본다. 1. 쉬운 초기화 setter로도 당연히 할 수는 있다. 근데 코드만 보더라도 필드값 3개를 초기화해야한다면 생성자는 객체를 만들 때 같이 하고, setter는 3줄이 더 추가되니 생성자를 사용하는 것이 코드도 짧아지고 쉽게 초기화할 수 있다. 2. 직관성 위에서처럼 setter를 써서 3줄로 초기화하기보다, 객체를 만들 때 바로 초기화한다면 직관적이고 보기 편할 것이다. 3. 객체의 유효성 보장 그냥 있어보이게 지은 말인데, 실제 있는 말인지는 모르겠다. 단순히 Person p = new Per.. 2024. 3. 11.
6장 객체지향 (5) 오버로딩 , 생성자 , this , this() , 변수 초기화 JAVA의 정석 강의를 들으며 공부하며 정리했습니다. 너무 자잘한 내용은 안적었습니다. [자바의 정석 - 기초편] ch6-30,31 오버로딩 오버로딩 (overloading, 과적합) 한 클래스 안에 같은 이름의 메소드를 여러개 정의하는 것. 이름이 같다는 것은 하는 일이 같다는 것이다. Ex) 프린트문을 생각. println()은 println(char x), println(int x) 등 매개변수에 따라서 여러 형태이다. 오버로딩이 성립하기 위한 조건 메소드 이름이 같아야 한다. 메소드끼리 매개변수의 개수 또는 타입이 서로 달라야한다. (반환 타입은 상관 없다.) [자바의 정석 - 기초편] ch6-32~35 생성자, 기본 생성자 생성자 인스턴스 생성때마다 호출되는 인스턴스 초기화 메소드이다. 객체 만.. 2024. 3. 10.
6장 객체지향 (4) 기본형/참조형 매개변수 , static/인스턴스 메소드 JAVA의 정석 강의를 들으며 공부하며 정리했습니다. 너무 자잘한 내용은 안적었습니다. [자바의 정석 - 기초편] ch6-23 기본형 매개변수 기본형 매개변수 : 변수의 값을 읽기만 할 수 있다. (read only) 여기서 말하는 기본형은 다음 8개의 변수를 말함. int, float, char, String, byte, boolean, double, long 참조형 매개변수 : 변수의 값을 읽고 변경할 수 있다. (read & write) class Data { int x; } class PrimitiveParamEx { public static void main(String[] args) { Data d = new Data(); d.x = 10; System.out.println("main() : .. 2024. 3. 10.
6장 객체지향 (3) 메소드 , 호출스택 JAVA의 정석 강의를 들으며 공부하며 정리했습니다. 너무 자잘한 내용은 안적었습니다. [자바의 정석 - 기초편] ch6-14~16 메서드란? 메서드의 선언부와 구현부 메소드란? 메소드는 문장(명령문)들을 묶어놓은 것이다. 좀 더 구체적으로는 자주 쓰는 코드를 괄호로 묶고서 이름을 붙여놓으면 그게 메소드다. 메소드는 값을 받아서 처리하고 결과를 반환한다. 이때 값은 여러개 받을 수 있지만 반환하는 값은 항상 1개이다. 만약 여러개를 반환하고 싶으면 배열에 담아서 주거나 객체로 묶어서 줘야한다. 단, 하나의 메소드는 하나의 기능만 수행하도록 작성하는 것이 좋다. 메소드의 장점 코드 중복 줄임 코드 관리 쉬움 코드 재사용 가능 코드가 간결해져서 가독성에 좋다 메소드 = 선언부 + 구현부 선언부 : 메소드 이.. 2024. 3. 10.
6장 객체지향 (2) 클래스변수 , 인스턴스변수 JAVA의 정석 강의를 들으며 공부하며 정리했습니다. 너무 자잘한 내용은 안적었습니다. [자바의 정석 - 기초편] ch6-11 선언위치 변수종류 영역은 클래스 영역과 메소드 영역으로 나뉜다. 클래스 영역에는 선언문만 가능하다. 프린트문 같은 것들은 불가능하다. 1. 인스턴스 변수(iv) : 클래스 영역에 선언된 변수. 인스턴스 변수를 묶어놓은 것이 객체이다. 2. 클래스 변수(cv) : 클래스 영역에 선언된 변수. 인스턴스 변수에 static을 붙이면 클래스 변수가 된다. 3. 지역변수(lv) : 메소드 영역에 선언된 변수 변수의 종류 선언 위치 생성 시기 클래스 변수(cv) (static이 붙은 인스턴스 변수) 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수(iv) ★인스턴스가 생성됐을 때★ 지.. 2024. 3. 10.
4장 조건문과 반복문 JAVA의 정석 책을 참고하였습니다. 까먹었을 법한 내용만 정리. 조건문 – if, switch + Math.random() 참고 if if (조건) { 결과 } 조건식의 결과는 반드시 true or false이다. switch switch (조건) { case A: ~~ break; case B: ~~ break; default: ~~ ... } 조건식의 결과는 정수나 문자열만 가능. ★ 이때 case문의 값인 A, B 자리에는 변수를 사용할 수 없다. switch문도 if문처럼 중첩 가능. Math.random() - 난수 발생 함수 ★★★ 0 이상 1.0 미만 double 값을 반환한다. ★★★ ex. 1~10 사이의 임의 정수를 얻기 int score = (int)(Math.random() * 1.. 2022. 10. 28.
3장 연산자 JAVA의 정석 책을 참고하였습니다. 까먹었을 법한 내용만 정리. 연산자 종류 우선순위가 높은 순서대로 쓰면 단항, 산술, 비교, 논리, 삼항, 대입 무엇보다도 괄호가 우선순위가 제일 높고, 단항 이항 삼항 순서대로 높다. 연산자 우선순위는 거의 다 상식적으로 생각하면 된다. 단, 주의할 점이 있다. 쉬프트연산자 > >>>(2를 곱하거나 2로 나눠줌)들은 덧셈연산자보다 우선순위가 낮다. ex. x 3 && x < 5) 이항 연산자의 특징 이항 연산자는 연산을 수행하기 전에 피연산자의 타입을 일치시킨다. 두 개의 타입 중 “표현범위”가 더 넓은 쪽으로 통일돼서 계산된다. ex. char + int = int + int float + int = float + float long + float = float .. 2022. 10. 28.
2장 변수 JAVA의 정석 책을 참고하였습니다. 까먹었을 법한 내용만 정리하려 합니다. 변수 타입 기본형 : boolean, char, byte, short, int, long, float, double ▶ 실제 값을 저장함, 사용하려면 0 등으로 초기화를 해줘야함. 참조형 : String, System 등 ▶ "객체의 주소"를 저장함 명명규칙과 권장사항 대소문자가 구분되고, 길이제한 X // True와 true(예약어)는 서로 다르다. 특수문자는 언더바(_)와 달러사인($)만 허용된다. 클래스 이름의 첫글자는 항상 대문자로, 변수와 메소드 이름의 첫글자는 항상 소문자로 여러 단어는 첫글자가 대문자 상수는 대문자로 쓰고, final을 붙여줌 문자와 문자열 문자는 문자가 딱 1개만 있는 char, 문자열은 문자 2개.. 2022. 10. 28.