전체 글 103

12. 자바 API 클래스

1. 자바 API 도큐먼트 여태 사용했던 String, System과 같은 클래스들 모두 자바의 API 클래스들 이었다. API 도큐먼트란 API를 쉽게 찾아 사용할 수 있도록 문서화 한 것이다. API들은 /jre/lib/rt.jar 압축 파일에 저장되어 있다. 자바에서 공통적으로 많이 사용되는 패키지들은 java.lang, java.util, java.time 패키지 등이 있다. 2. java.lang 패키지 java.lang이라는 패키지 안에는 자바 프로그램의 여러 기본 클래스들이 있는 패키지이다. 이 패키지는 모든 클래스들이 import 문 없이 사용 가능한데 자동으로 java.lang은 import 되기 때문이다 . ※ java.lang의 주요 클래스들 요약 정리 Object 클래스 : 자바 클..

Java 2022.02.17

11. 자바 예외 처리(실행 예외, 예외 처리 코드, 사용자 정의 예외)

1. 오류란? 오류의 종류 : 에러, 예외 에러는 JUM 실행에 문제가 생긴 것이므로 대처 못함 예외는 사용자의 잘못된 조작 도는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말함 예외가 발생되면 프로그램은 곧바로 종료된다. 예외처리를 통해 플그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 2. 예외 클래스 예외에는 두 가지 종류가 있다. => 일반 예외, 실행 예외 모든 예외 클래스는 Exception을 상속받는다. Exception을 상속받고 RuntimeException을 상속받지 않는 예외 클래스(ClassNotFoundException 같은 클래스)들을 일반 예외 클래스라고 하며 RuntimeExcepiton을 상속받은 예외 클래스를 실행 예외 클래스라고 한다. 3. ..

Java 2022.02.16

10.2. 프로토타입 : 프로토타입이란, 프로토타입 체인

1. 프로토타입이란 자바스크립트의 모든 객체는 하나의 "프로토타입"을 가진다. 또한 모든 "프로토타입"은 생성자 함수와 연결되어있다. 모든 객체라고 하면 막연하니 ( 객체 리터럴, 생성자 함수, 생성자 함수로 생성된 객체 ..) 이정도 범위로 생각하자.. 모든 객체는 [[Prototype]]이라는 내부 슬롯을 가진다. 이 내부 슬롯에는 프로토타입의 참조가 들어있게 된다. 즉 예를 들어 객체 리터럴로 생성된 객체의 내부 슬롯 [[Prototype]]의 값에는 객체 리터럴로 생성된 객체의 "프로토타입"이 들어있다. 프로토타입 prototype __proto__ XXX.prototype (ex Object.prototype) 위와 같이 앞으로 이 절을 정리하면서 위와 같은 용어가 메인인데 위 용어들은 엄밀히 ..

JavaScript 2022.02.13

10.1. 프로토타입 : 스코프 체인 vs 프로토타입 체인

10절부터 계속 프로토타입에 대해 정리할 것이며 10절의 첫 주제로 프로토타입과 스코프 체인을 어느 정도 공부한 시점에서 헷갈릴 수 있는 내용인 스코프 체인 vs 프로토 타입 체인 두 개념 구분해 정리할려고 한다. 1. 스코프 체인이란 자바스크립트에는 4가지 타입의 소스코드가 있다. 전역코드 함수코드 eval코드 모듈 코드 4가지 소스코드의 타입은 스코프라는 것을 가지는데 예를 들어 함수 코드의 스코프를 설명하면 함수 내부에 선언된 변수 a가 있다고 해보자 이 a가 유효한 범위를 해당 함수의 스코프라고 한다. 함수 코드를 생각해보면 함수 선언문이 작성된 스코프(전역 객체라고 하겠다.)의 "평가" 과정 즉 전역 코드의 평가 과정이 이루어지면 함수 선언문의 이름을 key로 하며 그 값으롷 함수 객체를 생성하..

JavaScript 2022.02.12

9. 자바스크립트에서 일반 함수의 this는 왜 window일까?

1. 일반 함수에서 this는 window에 바인딩 된다. 자바스크립트를 하면서 항상 이해가 안된던 내용이 함수 선언문으로 작성된 함수의 this는 왜 window에 바인딩이 되는 것인가?? 자바스크립트 Depp Dive 교재에는 콜백함수이건 중첩함수이건 생성자 함수로 사용되지 않는 일반 함수의 this는 window에 바인딩된다. 라고 나와있다. 그것이 왜 그런지에 대한 설명은 없으며 마치 정의를 내리듯이 설명하고있다. 아래 예시 코드를 보면 2. 예시 코드1 count = 100; const countObj = { count: 1, addCount () { this.count++ console.log('Counter Value > ', this.count) const addCount2 = functi..

JavaScript 2022.02.10

8. 함수(생성자 함수, 일급 객체, 함수 호이스팅, 화살표 함수 ..)

함수의 객체 생성 시점과 함수의 평가 과정이 어떻게 다르며 이들의 개념들이 어떻게 유기적으로 연결되는지 오랫동안 헷갈렸던 내용도 이 포스팅 중간에 정리해봤다. 1. 함수 리터럴이란? 함수 리터럴은 function 키워드, 함수 이름, 매개변수 목록, 함수 몸체로 구성된다. var f = function add(x, y) { return x+y; } 위 식은 변수 f에 함수 리터럴을 대입했다고 할 수 있다. 자바스크립트의 함수는 객체 타입의 값으로 함수 리터럴 또한 '평가'되어 값을 생성하는데 이 값은 객체이다. 즉 함수는 객체이다. 함수는 일반적인 객체와 다르게 호출할 수 있으며 일반 객체에는 없는 함수 객체만의 고유한 프로퍼티가 존재한다. 2. 함수의 정의 함수를 정의한다함은 매개변수, 실행할 문, 반..

JavaScript 2022.02.09

10. 중첩 클래스

0. 도입 중첩 클래스란 클래스 내부에 선언된 클래스를 말한다. 중첩 클래스를 사용하면 외부 클래스와 내부 클래스의 맴버 간의 접근 용이성과 외부에 불필요한 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다. 자바에서 중첩 클래스에는 아래와 같이 분류된다. 맴버 클래스 1) 인스턴스 맴버 클래스 2) 정적 맴버 클래스 로컬 클래스 1. 맴버 클래스 1) 인스턴스 맴버 클래스 class A { class B { B() {...} int a; void func() {...} //static 선언 안됨 //static int b; //static void func1(){...} } } 위 예시에서 중첩 클래스는 B가 된다. B는 A의 인스턴트 맴버로써 존재하기 때문에 중첩 클래스가 인스턴스 맴버인 경우가..

Java 2022.02.06

9. 인터페이스

더보기 인터페이스 목차 1. 인터페이스 정리 1) 상수필드, 추상메소드, 디폴드 메소드, 정적 메소드 선언 2) 구현클래스 작성 3) 다중인터페이스 4) 인터페이스 상속 계층 일 때 5) 디폴트 메소드 제대로 이해하자 6) 인터페이스 확장 2. 중첩인터페이스 1. 인터페이스 정리 1) 상수필드, 추상메소드, 디폴드 메소드, 정적 메소드 선언 public interface InterfaceA { /*public static final*/ int VALUE= 10; //상수 필드 /*public abstract*/ void func1 (); //추상 메소드 /*public*/ default void func2() {}; //디폴트 메소드 /*public*/ static void func3() {} //wjd..

Java 2022.02.06

8. 상속

더보기 목차 1. 상속에 대해 알아보자 1) 상속 2) final클래스, final메소드, protected 접근 제한자 3) 자동타입변환 4) 다형성 5) 강제 타입 변환 6) 추상클래스 2. 상속에서 익명 자식 객체 1) 필드에서 익명 자식 객체 2) 변수에서 익명 자식 객체 3) 매개변수에서 익명 자식 객체 1. 상속에 대해 알아보자 1) 상속 상속이란 public A extends B { ... } extends키워드를 통해 부모 클래스를 지정하게 된다. A는 자식 클래스 B는 부모 클래스가 되며 자식 클래스는 부모 클래스의 필드와 메소드를 물려받아 자식 클래스에서 부모 클래스 B의 필드와 메소드를 사용할 수 있는 것을 상속이라고 말한다. 하지만 모든 부모 클래스의 필드와 메소드를 상속받는 것은 ..

Java 2022.02.06

7.4 클로저

1. 예시를 통해 클로저 정의하기 const x = 1; function outer() { const x = 10; const inner = function() { console.log(x);}; return inner; } const innerFunc = outer(); innerFunc(); //10 위 예시를 평가와 실행 과정으로 생각해보면 위 코드의 평가 과정에서는 x는 일시적 사각지대 상태가 되며 outer 라는 key의 값으로 함수 객체가 생성되어 저장된다. 이때 outer의 상위 스코프가 [[Environment]]의 값에 할당된다. 그리고 innerFunc은 일시적 사각지대 상태가 된다. 이제 '실행' 과정을 보자 런타임이 진행되면 x =1; 이 할당되고 innerFunc = outer()..

JavaScript 2022.01.30