JAVA 35

[JAVA]Collection - List

1. Collection 프로그래밍을 하다 보면 가장 많이 겪게 되는 문제가 데이터와 관련된 문제입니다. 데이터를 어디에 저장할 것인지, 데이터를 어떻게 저장하고 꺼낼 것인지, 관리할 것인지에 대한 부분을 고민하게 됩니다. 현실 세계의 자원의 유한함은 컴퓨터의 세계에서도 동일하게 존재합니다. 그러므로 한정된 메모리 공간에서 프로그램이 문제없이 잘 돌아가도록 하는 것이 굉장히 중요합니다. 한정된 메모리 공간에서 데이터를 어떻게 잘 관리하고 저장하고 꺼낼 수 있는지에 대한 문제를 해결하기 위해, Collection이라는 자료구조 라이브러리가 만들어졌습니다. 자료구조란 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미합니다. Collection은 자료구조를 도와주는 도구이..

JAVA 2023.11.23

[JAVA]<제네릭>

Generic은 Actual Type Parameter가 삽입된 경우 정상적인 Type인지 컴파일 단계에서 체크해주는 도구입니다. class Box { private Object[] box = new Object[10]; int cursor = 0; void putData(T data) { box[cursor++] = data; } T getData() { T data = (T)box[cursor – 1]; box[cursor - 1] = null; cursor--; return data; } } Generic을 클래스에서 사용하려면 키워드를 이용하여 선언합니다. class Box { // T, E 같은 문자들을 Formal Type Parameter라고 부른다 } Formal Type Parameter..

JAVA 2023.11.17

[JAVA]Singleton 패턴

Singleton Pattern은 인스턴스 생성 패턴 중 하나로 인스턴스를 한 번 생성하고 인스턴스의 내용을 여러 메서드에서 공유하여 사용할 수 있는 패턴입니다. public class Configuration { private static Configuration configuration; private Configuration() { } public static Configuration getInstance() { if (null == configuration) { configuration = new Configuration(); } return configuration; } } Singleton Pattern은 new 키워드로 인스턴스를 생성하지 못하게 함과 동시에 인스턴스를 생성할 수 있는 특정 ..

JAVA 2023.11.17

[JAVA]enum

enum은 자바 가상 머신에 의해 singleton으로 생성되며 의미 있는 상수를 정의하고 프로그램의 안정성을 위해 사용됩니다. enum CafeFoodCategory { BREAD, CAKE, COFFEE, BEVERAGE } enum은 이러한 문제를 해결하기 위해 만들어졌습니다. public void eat(int foodCategory) { if (0 == foodCategory) { System.out.println("빵"); } else if (1 == foodCategory) { System.out.println("케이크"); } else if (2 == foodCategory) { System.out.println("커피"); } else if (3 == foodCategory) { Syst..

JAVA 2023.11.15

[JAVA]예외처리

1. 예외 Throwable 모든 에러와 예외에 대한 최상위 클래스입니다. Object 클래스를 상속받고 있으며 Error와 Exception 하위 클래스들을 가지고 있습니다. 일반적으로는 해당 클래스를 직접적으로 이용할 일은 없습니다. 그러므로 있다는 것만 알고 넘어 갑시다. Error 프로그램 실행 도중 해결할 수 있는 문제가 아니라 이후에 발견되어 처리해야 하는 문제들이 Error 클래스와 연관되어 있습니다. 코드상으로 별도의 예외 처리를 할 수 없습니다. 1. OutOfMemoryError 자바 가상 머신이 메모리가 부족하여 인스턴스를 할당할 수 없고 가비지 컬렉터가 메모리를 사용할 수 없을 때 발생합니다. 2. StackOverflowError 스레드의 Stack 메모리가 꽉 찾을 경우 발생합니..

JAVA 2023.11.10

[JAVA]null

null 이라는 것은 참조 자료형 변수만 선언하고 인스턴스의 참조 값이 저장되어 있지 않았을 때 기본적으로 null 값이 저장되어 있습니다. case 1 String[] strArray = new String[3]; System.out.println(strArray[0]); System.out.println(strArray[1]); System.out.println(strArray[2]); // null // null // null index를 이용하여 배열에 접근해보면 실제로 null이 출력됩니다. case 2 String text = null; System.out.println(text); 변수에 접근해보면 실제로 null이 출력됩니다. case 3 만약에 Fruit 클래스가 존재하고 Fruit 참조..

JAVA 2023.11.09

[JAVA]Object 클래스

1. 모든 클래스는 Object 클래스를 상속 받는다 class Fruit extends Object { private String name; Fruit(String name) { this.name = name; } String getName() { return name; } } Fruit 클래스가 있는데요. Fruit 클래스는 Object 클래스를 상속받고 있습니다. 이렇게 extends 키워드를 이용하여 명시적으로 선언하지 않는다 하더라도 Object 클래스를 상속받고 있습니다. (컴파일러가 처리합니다.) 우리는 이전에 다형성이라는 것을 배웠었는데요. Java 언어의 다형성의 특징을 통해 Fruit 인스턴스는 Object 참조 자료형 변수에 저장할 수 있습니다. case 다형성 Object fruit..

JAVA 2023.11.07

[JAVA]람다 표현식

Java8 이후부터는 람다 표현식이 가능하게 되었습니다. 언어적인 측면에서도 상당한 발전이 이루어졌는데요, 일단 우리는 람다 표현식에 대해서 확인해 봅시다. Operate operate = new Operate() { public int operate(int a, int b) { return a + b; } }; 이 코드를 람다 표현식으로 하면 코드 작성수를 훨씬 줄일 수 있습니다. Operate operate = (a, b) -> { return a + b; }; 코드를 작성해야 하는 글자 수가 줄어들었습니다. 해당 코드를 함수형 프로그래밍에서는 람다 또는 익명 함수라고도 부릅니다. public class Main { public static void main(String[] args) { Calcul..

JAVA 2023.10.31

[JAVA]익명 클래스

1. 익명 클래스 Java에서는 익명 클래스라는 존재가 있습니다. 익명 클래스는 상속 받는 클래스를 명시적으로 별도의 Java 파일을 통해 클래스를 만드는 것이 아닌, 코드 내부에 이름이 존재하지 않는 클래스를 만드는 것입니다. public class Coffee { public void make() { System.out.println("Make!!"); } } public class Main { public static void main(String[] args) { // TODO : Coffee 클래스를 상속 받는 익명 클래스 Coffee coffee = new Coffee() { // make 메서드 오버라이드 public void make() { System.out.println("Overrid..

JAVA 2023.10.31

[JAVA]추상클래스와 인터페이스

1. abstract 클래스 abstract 클래스는 추상 클래스라고도 불리며, 추상화를 좀 더 구조적으로 도와주는 도구입니다. public abstract class Dog { protected String name; public Dog(String name) { this.name = name; } public abstract void bite(); public abstract void bark(); protected void eat() { System.out.println("먹는다"); } } 추상 클래스를 만들기 위해서는 class 앞에 abstract 키워드를 사용하여 추상 클래스라는 것을 명시합니다. 추상 클래스 abstract class 클래스명 이러한 추상 클래스는 추상화 할 수 있는 몇 가..

JAVA 2023.10.25