OptionalOptional지네릭 클래스로 'T타입의 객체'를 감싸는 래퍼 클래스이다. Optional 타입의 객체에는 모든 타입의 참조변수를 담을 수 있다.최종 연산의 결과를 그냥 반환하는게 아니라 Optional 객체에 담아서 반환함반환된 결과가 null인지 매번 if문으로 체크하는 대신 Optional에 정의돈 메서드를 통해서 간단히 처리할 수 있다. Optional객체 생성하기of() / ofNullable() Optional 객체의 값 가져오기get()을 사용한다.값이 Null일 때는 NoSuchElementException이 발생하며, 이를 대비해서 orElse()로 대체할 값을 지정할 수 있다.
전체 글
Functional f =(String s) -> Integer.parseInt(s) Functional f = Integer::parseInt 종류 람다 메서드참조 static메서드 참조 (x)->ClassName.method(x) ClassName::method 인스턴스메서드 참조 (obj,x)->obj.method(x) ClassName::method 특정 객체 인스턴스메서드 참조 (x)->obj.method(x) obj::method
객체 지향 프로그래밍프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고,객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법코드의 재사용성이 높다코드의 관리가 용이하다신뢰성이 높은 프로그래밍을 가능하게 한다객체와 인스턴스클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화어떤 클래스로부터 만들어진 객체를 그 클레스의 인스턴스라고 함인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야함 상속의 오해'공통된 기능을 여러 객체에게 전달하고 싶을 때' 라고 생각하기 쉽지만 근본적인 의도가 아님!원자 > 물질 > 생물 > 동물> ... 추상화가 되야함new 연산자를 이용해서 객체를 직접 만들지 못하게 할 수 있음 abstract class Lo..
지네릭스다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능타입의 안정성을 제공타입체크와 형변환을 생략할 수 있으므로 코드가 간결해짐타입설명TypeElementKeyValueNumberR, A, U 등등도 존재한다 class Box{ T item; void setItem(T item){ this.item = item; } T getItem(){ return item; }}Box box = new Box()box.setItem("ABC");// 이런식으로 변환됌class Box{ String item; void setItem(String item){ this.item = item; } String getItem(){ ..
서로 관련된 상수를 편리하게 선언하기 위한 것 class Card { static final int CLOVER = 0; static final int HEART = 1; static final int DIAMOND = 2; static final int SPADE = 3; final int kind; } //=> class Card { enum Kind { CLOVER, HEART, DIAMOND, SPADE} final Kind kind; }
컬렉션 프레임워크 핵심 인터페이스와 특징List => 순서가 있는 데이터의 집합 / 데이터 중복 허용Set => 순서를 유지하지 않는 데이터의 집합 / 데이터 중복 허용XMap => 키와 값의 쌍으로 이루어진 데이터의 집합 / 순서 유지X 키 중복 허용X 값 중복 허용 List Interfacevoid add(int index, Object element) / boolean addAll(int index, Collection c)Object get(int index)int indexOf(Object o)int lastIndexOf(Object o)ListIterator listIterator() / ListIterator listIterator(int index)Object remove(int index..
자바 언어의 특징운영체제에 독립적이다운영체제나 하드웨어가 아닌 JVM하고만 통신 자동 메모리 관리 (가비지 컬렉터)네트워크 분산처리 지원멀티쓰레드 지원동적 로딩 지원 JVM Java compiler 가 .java 파일을 .class 라는 Java bytecode로 변환Java compiler => JDK를 설치하면 bin 에 존재하는 javac.exe바이트 코드는 다시 실시간 번역기 또는 JIT 컴파일러에 의해 바이너리 코드로 변환JIT 컴파일(just-in-time compliation) : 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일러실제 바이트 코드를 실행하는 시점에서 자바 가상 머신(JVM, 정확히는 JRE)이 바이트 코드를 JIT 컴파일을 통해 기계어로 변환구성요소{ 클래스..
인텔리제이를 통한 자바 컴파일, 실행 과정 컴파일 자바 코드를 컴파일 하려면 javac 라는 프로그램을 직접 사용해야 하는데, 인텔리제이는 자바 코드를 실행할 때 이 과정을 자동으로 처리해준다. 예) javac Hello.java 실행 자바를 실행하려면 java 라는 프로그램을 사용해야 한다. 이때 컴파일된 .class 파일을 지정해주면 된다. 예) java Hello , 참고로 확장자는 제외한다. 인텔리제이에서 자바 코드를 실행하면 컴파일과 실행을 모두 한번에 처리한다. 인텔리제이 덕분에 매우 편리하게 자바 프로그램을 개발하고, 학습할 수 있다 자바 개발과 운영 환경 개발할 때 자바와 서버에서 실행할 때 다른 자바를 사용할 수 있다. 개발자들은 개발의 편의를 위해서 윈도우나 MAC..
연산자 우선순위 암기법상식선에서 우선순위를 사용하자 애매하면 괄호를 사용하자 변수의 접근 가능한 범위를 스코프(Scope)라 한다. 참고로 Scope를 번역하면 범위라는 뜻이다.
메서드 사용메서드 호출과 용어정리메서드를 호출할 때는 메서드에 넘기는 값과 매개변수(파라미터)의 타입, 순서, 개수가 맞아야 한다. 인수(Argument)"hello" , 20 처럼 넘기는 값, 한글로 인수 또는 인자라 한다. 매개변수(Parameter)메서드를 정의할 때 선언한 변수인 String str , int age 를 매개변수, 파라미터라 한다.메서드를 호출할 때 인수를 넘기면, 그 인수가 매개변수에 대입된다. 용어정리인수는 메서드 내부로 들어가는 값을 의미한다. 인자도 같은 의미이다.매개변수는 메서드 호출부와 메서드 내부 사이에서 값을 전달하는 역할을 하는 변수라는 뜻이다.
while vs forfor장점초기화, 조건 체크, 반복 후의 작업을 한 줄에서 처리할 수 있어 편리하다.정해진 횟수만큼의 반복을 수행하는 경우에 사용하기 적합하다.루프 변수의 범위가 for 루프 블록에 제한되므로, 다른 곳에서 이 변수를 실수로 변경할 가능성이 적다. 단점루프의 조건이 루프 내부에서 변경되는 경우, for 루프는 관리하기 어렵다.복잡한 조건을 가진 반복문을 작성하기에는 while문이 더 적합할 수 있다.while문장점루프의 조건이 루프 내부에서 변경되는 경우, while 루프는 이를 관리하기 쉽다.for 루프보다 더 복잡한 조건과 시나리오에 적합하다.조건이 충족되는 동안 계속해서 루프를 실행하며, 종료 시점을 명확하게 알 수 없는 경우에 유용하다. 단점:초기화, 조건 체크,..
인덱스배열의 위치를 나타내는 숫자를 인덱스(index)라 한다. 기본형(Primitive Type)int , long , double , boolean 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입 참조형(Reference Type)int[] students와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입 변수[1차원인덱스] [2차원인덱스] [3차원인덱스] 다차원 배열 구조스택[5번지](5번지) -> 변수[0](10번지) 변수[1](30번지) -> 1차원(10번지) -> (50번지) (70번지) (null) -> 2차원(50번지) -> 변수[0](값1) 변수[1](값2) -> 3차원