Java 11Java 11은 LTS 버전Java 파일 실행 방법의 변화이전까지는 java 파일을 실행하기 위해서 컴파일을 해야 실행할 수 있었다.별도의 패키지를 명시할 필요도 없이 실행할 수 있다.클래스가 있는 해당 디렉토리에서 javac가 아닌 java 명령어로 실행 가능하다.셔빙 파일 (shebang file)맨 앞에 "#!"로 시작하고 실행 파일이 정의되어있어야 한다.쉘 스크립트 같이 필요한 기능을 만들어 사용할 수 있도록 돕는 용도// Shebang 파일#!/usr/bin/java --source 11public class NoCompile { public static void main(String [] args){ System.out.println("This is script with java..
Java 10Var누가 봐도 명시적으로 타입을 지정할 수 있을 때에는 타입에 var를 사용할 수 있다.조금이라도 명확하지 않으면 컴파일 에러가 발생한다.var hello = "Hi! This is God of Java Book.";제네릭 사용 시 var를 사용할 수 없다.var를 사용하는 것은 최대한 자제하는 것이 좋다.오히려 가독성이 떨어질 수 있기 때문Collection수정 불가능한 Collection (Unmodifiable collection)이 있다List.of() 메소드로 만들어진 Collection은 수정 불가능한 Collection이다. Unmodifiable collection은 add() 메소드를 사용해 요소를 추가할 수 없다.이미 선언된 List를 수정 불가한 Collection으로 ..
Java 9java 버전 중 LTS 버전이 아닌 버전은 사용하지 않는 것이 좋다.Spring 프레임워크 사용 시에도 사용할 수 있는 java 버전이 정해져 있기에 확인 후 사용하는 것이 좋다.String 클래스문자열에 있는 값들을 char 배열에서 byte 배열로 변경했다.성능 개선과 메모리 효율을 위해서 변경함.private final byte coder;static final byte LATIN1 = 0;static final byte UTF16 = 1;String 클래스 내부에 다음과 같은 변수들이 존재한다.문자열에 2 byte짜리 문자가 포함되어 있으면 coder 값을 UTF16으로 지정하고 그렇지 않으면 LATIN1로 값을 지정한다.이러한 방식을 Compact String 이라고 한다.Java ..
Lambda 표현식람다 표현식은 익명 클래스의 가독성 문제를 보완하기 위해 만들어졌다.인터페이스에 메소드가 "하나"인 것들만 적용이 가능하다.익명 클래스 람다 표현식으로 서로 전환이 가능하다.Java 인터페이스 중 메소드가 하나인 인터페이스java.lang.Runnablejava.util.Comparatorjava.io.FileFilter 등이 있다.....기본 람다 표현식을 구성하는 구성 요소매개 변수 목록 : (int x, int y)와 같은 형태화살표 토큰 : ->처리 식 : x + y 의 형태좌측에는 넘겨지는 매개 변수들의 타입이 선언되고, 중간에는 화살표 연산자, 가장 우측에는 리턴되는 값을 표시한다.// 람다 표현식 사용을 위한 메소드 1개인 인터페이스 생성interface Calculate..
Java 8Lambda(람다) 표현식Functional(함수형) 인터페이스StreamOptional인터페이스의 기본 메소드 (Default Method)날짜 관련 클래스병렬 배열 정렬StringJoinerjava.util.Optional객체를 편하게 처리하기 위해서 만든 클래스Object 클래스를 확장한 Generic한 final 클래스다.Optional 클래스는 하나의 깡통과 같다.물건을 넣을수도 아무 물건이 없을 수도 있다.new Optional();Optional 클래스는 위와 같이 객체를 생성하지 않는다.Optional 클래스의 객체 생성 방법empty() : 데이터가 없는 Optional 객체를 생성하는 메소드ofNullable() : null이 추가될 수 있는 상황에서 객체를 생성하는 메소드o..
Java 7에 추가된 것들Fork / JoinJava 7에서 추가된 클래스 중 Fork / Join과 관련된 클래스들이 존재한다.Fork / Join은 어떤 계산 작업을 할 때 "여러 개로 나눠 계산한 후 결과를 모으는 작업"이다.Fork는 여러개로 나누는 것Join은 나눠 작업한 결과를 모으는 것Fork / Join에 Work stealing 개념이 포함되어 있다.Work stealing : 작업의 여유가 있는 Queue에서 작업이 많은 Queue의 작업들을 가져가서 일을 하는 것을 의미한다. // Fork / Join 작업의 기본 개념if (작업의 단위가 충분히 작을 경우) { 해당 작업을 수행} else { 작업을 반으로 쪼개어 두 개의 작업으로 나눔 두 작업을 동시에 실행, 두 작업이 끝날 때까지..
Java 7Java 7의 대표적인 변경 사항숫자 표시 방법 보완switch 문에서 String 사용제네릭을 쉽게 사용할 수 있는 Diamond예외 처리시 다중 처리 가능숫자 표시 방법정수형 숫자 표현 시 숫자 앞에 접두사가 없으면 10진수로 인식한다.숫자 앞에 0을 넣으면 8진수로 인식한다.숫자 앞에 0x를 넣으면 16진수로 인식한다.Java 7 부터 2진수 표현이 추가됐다.2진수는 숫자 앞에 0b를 넣으면 2진수로 인식한다.int decVal = 1106; //1106의 10진수int binaryVal = 0b10001010010; //1106의 2진수int octVal = 02122; //1106의 8진수int hexVal = 0x452; //1106의 16진수// 모두 값이 1106으로 나온다.Ja..
요약 문제 풀이1. String 클래스와 StringBuilder, StringBuffer 클래스의 차이를 정리해 주세요.String, StringBuffer, StringBuilder 모두 CharSequence를 구현한 문자열을 다루는 클래스다.String 객체는 immutable 하기에 한 번 만들면 값을 바꿀 수 없다.기존 문자열에 String 문자열을 더하면 기존 객체는 버려지고 새로운 객체가 생성된다.StringBuilder와 StringBuffer는 이러한 String의 단점을 보완하기 위해서 문자열을 더하더라도 새로운 객체가 생성되지 않는다.StringBuffer는 Thread Safe 하기 때문에 여러 쓰레드에서 동시에 접근하는 경우 사용하기에 적합하다.StringBuilder는 Thre..
자바의 예약어자바의 예약어는 총 51개가 있다.그 중 const, goto 예약어는 더 이상 사용하지 않는다.타입과 관련된 예약어 (8개)타입설명byte8 bit 정수형short16 bit 정수형int32 bit 정수형long64 bit 정수형float32 bit 실수형double64 bit 소수형char0 ~ 65,535 범위를 갖는 정수형 (unsigned)booleantrue, false 만 존재하는 타입클래스, 메소드, 변수 선언, 객체 생성과 관련된 예약어 (26개)타입설명package클래스의 패키지를 선언할 때 사용하며 코드 내 단 한 번만 지정할 수 있다.import다른 패키지에 있는 클래스 및 선언된 요소들을 사용하기 위해서 사용한다.interface인터페이스 선언 시 사용한다.abstra..
네트워크 프로그래밍다른 장비와 데이터를 주고 받는 작업을 네트워킹(networking)이라고 한다.네트워킹은 OSI 7 layer로 구분되어 있다.OSI 7 layer 중 자바에서 활용하는 대표적인 레이어들은 무엇이 있을까?Application layer의 HTTP(Hypertext Transfer Protocol), FTP(File Transfer Protocol), Telnet은 모두 TCP 통신을 한다.TCP 통신을 한다면 Transport layer에서의 처리를 자바 API 사용 시 알아서 처리해준다.Transport layer의 TCP(Transmission Controll Protocol)는 "연결 기반 프로토콜"로 상대방이 데이터를 받았는지 확실히 보장할 수 있지만 UDP(User Datag..