일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- annotation
- 인코딩
- package
- 즉시 실행 함수
- 화살표 함수
- 객체지향 #객체지향 특징
- final 메소드
- 라우터
- import
- 유니코드
- Arrow function
- 메소드 재정의
- 익명함수
- 노드
- 문자집합
- 기본 생성자
- 클래스
- Super
- 자바의 특징
- 패키지
- node
- final 클래스
- router
- 디코딩
- 자바
- 생성자
- final
- 어노테이션
- Anonymous Functions
- Override
- Today
- Total
목록분류 전체보기 (66)
개인 공부 블로그
final 필드 초기값이 저장되면 이것이 최종적인 값이 되어 프로그램 실행 도중에 수정할 수 없다는 것. - final 필드에 초기값을 줄 수 있는 방법 1) 필드 선언 시 2) 생성자에서 만약 초기화되지 않은 final 필드를 그대로 남겨두면 컴파일 에러가 발생한다. 상수 (constant) 불변의 값을 저장하는 필드를 자바에서 상수라고 한다. final 필드를 상수라고 하지 않음. 불변의 값은 객체마다 저장할 필요가 없는 공용성을 띠고 있고, 여러가지 값으로 초기화될 수 없기 때문에. -> 상수는 staic이면서 final이어야 한다. static final 타입 상수 [= 초기값]; static final 필드는 객체마다 저장되지 않고, 클래스에만 포함된다. 그리고 한 번 값이 초기화되면 변경할 수..
정적멤버 - 클래스에 고정된 멤버로 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. - 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 한다. 정적 멤버 선언 - static - 필드와 메소드 선언 시 static 키워드를 붙인다. - 정적 멤버는 클래스 로더가 클래스(바이트 코드)를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리됨. 따라서 클래스의 로딩이 끝나면 바로 사용할 수 있다. - 객체마다 가지고 있어야 할 데이터라면 인스턴스 필드로 선언, 그렇지 않은 공용적인 데이터라면 정적 필드로 선언하는 것이 좋다. 메소드는 인스턴스 필드를 이용해서 실행해야 하면 인스턴스 메소드로 선언하고 인스턴스 필드를 이용하지 않는다면 정적 메소드로 선..
인스턴스 멤버 - 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소드. - 인스턴스 필드와 메소드는 객체에 소속된 멤버이기 때문에 객체 없이는 사용불가. - 필드는 객체마다 따로 존재하고, 메소드는 객체마다 존재하지 않고 메소드 영역에 저장되고 공유된다. this 객체 내부에서 인스턴스 멤버에 접근하기 위해 this를 사용. 객체 외부에서 인스턴스 멤버에 접근하기 위해 참조변수를 사용하는 것처럼. this.model은 자신이 가지고 있는 model 필드라는 뜻이다. this는 주로 생성자와 메소드의 매개변수 이름이 필드와 동일한 경우, 인스턴스 멤버인 필드를 명시하고자 할 때 사용됨.
- 객체를 생성할 때 호출되어 객체의 초기화를 담당한다. - 생성자를 실행시키지 않고는 클래스로부터 객체를 만들 수 없다. 기본 생성자 - 모든 클래스는 생성자가 반드시 존재, 하나 이상을 가질 수 있음. - 기본 생성자는 생략 가능. 클래스 내부에 생성자 선언을 생략하면 컴파일러가 기본 생성자를 바이트 코드에 자동으로 추가시킨다. - 그러나 클래스에 명시적으로 선언한 생성자가 한 개라도 있으면 컴파일러는 기본 생성자를 추가하지 않는다. - 필드가 객체 생성 시점에서 외부에서 제공되는 값으로 초기화되어야 한다면 생성자에서 초기화를 해야한다. this 생성자의 매개변수는 관례적으로 필드와 동일한 이름으로 사용. 이 경우 동일한 이름의 매개변수가 사용 우선순위가 높기 때문에 생성자 내부에서 해당 필드에 접근..
객체를 위한 설계도. 클래스 선언 public Class Car { } class Tire{ { - 일반적으로 소스 파일당 하나의 클래스를 선언. 하지만 두 개 이상의 클래스 선언도 가능 - 소스 파일을 컴파일 하면 바이트 코드 파일은(.class) 클래스를 선언 한 개수만큼 생긴다. 결국 소스 파일은 클래스 선언을 담고 있는 저장 단위일 뿐, 클래스 자체가 아니다! 위 코드를 컴파일하면 Car.class, Tire.class가 각각 생성됨. - 파일 이름과 동일한 이름의 클래스 선언에만 public 접근 제한자를 붙일 수 있다. 클래스의 용도 - 라이브러리(API:Application Program Interface)용, 실행용으로 두 가지 용도가 있다. - 라이브러리 클래스는 다른 클래스에서 이용할 ..
캡슐화(Encapsulation) - 객체의 필드, 메소드를 하나로 묶고 실제 구현 내용을 감추는 것. - 외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다. - 필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 객체가 손상되지 않도록 하기 위함. - 접근 제한자를 통해 사용 범위를 제한함으로써 외부로부터 보호. 상속(Inheritance) - 상위 객체가 가지고 있는 필드와 메소드를 하위 객체에게 물려준다. - 상위 객체를 재사용해서 하위 객체를 쉽고 빨리 설계할 수 있도록 도와준다. - 이미 잘 개발된 객체를 사용해 새로운 객체를 만들기 때문에 모드의 중복을 줄여준다. - 상위 객체의 수정으로 모든 하위 객체들의 수정 효과를 가져와 ..
생성 데이터타입[] 변수 = {값0, 값1, ...}; 배열 변수를 미리 선언 후 값이 나중에 결정되는 상황이라면 new 연산자를 사용하여 값을 지정해주면 된다. 변수 = new 타입[] {값0, 값1, ...}; 배열을 생성함과 동시에 메소드의 매개값으로 사용하고자 할 때는 반드시 new 연산자를 사용해야 한다. int add(int[] scores){...} int result = add( {91, 83, 90} ) // 컴파일 에러 int result = add( new int[]{91, 83, 90} ); 값 목록이 없지만 향후 저장할 배열을 미리 만들고 싶을때도 new 연산자 사용 타입[] 변수 = new 타입[길이]; new 연산자로 배열을 처음 생성할 경우 배열은 자동적으로 기본값으로 초기화..
- 문자열은 String 객체로 생성되고 변수는 String 객체를 참조 - 문자열 리터럴이 동일하면 String 객체를 공유한다. - new로 String 객체를 생성할 경우는 리터럴이 동일해도 다른 객체를 참조 // 같은 객체 참조 String name1 = "홍길동"; String name2 = "홍길동"; // 다른 객체 참조 String name1 = new String("홍길동"); String name2 = new String("춘향"); 문자열 비교 ● equals() 객체가 아닌 문자열을 비교하려면 equals()를 사용해야 한다.
참조타입 변수는 힙 영영의 객체를 참조하지 않는다는 뜻으로 null값을 가질 수 있다. null 값도 초기값으로 사용할 수 있기 때문에 null로 초기화된 참조변수는 스택 영역에 생성됨. -> int[] intArray = null; 일 때, intArray는 힙 영역이 아니라 스택 영역에 생성되는건가? 참조 타입 변수가 null을 가지고 있을 경우 참조 타입 변수는 사용할 수 없다. 참조할 객체가 없으므로 사용할 수 없는 것. NullPointerException null 값을 가지고 있는 참조 타입 변수를 사용하면 발생하는 예외. 이 예외가 발생하면 예외가 발생된 곳에서 객체를 참조하지 않은 상태로 참조 타입 변수를 사용하고 있다는 것!!