Language 40

[Java] Collection - (1) Collection Framework란? Java Collection Framework는 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미합니다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것입니다. 이러한 컬렉션 프레임워크는 자바의 인터페이스(interface)를 사용하여 구현됩니다. 컬렉션 프레임워크에서는 데이터를 저장하는 자료 구조에 따라 핵심이 되는 주요 인터페이스를 정의하고 있고 그 인터페이스를 상속받은 클래스들로 이루어져 있습니다. 이 중에서 List, Set, Queue, Dequeue 인터페이스는 모두 Collection 인터페이스를 상속(java.util.Collection)받지만, 구조상의 차이로 인해 Map 인터페이스는 별도로 .. Language/Java 2021. 11. 12.
[Java] 반복문 반복문은 어떤 작업이 반복적으로 수행되도록 할 때 사용됩니다. 반목문의 종류로는 크게 for문과 while문이 있고 이것에서 파생된 foreach, do-while이 있습니다. 반복문은 주어진조건을 만족하는 동안 주어진 문장을 반복적으로 수행합니다. for for(초기화; 조건식; 증감식) { //실행구문 } for문은 반복 횟수를 알고 있을 때 적합합니다. 구조가 조금 복잡하지만 직관적이라 오히려 이해하기 쉽습니다. for(int i=0; i=1; i--) { //실행할 구문 } //다양한 증감식을 사용하는 경우 for(int i=0; i Language/Java 2021. 11. 6.
[Java] 조건문 if if문은 가장 기본적인 조건문이며, 조건식과 괄호로 이루어져 있습니다. if문에 사용되는 조건식은 일반적으로 비교연산자와 논리연산자로 구성됩니다. 만약 실행할 문장이 하나뿐이라면 괄호를 사용하지 않고 바로 사용할 수 있습니다. if문은 단일로 if만 사용하거나, if-else로 참일 경우와 거짓일 경우에 사용하거나 if-elseif-else로 여러 조건을 필터링 할 수 있습니다. 하지만 여러 조건을 적용하는 경우 if를 사용하는 것 보다 switch-case가 더욱 적합할 수 있습니다. if문 if (조건문) //true일 경우 실행 if (조건문) { //true일 경우 실행 } if-else문 if(조건문) { //true인 경우에 실행 } else { //false인 경우에 실행 } if-el.. Language/Java 2021. 11. 5.
[Java] Arrays 클래스 Arrays 클래스에는 배열을 다루기 위한 다양한 메소드가 포함되어 있습니다. Arrays 클래스의 모든 메소드는 클래스 메소드(static method)이므로, 객체를 생성하지 않고도 바로 사용할 수 있습니다. 이 클래스는 java.util 패키지에 포함되므로, 반드시 import 문으로 java.util 패키지를 불러오고 나서 사용해야 합니다. 대표적인 메서드는 asList, copyOf, copyOfRange, equals, fill, sort가 있습니다. Arrays은 원시 타입과 제네릭 타입에 대한 메서드들을 제공합니다. 예제는 간편하게 정수형 배열을 기준으로 작성하겠습니다. copyOf public static int[] copyOf(int[] original, int newLength) { .. Language/Java 2021. 11. 2.
[Java] String과 String Pool String 인스턴스 생성 String은 참조 타입 자료형이지만 new 키워드 이외에 리터럴로 생성이 가능합니다. String str1 = "donghwan"; String str2 = new String("donghwan"); Heap과 String Pool 여느 참조 타입 자료구조와 같이 String도 인스턴스를 생성하게 되면 JVM Heap 영역에 메모리를 할당하고 값이 저장됩니다. 하지만 리터럴로 생성하는 경우와 new 키워드를 통해 생성할 때, 차이가 발생하게 됩니다. 리터럴로 String을 생성하게 되면 Heap 영역에 String Pool이라는 곳에 생성되고 new 키워드를 통해 생성하게 되면 Heap에 별도 메모리 영역에 생성됩니다. String a = "aaa"; String b = "a.. Language/Java 2021. 11. 1.
[Java] String의 불변성( Immutable ) Java에서 String은 불변(Immutable) 객체라고 불립니다. 불변 객체란 객체가 생성된 후 상태가 변하지 않고 계속 유지되는 객체를 말합니다. String 인스턴스는 한 번 생성되면 그 값을 읽기만 할 수 있고, 변경할 수는 없습니다. 이제 Java에서 String 왜 불변 객체인지 그리고 그로 인한 장점과 특징이 무엇이 있는지 알아보도록 하겠습니다. 1. String Pool 모든 언어에서 String은 활발하게 사용되는 자료형입니다. 이러한 자료형을 생성하고 삭제하는 것은 많은 자원을 소비하게 됩니다. Java에서는 이러한 현상을 해결하고자 Heap의 String Pool을 활용하여 해결하고 있습니다. String은 참조 타입의 자료형이지만 특이하게도 new 키워드와 리터럴로 모두 생성이 .. Language/Java 2021. 11. 1.
[Java] 동일성과 동등성 ( == vs equals ) Java에서 ==와 equals는 자신의 기준으로 양쪽을 비교하여 boolean의 형태로 결과를 나태내는 역할을 한다는 공통점이 있습니다. 하지만 ==와 equals는 분명한 차이점이 존재합니다. 일단 가장 간단하게 ==는 비교 연산자이고 equals는 메서드입니다. 하지만 가장 중요한 차이점은 동일성과 동등성이라고 볼 수 있습니다. 동일성 동일성은 지금 비교하고 있는 값들이 동일하다는 의미입니다. Java는 실제 값을 저장하는 원시 타입(Primitive Type)과 참조 값을 저장하는 참조 타입(Reference Type)이 있습니다. 이때 원시 타입의 경우는 단순히 값을 비교하여 동일성의 여부를 나타내지만 참조형의 경우 참조 값. 즉, 객체의 주소를 기준으로 동일성을 판단하게 됩니다. ( 하지만 S.. Language/Java 2021. 11. 1.
[Java] orElse vs orElseGet orElse와 orElseGet은 T 타입의 값을 반환한다는 것은 동일합니다. 한마디로 Default 값을 설정하는 함수라고 할 수 있습니다. 하지만 같은 기능으로 동작하지만 파라미터와 동작 방식에서 차이를 보입니다. 시나리오를 부여하여 특정 상황에 걸리는 시간을 기준으로 두 메서드의 차이를 알아보겠습니다. 이번 테스트에는 JMH을 사용해서 걸리는 시간을 확인 해보겠습니다. 테스트 조건은 동일한 워밍업 테스트 5번 후 실제 테스트를 5번 진행하는 방식을 기준으로 작성해보도록 하겠습니다. 1. Optional Value Not Null이 아닐 때, 새로운 인스턴스를 반환하는 경우 orElse @Benchmark public void orElseInitValueExist(Blackhole blackhole).. Language/Java 2021. 10. 29.
[Java] Optional 공식 API 문서에서는 메서드가 반환할 결과값이 ‘없음’을 명백하게 표현할 필요가 있고, null을 반환하면 에러를 유발할 가능성이 높은 상황에서 메서드의 반환 타입으로 Optional을 사용하자는 것이 Optional을 만든 주된 목적입니다. Optional 타입의 변수의 값은 절대 null이어서는 안 되며, 항상 Optional 인스턴스를 가리켜야 한다고 말하고 있습니다. Optional 클래스는 Integer나 Double 클래스처럼 'T'타입의 객체를 포장해 주는 래퍼 클래스(Wrapper class)입니다. 따라서 Optional 인스턴스는 모든 타입의 참조 변수를 저장할 수 있습니다. 이러한 Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메서.. Language/Java 2021. 10. 29.
[Java] 연산자 ( Operator ) '연산자'는 연산을 수행하는 기호를 말합니다. 우리가 아는 사칙연산 부호를 비롯해서 다양한 연산자들이 존재합니다. 연산자가 연산을 수행하려면 반드시 연산의 대상인 '피연산자'가 있어야 합니다. 상수, 변수 또는 식(Expression)을 '피연산자'로 사용할 수 있습니다. '연산자'와 '피연산자'를 조합하여 계산하고자 하는 바를 표한 것을 식(Expression)이라고 합니다. '피연산자'의 개수로 연산자를 분류하기도 하는데, '피연산자'의 개수가 하나면 '단항 연산자', 두개면 '이항 연산자', 세개면 '삼항 연산자'라고 불립니다. 대부분은 '이항 연산자'이고 삼항은 ' ? : ' 하나뿐입니다. - 3 - 5 위 처럼 식이 존재하는 경우 두개의 연산자가 포함되어 있는데, 둘 다 같은 기호로 나타내지만 .. Language/Java 2021. 10. 23.