java의 컬렉션인 List에 관한 예제에서 기본값을 넣어줄 때 List integerList = List.of(1, 2, 3, 4, 5); List integerList2 = Arrays.asList(1, 2, 3, 4, 5); of() 정적 메서드는 자바 9부터 추가된 메서드이다. 어쨌든 List 값을 넣어주는 것은 동일한 것 같은데 무슨 차이일까 궁금해서 검색해봄. Arrays.asList returns a mutable list while the list returned by List.of is immutable: asList는 불변객체가 아니고 of는 불변객체로 만들어준다. 크게 뭔가 와닿는건 없는데 stackoverflow를 첨부 나중에 더 깨닫게되면 다시 씀. stackoverflow.com..
기본형 특화 스트림인 IntStream과 LongStream에는 정적 메서드인 range와 rangeClosed가 있다. 특정 범위의 숫자를 차례대로 생성해주는 기능을 가진다. 두 메서드 모두 시작 값과 종료 값을 인수로 받는다. public static IntStream range(int startInclusive, int endExclusive) { ... } public static IntStream rangeClosed(int startInclusive, int endInclusive) { ... } 단 하나의 차이점이라면 함수의 인자값에도 힌트가 있듯이 range 메서드는 종료 값을 포함하지 않지만 (endExclusive) rangeClosed 메서드는 종료값을 포함해서 반환한다. (endIn..
Java8부터 추가된 Math 클래스의 정적 메서드를 실습해본다. 기본적으로 자바에 있는 클래스들의 정적 메서드를 많이 알고 활용하는 것이 소스코드의 가독성에서도 좋은 것 같다. 개발자가 구현하려고 하면 할수있지만 괜한 수고를 할뿐더러 예외처리까지 다 적용되어있는 정적 메서드를 쓰는 편이 마음이 편하다. 전부는 아니지만 몇가지만 살펴본다. 더하기 Math.addExact addExact 메서드로 덧셈을 실행한다. 인수값으로 int형 또는 long형 값이 들어올 수 있다. int형과 long형으로 오버로딩 되어있다. MAX값을 넘어서는 값을 보내면 ArithmeticException overflow가 발생한다. @Test @DisplayName("더하기") void addExactTest() throws ..
인터페이스 인터페이스(interface)는 객체의 사용 방법을 정의한 타입이다. 인터페이스는 자바의 다형성을 구현하는 매우 중요한 역할이다. 인터페이스란 클래스와 클래스 사이를 잇는 매개 역할이기도 하다. 인터페이스는 추상 클래스의 일종이기도 하지만 추상 클래스보다 추상화 정도가 높다. 인터페이스는 개발코드와 객체가 서로 통신하는 점점 역할을 한다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메서드를 호출시킨다. 그렇기 때문에 객체의 내부 구조를 알필요가 없고 인터페이스의 메서드만 알고 있으면 된다. 인터페이스는 일종의 약속 또는 사용명세서라고 할 수 있다. 인터페이스를 중간에 매개 역할로 사용하는 것은 이 인터페이스 안의 구현체가 어떻게 구현되어있는지는 몰라도 어떻게 동작할 것인지 ..
기본 (Primitive) 타입 종류와 값의 범위 그리고 기본 값 모든 변수에는 타입(Type)이 있으며, 타입에 따라 저장할 수 있는 값의 종류와 범위가 달라진다. 변수를 선언할 때 주어진 타입은 변경할 수 없기 때문에 변수를 선언할 때 어떤 타입을 사용할지 충분히 고려해야한다. 기본 타입이란 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입을 말한다. 메모리에는 0과 1을 저장하는 최소 기억 단위인 비트(bit) 가 있다. 8개의 비트를 묶어서 바이트(byte) 라고 한다. 자바는 기본적으로 정수 연산을 int 타입으로 수행하고 실수 연산을 dobule 타입으로 수행한다. 저장하려는 값이 정수형이면 int 타입의 변수에 저장하는 것이 좋고 실수형이면 dobule 타입의 변수에 저장하는 것이 좋다..
JVM이란 무엇인가 자바 가상 머신(Java Virtual Machine, JVM)은 자바 바이트코드를 실행 할 수 있는 기계이다. 자바가 내세우는 Write once, run anywhere (한번만 작성하면 어디서든 실행 가능) 가 의미하는 것은 바이트코드로 변환된 코드는 플랫폼(Window, Mac, Linux)에 상관없이 JVM에서 실행이 되기 때문이다. JVM에서 바이트코드를 변환한 네이티브코드(기계어)는 OS에 특화된 코드로 변환되기 때문에 JVM 자체는 플랫폼 자체에 종속적이다. JVM은 자바 가상 머신이지만 자바에만 의존 하는 것은 아니다. 바이트코드만 만들어 낼 수 있으면 JVM이 실행할 수 있기 때문에 코틀린이나 groovy 또는 scalar 언어들도 JVM위에서 실행할 수 있다. 컴파..
- Total
- Today
- Yesterday
- mybatis config
- oracle
- LocalDateTime
- k8s
- LocalDate
- intellij
- Bash tab
- jQuery
- window
- Kotlin
- 북리뷰
- 오라클
- input
- docker
- localtime
- JavaScript
- Spring Security
- maven
- mybatis
- Mac
- Linux
- 베리 심플
- config-location
- springboot
- rocky
- Github Status
- Spring
- svn
- elasticsearch
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |