
참고 : https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html JVM이란? Java, Scala 같은 언어로 작성된 코드를 실행시켜주는 프로그램 1. JVM은 JRE의 일종이라고 할 수 있다. 2. JVM은 java 프로그래밍 언어에 대하여 모른다. class 파일 형식을 알고 있음 3. OS, hardware spec에 의존적이지 않다. 정확히 말하면 complie 된 class 파일이 환경에 의존적이지 않다. 그러나 JVM은 환경에 의존적이다. (자신의 PC환경에 맞는 JVM이 필요하다.) 이런 부분에서는 JVM은 인터페이스 간의 호환성을 해결해주는 Adapter의 역할을 한다. JVM의 내부구조 RunTime 영역 (Run Time Data..

➡️ Java Lambda 1️⃣ 메서드를 하나의 식으로 표현한 것 2️⃣ 매개변수를 전달받아 값을 반환하는 짧은 코드 블록 3️⃣ 메서드의 인자로 넘기거나, 결괏값으로 반환될 수도 있음 Syntax 가장 간단한 람다표현식은 단일 매개변수, 표현식이 포함 1. 값 할당 2. 'if', 'for'와 같은 문 위의 2개는 포함 불가 ( 람다 표현식에 한하여 ) case1 : paramter -> expression case 2 : (parameter1, parameter2) -> expression 둘 이상의 매개변수는 괄호로 묶어줍니다. 중괄호로 묶인 block lambda에는 lambda expression과 달리 변수, loop, if 등을 넣을 수 있음 ( parameter1, paramter2 ) ..

산술 연산자(Arithmetic Operator) ➕ 요약 덧셈 + a와 b를 더함 뺄셈 - a와 b를 뺌 곱셈 * a와 b를 곱함 나눗셈 / a와 b의 몫 나머지 % a와 b의 나머지 ➕ 다른 타입과의 사용 int + long, short + long, byte + float 다른 타입끼리 연산수 행시 더 큰 타입으로 캐스팅 후 연산 1️⃣ int + long -> long + long 2️⃣ byte + long -> long + long 3️⃣ int + float -> float + float 그 외 long 제외 정수형의 연산은 모두 int type으로 변환 후 연산됩니다. JVM에서 내부적으로 4byte이하 정수형의 연산은 모두 int로 변환합니다. ➕overflow 결과 -2147483648..

의외로 숨겨진 규칙이 많은 자동 형 변환(type autoCasting)#️⃣ 산술 혹은 대입시 컴파일러가 수행하는 타입 변환 작은 크기의 타입에 저장된 값을 큰 크기의 타입에 저장할 때 자동으로 발생된다. 타입을 크기순으로 정렬하였습니다.(단위 byte) byte(1) - char(2) - short(2) - int(4) - long(8) - float(4) - double(8) 좌측에서 우측으로의 묵시적 변환은 가능하지만 역순은 불가능합니다.(명시적 변환 제외) float과 double은 부동소수점 표현방식을 사용하므로 더 큰 범위를 표현할 수 있습니다. 몇 가지 예시와 함께 설명하겠습니다. 1. 정수형 int(4byte) -> long(8byte) 더 큰집(타입)으로 묵시적으로 변환되어 할당된다. ..

안녕하세요 오늘은 Java primitive type에 대하여 여행을 떠나볼까요? 안녕 primitive type 원시 타입! 목차 0. 특징 1. 요약 2. 타입에 대한 설명 ( int, boolean 제외) 0. 특징 primitive type은 기본적으로 not null의 특징이 있어 조금 더 안전하지 않을까(?) 생각도 됩니다. 하지만 특수한 상황에 있어 wrapper 형식이 필요할 때도 있습니다. 외부 프로그램(DB)과 연동 시 외부에서는 null을 허용할 수도 있으며 제네릭을 사용할 시 wrapper 형식이 필요합니다. primitive type과 references type을 혼용 시에도 주의가 필요합니다. (references type은 주소를 비교) Integer i1 = new Inte..

internal consistency: 1. Java 11을 사용하며 예시에 나온 코드가 다를 수 있습니다. 2. 참조 : baeldung https://www.baeldung.com/java-equals-hashcode-contracts 목차 0. 언제 사용하지? 1. 사전 지식 + 규칙 2. 간단한 예시 3. 나올지도? 실패 케이스 0. 언제 사용하지? 저의 경우 웹서비스 기반의 개발만 해보아서 equals, hashCode의 필요성을 많이 못 느꼈습니다.관계형 DB의 데이터를 가져와 해당 row의 식별자 값으로 비교를 하였으나 식별자가 없는 object를 다루는 경우 많은 도움이 될 것 같습니다. 1. 사전 지식 + 규칙 사전 지식 1. 동일성 완전히 동일한 것 을 의미 ( 두 객체의 주소 값이 같..
생성자 호출 순서 2. 주 생성자 호출(상위 클래스 생성자 우선 호출) -> init{} 처리 -> 보조 생성자(optional) type casting val value: Any = "string" val castingResult = value as String println(value) A as B A의 타입을 B 타입으로 캐스팅 한다. fun main() { val value: Any = "string" val castingResult = value as Boolean println(value) } 캐스팅이 될 수 없을때는 java.lang.ClassCastException 예외를 던집니다. safe type casting 1. is 사용 val value: Any = 123.01 if(value ..
builder pattern은 인스턴스 생성 전략(?) 정도로 봐주시면 좋습니다. kotlin으로 작성하였지만 사실 kotlin이 제공해주는 기능때문에 kotlin에서는 builder pattern이 필요없다고 생각합니다. 일단 시작하겠습니다. 언제 사용하지? 1. class에 생성자가 많고 복잡하여 실수가능성이 있다. 2. optional한 필드가 많다. 어떻게 작성하지?(나름대로의 작성법) 1. required member는 builder 생성자 내부에 작성 2. optional member, auto Input member는 builder 생성자 외부에 작성 3. build class 생성자는 private 접근 제어자 설정 4. build'er' class의 setter들은 builder clas..
- Total
- Today
- Yesterday
- boot 일대다
- 다대일
- 자사서비스
- jvm
- 자바
- jdk11
- 스타트업
- 백준 제로 자바
- Spring
- java8
- 프로그래머
- mappedby
- 백엔드
- jre11
- JDK8
- boot
- 개발자채용
- jre
- 관계설정
- 스택
- 문제
- 백준 제로
- ㅃ
- JPA
- 코딩테스트
- springboot
- JDK
- 백준
- 알고리즘
- jre8
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |