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

java15

생성자 왜 쓸까? 생성자 왜 쓸까? 생성자를 왜 쓸까? 생성자를 명시해주지 않아도 컴파일러가 기본 생성자를 자동으로 만들어주고, 값을 초기화할 때도 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.
6장 객체지향 (1) 객체 , 클래스 JAVA의 정석 강의를 들으며 공부하며 정리했습니다. 너무 자잘한 내용은 안적었습니다. [자바의 정석 - 기초편] ch6-1 객체지향 언어 - 6, 7장이 제일 중요하니 반복해서 공부한다. - 객체지향 규칙은 외워라. 그냥 a4용지에 적어서 외우기!! [자바의 정석 - 기초편] ch6-2~4 클래스와 객체 클래스(설계도) : 객체를 정의하는 것. 객체 생성에 사용 객체(제품) : 실제로 존재하는 것. 객체가 가지고 있는 기능과 속성에 따라 용도가 달라짐. 객체 = 속성(변수) + 기능(메소드) 인스턴스 : 객체랑 똑같다. 다만, 객체는 모든 인스턴스를 대표하는 general한 용어이고, 인스턴스는 특정 클래스로부터 생성된 객체를 말한다. Q. 클래스가 필요한 이유는? A. 객체를 생성하기 위해 ↓ Q. .. 2024. 3. 10.
Java 연산자 김영한님의 java-start 강의를 듣고 작성하였습니다. 연산자 주의할 점 String + int를 해주면 String + String으로 java가 바꿔서 더하게 된다. ex) "apple" + 4 = apple4 우선순위가 조금이라도 애매하다싶으면 무조건 괄호를 쓰기. 문자열끼리 비교할 땐 ==으로 비교하면 안되고 .equals() 메소드를 사용해야한다. 전위 증감 연산자 ++a a = 1, b = 0 b = ++a //전위 증감 연산자 a = a + 1 //a의 증감 연산이 먼저 진행, a = 2 b = a //이후에 a를 대입 b = 2 결과: a = 2, b = 2 대입을 하는 상황에서 전위 증감 연산자는 값을 먼저 증가시키고 대입을 한다. 후위 증감 연산자 a++ a = 1, b = 0 b .. 2024. 1. 7.
자료형 long (Long과 long 차이) long의 특징 long은 8byte로, 매우 큰 수를 저장할 수 있다. 그렇기 때문에, 일반적으로 int보다 큰 수를 다뤄야할 때 long을 사용한다고 보면 된다. 변수 뒤에 L을 붙여줘야한다.(소문자도 되지만 대문자 L을 권장.) ex) long abc = 1L; Long(참조타입)과 long(원시타입)은 다르다... 진짜 주의 !! 참고) 타입별 메모리 공간 크기 byte : 1byte (8bit) short : 2byte (16bit) int : 4byte (32bit) long : 8byte (64bit) 주의!!) Long과 long 차이 비교 Long과 long은 다르다. 예를 들어 다음과 같은 spring 코드가 있다. @Id @GeneratedValue(strategy = Generati.. 2024. 1. 6.
리터럴이란 ? 김영한님의 java-start 강의를 듣고 작성하였습니다. 아주 자주 언급되진 않지만 리터럴이라는 개념이 있다. Literal 리터럴은 어원 자체로 "문자" 또는 "글자"를 의미한다. 프로그래밍 공부에서 리터럴은 사용자(개발자)가 직접 입력해 넣은 값 자체를 의미한다. 즉, 리터럴은 "변하지 않는 값" 이라고 할 수 있다. int a = 10; char b = 'b' String c = "java" 여기서 a, b, c는 변수, 10, b, java가 리터럴이다. 이처럼 개발자가 고정해놓은 값을 리터럴이라고 하고, 이 값은 직접 써넣은 것이기에 당연히 변하지 않는다. 위 코드에서 변할 수도 있는 것은 a, b, c이지, 값 자체인 10이 변할 일은 없기 때문이다. 2024. 1. 6.