나 또한 예전에는 Optional은 있을수도 있고, 없을수도 있는 그런 필드에 사용해야지.단순히 이렇게만 생각하고, 넘어갔던적이 있었다.또한, 대부분의 사람들은 Null을 반환하게 되면 NPE가 터지니까 Optional을 이용해서 null을 감싸서 사용해요.라고 생각하
클래스 안에 있는 멤버변수를 필드라고 한다.student1 = new Student();에서메모리에 x001번지에 실제 student 인스턴스가 만들어지고 참조값(주소)를 student1변수에 저장한다.우리는 앞으로 메모리에 올라가있는 인스턴스에 접근을할때 Studen
자바에서 참조형을 이해하는것은 중요하다.변수의 데이터 타입을 가장 크게보면, 기본형과 참조형 두가지로 구분할 수 있다.기본형: int,long,double,boolean처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입참조형: Student student1,int
프로그래밍 방식은 객체지향 프로그래밍, 절차지향 프로그래밍 2가지로 나뉜다.절차 지향은 데이터와 데이터에 대한 처리방식이 분리되어있는것이고,객체지향에서는 데이터와 그 데이터에 대한 행동이 하나의 객체 안에 포함이 되어있다.절차지향에서 객체 지향으로 점진적으로 코드를 변
MemberInitMethodInitMain3이제 메서드호출을 통해 객체의 필드를 초기화 해줬다.참고: this.를 파라미터와 필드명이 다르면 쓰지 않아도 된다. 같으면 써야함만약 이름이 다르다면 안쓰는것을 추천생성자를 사용함장점: 파라미터 누락을 방지할 수 있음생각
Speaker객체를 만들고, volume을 100이상 못넘어가게 만들었다.메서드 호출로는 100이상 올라가지 못하지만, 필드에 직접접근하면 필드를 바꿀수 있다. -> 접근제어자가 없기 때문이다.그러면 해당 객체의 필드에 외부에서 직접 접근하지 못하게 하려면 privat
메서드영역프로그램을 실행하는데 필요한 공통 데이터 관리, 프로그램의 모든 영역에서 공유클래스 정보: 클래스의 실행코드, 필드, 메서드, 생성자등static영역: static 변수를 보관런타임 상수: 리터럴 상수스택영역: 각 스택프레임은 지역변수, 중간 연산 결과, 메서
Final 키워드가 붙으면 더이상 값을 변경할 수 없다.지역변수 final에 할당시 값을 변경 할수 없다.파라미터 final에 할당시 값을 변경 할수 없다.생성자를 통해 한번만 초기화가 가능하다.final 필드를 필드에서 초기화하면 이미 값이 생성되었으므로 생성자를 통
상속을 하려면 extends를 사용한다.부모 클래스(슈퍼 클래스): 상속을 통해 자신의 필드와 메서드를 다른 클래스에 제공하는 클래스자식 클래스(서브 클래스): 부모 클래스로 부터 필드와 메서드를 상속받는 클래스자식클래스는 부모의 필드와 메서드를 모두 물려받으므로 부모
다형성을 사용하면 하나의 객체가 다른 타입으로도 사용될 수 있다.다형적 참조PolyMain코드를 보면 부모 변수가 자식 인스턴스를 참조 할 수 있다.그러나 자식은 부모를 참조 할 수없고, 부모는 자식 메서드를 호출 할 수 없다.poly.childMethod()->컴파일
자바가 기본으로 제공하는 라이브러리중에 가장 기본이 java.lang이다.java.lang패키지의 대표적인 클래스Object: 모든 자바 객체의 부모 클래스StringInteger,Long,Double: 래퍼타입,기본형 데이터 타입 -> 객체로 만든것Class: 클래스
자바의 데이터 타입은 크게 기본형과 참조형으로 나눈다.기본형: 하나의 값을 여러변수에서 절대 공유하지 않는다.참조형: 하나의 객체를 참조값을 통하여 여러 변수에서 공유한다.기본형int a = 10;int b = a; //a의 값을 복사해서 대입b = 20; // b를
String은 int,boolean과 같은 기본형이 아닌 참조형이다.String 클래스에 가보면 실제 문자를 저장할수있는 value 배열이 존재함을 알 수 있다.이러한 필드를 바탕으로 메서드를 String 클래스에서 제공한다.참고: 자바 9이전에는 byte가 아니라 c
java.lang의 대표 클래스Object: 모든 자바 객체의 부모 클래스StringInteger,Long,Double: 래퍼타입System: 시스템과 관련된 기본기능lang은 임포트 안해도됨모든 클래스의 최상단에는 Object가 있다.child -> parent ->
int,double,boolean과 같은 타입은 기본형 타입이다.기본형은객체가 아님그래서, 유용한 메서드 제공 불가null값을 가질 수 없음int는 기본형 타입으로 데이터 쪼가리지반, int값을 가지고 클래스를 만들면된다.마치 int를 클래스로 감싸서 만드는것 처럼 보
discount메서드의 파라미터의 grade 문자열에 따라 할인금액을 반환하는 메서드이다.basic,diamond는 정상적으로 금액이 반환되었으나,존재하지 않는 VIP등급이나, DIAMONDD처럼 문자의 오타 같은 경우, 정상적으로 할인금액을 반환하지 못하고 있다.등급
자바 날짜와 시간 라이브러리 소개 LocalDate,LocalTime,LocalDateTime LocalDate: 날짜만 표현 LocalTime: 시간만 표현 LocalDateTime: LocalDate와 LocalTime을 합한 개념 ex) 2024-04-11T08
중첩 클래스: 클래스 안에 클래스를 중첩해서 정의한것중첩클래스는 4가지가 있다.정적 중첩 클래스내부 클래스 종류내부 클래스지역 클래스익명 클래스정적 중첩 클래스static이 붙는다.바깥 클래스의 인스턴스에 소속되지 않는다.내부 클래스static이 붙지 않는다.바깥 클래
예외 계층 그림예외도 객체이다. 모든 객체의 최상단은 Object이므로 Object부터 시작한다.Throwable: 최상위 예외이다.Error: 개발자가 해결할 수 없는 예외이다. 개발자는 해당 예외를 잡으려고 하면 안된다.Exception: 체크 예외Exception
단순하게 data를 보관하고 꺼내는 class를 만든다고 치자.Integer를 집어넣고 꺼내는 class이다.String을 집어넣고 꺼내는 class이다.이렇게하면 컴파일 시점에 integerBox.set("string은안돼"); 를 하면 잡을 수 있다.그러나 Bool
배열 리스트의 단점배열리스트는 내부에 배열을 사용해서 데이터를 저장한다.배열의 사용하지 않는 공간 낭비배열은 필요한 배열 크기를 미리 확보해야한다. 만약 부족하면 그때가서 size를 2배로 늘린다. 데이터가 얼마나 추가될지 모르는 경우 나머지는 사용되지 않는다.배열의
자바는 배열 뿐만 아니라 컬렉션 프레임워크라는 이름으로 다양한 자료구조를 제공한다. 배열에서 자료를 찾을때 인덱스를 사용하면 입력,변경,조회의 경우 한번의 계산으로 자료 위치를 찾을 수 있다.