반응형

전체 글 354

[JavaScript] 자바스크립트 놓치기 쉬운 기본 개념들

[JavaScript] 자바스크립트 놓치기 쉬운 기본 개념들 1. const vs let const는 상수를 입력할 때 쓰인다. 상수란 변하지 않는 값으로, 한 번 정하면 나중에 바꿀 수 없다. const a = 5; console.log(a+a) // 10 const a = 10; console.log(a+a) // Assignment to constant variable. 에러 위의 예시처럼 a를 const로 정해놓고 5를 입력했으면 이후 이 값은 바뀔 수 없다. 이 a값을 10으로 바꾸려 했더니 Assignment to constant variable. 에러가 떴고, 이는 상수값에 값을 적용하려 했다는 의미의 에러이다. 값을 마음껏 변경하고 싶은 변수값을 입력하려면 const가 아닌 let을 이용해..

[Java] 람다식 (Lambda Expression, 람다 표현식)

[Java] 람다식 (Lambda Expression, 람다 표현식) 람다식은 함수(메서드)를 간단한 식(expression)으로 표현하는 바법이다. 람다식은 익명 함수(anonymous function)와 비슷한데, 사실은 익명 객체이다. 익명 클래스처럼 객체의 선언과 생성을 동시에 한다. 함수 vs 메서드 함수와 메서드는 근본적으로는 동일하다. 함수는 일반적 용어이고, 메서드는 객체지향 개념의 용어이다. 함수는 클래스에 독립적이며, 메서드는 클래스에 종속적이다. 람다식 작성하기 1. 메서드의 이름과 반환타입을 제거하고 '->'를 블록{} 앞에 추가한다. int max(int a, int b) { return a>b ? a : b; } ↓ ↓ (int a, int b) -> { return a>b ? ..

Java 2021.08.19

[Java] 내부 클래스 (inner class, 중첩된 클래스)

내부 클래스는 말 그대로 class 안에 또 다른 class를 넣는 것이다. 클래스 내부에 구현한 중첩된 클래스이며, 클래스 내부에서 사용하기 위해 선언하고 구현하는 클래스이다. 주로 외부 클래스 생성자에서 내부 클래스를 생성한다. class A { // 외부 클래스 class B { } // 내부 클래스 } 내부 클래스를 만들면 객체 생성 없이도 외부 클래스(class A)의 멤버에 쉽게 접근이 가능하다. 또한 코드의 복잡성을 줄일 수 있다. 내부 클래스에는 아래와 같은 종류가 있다. class Outer { class InstanceInner {} // 인스턴스 내부 클래스 static class StaticInner {} // 스태틱 내부 클래스 void myMethod() { class Local..

Java 2021.08.19

[Java] 스택과 큐 (Stack & Queue)

[Java] 스택과 큐 (Stack & Queue) 스택(Stack) LIFO(Last In First Out)구조 맨 마지막에 추가된 요소가 가장 먼저 꺼내지는 자료구조 이미 구현된 클래스가 제공된다. 스택은 밑이 막힌 상자와 같다. 저장은 push, 추출(삭제)은 pop이라 한다. 스택은 ArrayList로 구현하는 것이 좋다. 게임에서 무르기, 최근 자료 가져오기 등에 구현한다. 큐(Queue) FIFO(First In First Out)구조 제일 먼저 저장된 자료가 먼저 꺼내지는 자료구조 큐는 줄서기와 같다. 저장은 offer, 추출은 poll이라 한다. 들어가는 operation은 enqueue, 나오는 operation은 dequeue라 한다. 큐는 LinkedList로 구현하는 것이 좋다. ..

카테고리 없음 2021.08.18

[Java] 컬렉션 프레임워크 (Collections Framework)

[Java] 컬렉션 프레임워크 (Collections Framework) 컬렉션은 여러 객체(데이터)를 모아 놓은 것을, 프레임워크는 표준화·정형화된 체계적인 프로그래밍 방식을 의미한다. 참고로, 자바에는 Spring 프레임워크가 유명하다. 그렇다면 컬렉션 프레임워크는, 프로그램 구현에 필요한 자료구조와 알고리즘을 구현해 놓은 라이브러리이며, 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식이다. 이를 이용하면 개발에 소요되는 시간을 절약하고 최적화된 라이브러리를 사용할 수 있다. 컬렉션 프레임워크에서는 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공하며, 이러한 클래스를 컬렉션 클래스라고 부른다. (컬렉션 클래스 ex. Vector, ArrayList, HashSet) java.u..

Java 2021.08.18

[Java] Generics란? 지네릭 프로그래밍(지네릭스)

[Java] Generics란? (지네릭스, 제네릭스) 지네릭스(Generics)란 컴파일시 타입을 체크해 주는 기능이다. (JDK 1.5 이상부터 지원된다.) 지네릭스 도입 전에는 형변환 에러(ClassCastException)가 일어날 때, 컴파일 에러는 나지 않았도 실행시 에러(Runtime Error)가 발생하는 경우가 있었다. 지네릭스 도입 후에는 컴파일 에러로 바로 알려준다. 지네릭스는 객체의 타입 안정성을 높이고, 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다. 지네릭 도입 전 ArrayList list = new ArrayList(); list.add(1); list.add("2"); // String을 추가했지만 컴파일 에러는 나지 않고, 실행시 에러가 난다. 지네릭 도입 후 ..

Java 2021.08.18

[Java] Object 클래스, String 클래스, Wrapper(래퍼) 클래스

[Java] Object 클래스(최상위 클래스), String 클래스 1. Object 클래스 (최상위 클래스) Object 클래스는 java의 모든 클래스의 최고 조상 클래스이다. java.lang 패키지 안에 있는 클래스이다. (java.lang.Object) eclipse 사용시 'Object'라고 적고 F1을 누르면 자세한 내용을 볼 수 있다. (Program Files\Java\jdk-(버전)\lib\src\java.base\java\lang\Object.java에 위치해있다.) 모든 클래스는 Object 클래스에서 상속을 받으며, 모든 클래스는 Object 클래스의 메서드를 사용할 수 있고, 모든 클래스는 Object 클래스의 일부 메서드를 재정의하여 사용할 수 있다. 이 Object 클래스에..

Java 2021.08.18

[Java, 객체지향] 템플릿 메서드란?

[Java, 객체지향] 템플릿 메서드란? '템플릿'은 말 그대로 틀이나 견본을 의미한다. 그렇다면 '템플릿 메서드'는 무엇일까? 템플릿 메서드는 추상 메서드나 구현된 메서드를 활용하여 전체의 흐름(시나리오)을 정의해 놓은 메서드를 의미한다. final로 선언하여 재정의할 수 없게 한다. '템플릿 메서드 패턴'은 사실 Java에서 쓰이는 말은 아니다. 디자인 패턴의 일종으로, 프레임 워크에서 많이 사용되는 설계 패턴이다. 추상 클래스로 선언된 상위 클래스에서 추상 메서드를 이용하여 전체 구현의 흐름을 정의하고, 메서드 구현의 구체적인 부분은 하위 클래스에 위임한다. 그렇지만 하위 클래스가 다른 구현을 했다고 해도 템플릿 메서드에 정의된 시나리오대로 수행된다.

Java 2021.08.17

[Java, 객체지향] 인터페이스란? (Interface)

[Java, 객체지향] 인터페이스란? (Interface) 인터페이스란? 인터페이스는 클라이언트 프로그램에 어떤 메서드를 제공하는지 알려주는 명세(specification) 또는 약속이다. '한 객체가 어떤 인터페이스의 타입이다'라는 것은, 그 인터페이스의 메서드를 구현했다는 의미이다. 클라이언트 프로그램은 실제 구현 내용을 모르더라도 인터페이스의 정의만 알면 그 객체를 사용할 수 있다. 쉽게 말하자면, 인터페이스는 추상 메서드의 집합이다. 즉, 구현된 것이 전혀 없는 껍데기와 같다. (jdk 1.8 이상을 제외하고선, 인터페이스의 모든 멤버는 public이다) interface 인터페이스명 { public static final 타입 상수명 = 값; public abstract 메서드명(); } 이때,..

Java 2021.08.17
반응형