배열과 달리 각 인덱스별 타입을 다르게 설정할 수 있음input 파라미터와 return 값의 타입을 모두 정의return 값의 타입이 명확한 경우, return 타입 생략 가능옵셔널 파라미터 : ? 를 이용하여 옵셔널 파라미터임을 표현anyunion 변수 선언함수 in
:= 연산자로 선언선언 키워드(var, const) 불필요함수 내의 지역변수로만 사용 가능(함수 외부 전역변수로 사용 불가)선언-초기화 동시에 수행용량만큼의 버퍼를 생성함용량을 생략할경우 용량은 길이와 동일런타임에서 길이가 용량을 초과할경우, 용량을 확장한다. (cap
union을 사용할 경우Generic을 사용하면 해당 타입의 속성을 그대로 사용할 수 있다.interface에 적용함수에 적용상속 타입도 가능keyof로 타입 제한interface 호환오른쪽에 있는 type이 같거나 더 큰 범위의 변수를 가져야 가능하다.함수 호환오른쪽
컴파일러에서 의도한 타입으로 추론이 되지 않을 경우 명시적으로 타입을 정해줌런타임에는 영향을 미치지 않는것이 타입캐스팅과 차이가 있음non-null assertion타입추론으로 null 발생이 가능한 값인, if절로 null처리할 필요없이 해당 값이 null이 아니란
Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and netw
문자열을 일반 + 연산으로 연결할 시에 매번 새로운 문자열 조합의 객체를 생성한다.buffer 기반의 strings.Join 함수를 이용하면 비효율적인 연산 문제를 해결할수 있다.길이 고정value 타입 => 전달시 복사 전달비교연산자 사용 가능길이 가변referenc
pointer를 이용하여 자바, 파이썬, C- Go에서 주소 값을 직접 변경은 불가능하다.=> 잘못된 주소값 조작으로인한 오류를 방지하기위해\*(에스터리스크) 사용nil로 초기화 (nil==0)func 함수이름 (입력파라미터)(리턴파라미터)함수 이름 첫글자가 소문자면
객체지향적인 추상화를 구조체로 정의한다자바의 클래스와 유사하지만 필드만 있고 매소드는 갖지 않음=> 리시버를 통해 매소드를 구조체와 연결구조체 포인터 선언방법 3가지리시버인 경우에는 매소드에 선언한 구조체 타입이 포인터형인 경우, 실제 생성 객체가 포인터형이 아니어도
ArrayList는 자바로 개발을 하면서 가장 많이 쓰는 클래스 중 하나이다. ArrayList 타입의 객체를 배열로 변환하려 할때는 아래와 같이 사용한다. strs.toArray(new String[0]); 은 어떻게 동작하는 것일까? "ArrayList ext
매소드 정의. 자바 컴파일러가 매소드를 구별할 수 있는 기준이 된다.매소드 시그니처가 같은 경우, 중복된 매소드 정의로 판단하여 컴파일 오류가 발생하게 된다.매소드 이름파라미터 정의(갯수, 순서, 타입)만약 리턴 타입만 다른 두 매소드가 존재할수 있도록 매소드 시그니처
k, x 는 정수일 때,10진 소수 표현 => k/((2\*5)^x) 2진 소수 표현 => k/2^x=> 10진 소수를 2진 소수로 표현할 수 없는 값들이 존재함예를들어, 0.2를 2진 소수로 변환해보자10진 소수를 2진수로 변환하는 방법10진 소수에 2를 곱한 값이
실행순서 클래스 초기화 블럭 -> 인스턴스 초기화 블록 -> 생성자 클래스 초기화 블럭 : 클래스 로더가 클래스를 메모리에 올릴때 최초 한번만 실행 인스턴스 초기화 블록, 생성자 : 인스턴스 생성마다 실행 > 출력 > > class init > instant i
"코드1"과 같은 일반적인 2차원 배열을 선언시에 2차원 연속적인 메모리 할당으로 하나의 참조변수에 의해 관리되는 것처럼 생각될 수 있습니다.하지만, 실제로는 2차원 배열이 연속적인 메모리가 할당된 별도의 정적 자료구조가 아니고 값을 저장하는 1차원 배열들과 각 1차
equals와 hashCode 매소드는 모든 클래스의 상위 클래스인 Object 클래스에 정의된 매소드객체의 논리적 동치성을 검사할 필요가 없는 경우equals가 논리적 동치성보다는 인스턴스 고유의 본질을 비교에 적합한 경우(동일한 메모리에 할당)객체의 논리적 동치성
여기에서 말하는 상속은 클래스가 다른 클래스를 확장하는 구현상속만을 말합니다.클래스가 인터페이스를 구현하거나, 인터페이스가 다른 인터페이스를 상속하는 것과는 무관합니다.상속이란 상위클래스를 확장할 목적으로 하위클래스를 정의하는 것상속은 올바르게 사용하면 코드를 재사용하
선언된 추상매소드가 단 하나만 존재하는(구현매소드는 상관없음) 인터페이스(or 추상클래스)를 별도의 클래스 선언으로 확장하지 않고 코드부에서 바로 구현하는 기술입니다.아래 코드를 봅시다. 위와 같이 스레드 객체를 생성할때 Thread 인스턴스 생성자 파라
JCP는 1998년에 설립되어 전세계 커뮤니티 멤버들이 JDK의 향후 버전 및 기능에 대해 제안, 검토, 정의하는 표준화 과정 입니다. JCP 과정에서는 JDK의 신규 스펙 및 기술을 기술하는 공식 문서인 JSR을 사용합니다.JLS는 JSR 표준 스펙을 버전별로 구체화
비교대상변수가 case 조건에 일치하면 해당 절의 로직이 실행됩니다.비교대상변수가 일치하는 case 조건이 없으면 아무일도 일어나지 않습니다.=> default 절이 명시되어 있으면 일치하는 조건이 없을때 default 절이 실행됩니다.fall through : cas
값의 집합으로 이루어진 간단한 객체를 심플하게 개발하기위해 고안되었습니다.immutable data를 다룰 class 구현에 최적화되어있습니다.웹서비스 구현에서 많이 사용되는 DTO 개념에 적용하면 유용합니다.생성자, accessors(getter), equals(),
Java 9의 가장 큰 특징은 직소(jigsaw) 프로젝트를 이용한 모듈 시스템 도입입니다.라이브러리와 규모가 큰 시스템을 모듈화하고 강력한 접근 제어=> 캡슐화를 통한 느슨한 결합으로 유지관리성 향상=> 불필요하고 비인가된 모듈 간 결합을 방지하여 모듈의 올바른 사용
Java 8에서 도입된 Stream 인터페이스를 이용하면 시퀀셜한 객체들의 연산을 간편히 할 수 있습니다.Java 8부터 인터페이스도 default 라는 키워드로 구현 매소드를 정의할 수 있게 되었습니다. Collection 인터페이스의 default 매소드인 stre
java에는 데이터 입력, 출력과 관련하여 다음과 같은 추상클래스가 정의되어 있습니다. InputStream구현 클래스AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, ObjectIn
primitive 타입과 String 을 정규식 구분자(delimiter pattern)를 이용해 파싱할 수 있는 심플한 텍스트 스캐너입니다.키보드 입력, 파일, 입력 스트림 등 입력 데이터를 처리하는데에 활용할 수 있습니다.Scanner(File source)파일 객
스핀락이란 다른 스레드가 임계영역에 lock을 점유한 상황에서 lock을 반환하기 까지 계속 loop를 돌며 확인하고 기다리는 것입니다.뮤텍스(Mutex)의 경우에는 다른 스레드가 lock을 점유한 경우에 sleep 상태로 빠집니다. 이후 다른스레드가 작업이 끝나고 l
두 개 이상의 작업들이 서로의 작업이 끝나기를 기다리면서 더이상 처리와 응답이 불가능해지는 상태프로세스(스레드)는 아래 4가지 조건을 모두 만족할 경우 교착상태에 빠질 수 있습니다.상호배제 (mutual exclusion)프로세스들이 필요로 하는 자원에 대해 배타적인
참고codeproject article - concurrency vs parallelism
Arrays.stream을 이용하여 배열을 스트림으로 변환제네릭으로 참조타입 T의 배열을 파라미터로 받아서 Stream으로 변환 후 리턴 static Stream stream(T\[] array)유사 매소드 static Stream stream(T\[] ar
Stream의 collect 매소드는 위와 같이 정의되어 있습니다.Supplier supplier : Stream의 요소들을 이용하여 생성할 누적 연산결과 객체BiConsumer<R, ? super T> accumulator : 누적 연산결과를 도출할 함수 정의B