객체지향언어 = 프로그래밍 언어 + 객체지향 개념 자동 메모리 관리 : 가비지 컬렉터 (Garbage Collector, GC)가 메모리를 알아서 정리 멀티 쓰레드 지원 : 하나의 프로그램에서 동시에 여러 작업 가능 라이브러리가 풍부함 운영체제에 대해 독립적임
계수기는 9999 이후에 한번 더 누르면 0000이 된다.이것이 정수형 오버플로우이다. 표현할 수 있는 범위를 넘어선 것이다.최댓값에 1을 더하면, 최솟값이 되고,최솟값에서 1을 빼면, 최댓값이 된다.
(char) (3 + '0') = '3''3' - '0' = 3유니코드값 51 - 유니코드값 48 = 3유니코드 값으로 계산 시, '어떤 숫자 문자'에서 '0'을 빼면 그 값이 나오게 되어있음.3 + "" = "3"'3' + "" = "3"Integer.parseInt
코드의 재사용성이 높고, 유지보수가 용이하며, 중복 코드도 제거한다.\-> 빠른 변화를 쫓아갈 수 있다.캡슐화상속추상화다형성 (가장 중요!)객체지향개념은 반복해서 공부할 수록 쉬워진다. -> 요약 자바의 정석 3판 보고, (핵심 + 응용)바로 JSP, Spring을 배
그림 출처 : 자바의 정석 - 남궁성 선생님 유튜브밑이 막힌 상자. 위에 차곡 차곡 쌓인다.위에서 부터 꺼낸다.Last In, First Out메서드 수행에 필요한 "메모리"가 제공되는 공간메서드 호출 -> 호출 스택에 메모리 할당 -> 종료 시 해제1\. main()
기존의 클래스로 새로운 클래스를 작성하는 것 (코드의 재사용)두 클래스를 부모와 자식으로 관계를 맺어주는 것자식 클래스는 조상(부모, 조부모....)의 모든 멤버를 전부 상속받는다 (생성자, 초기화 블럭 제외)자손의 멤버 갯수 >= 조상의 멤버 갯수 자손의 변경은 조상
상속받은 조상의 메서드를 자신에게 맞게 변경하는 것 (덮어쓰는 것)구현부의 내용만 변경 가능하며, 선언부는 변경이 불가능 하다.조건 1\. 선언부(반환타입, 메서드 이름, 매개변수 목록)가 조상 클래스의 메서드와 일치해야 한다. 2\. 접근 제어자(public,
기본 개념 패키지 : 서로 관련된 클래스 묶음 클래스는 클래스 파일(\*.class), 패키지는 폴더. 하위 패키지는 하위 폴더 클래스의 실제 이름은 패키지 이름을 포함. (java.lang.String) rt.jar 는 클래스 파일들을 압축한 파일 -> Java9 부
클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미 부여접근 제어자 (한개만 사용 가능)public, protected, (default: 아무것도 안 붙임), private그 외static, final, abstract, native, transient, s
여러가지 형태를 가질 수 있는 능력조상 타입 참조 변수로, 자손 타입 객체를 다루는 것다형성이 객체지향에 굉장한 유연함을 준다!객체와 참조변수의 타입이 일치할 때와 일치하지 않을 때의 차이는? SmartTv s = new SmartTv(); // 멤버 전부 사용 (7
사용할 수 있는 멤버의 갯수를 조절하기 위해 사용주소값, 객체는 바뀌지 않는다조상, 자손 관계의 참조변수는 서로 형변환 가능 (조상-자손 관계일 때만 가능하다!)형변환을 하면, 멤버의 갯수를 늘렸다 줄였다 할 수 있다.참조변수가 가리키는 실제 객체(인스턴스)가 중요하다
조상 참조변수로 자손 객체 다루기ex: Tv t = new SmartTv();참조변수의 형변환 (리모콘 바꾸기) 사용할 수 있는 멤버 갯수 조절instanceof 연산자 형변환 가능 여부 체크// 자손class Tv extends Product {}class Compu
미완성 설계도. 미완성 메서드를 갖고있는 클래스다른 클래스의 작성에 도움을 주기 위한 것. 인스턴스 생성 불가상속을 통해 추상 메서드를 완성해야 인스턴스 생성 가능미완성 메서드. 구현부(몸통, {})가 없는 메서드 /\* 주석을 통해 어떤 기능을 수행할 목적으로 작성
추상 메서드의 집합 << 핵심 개념!구현된 것이 전혀 없는 설계도. 껍데기임! (모든 멤버가 public)인터페이스 vs 추상클래스 \- 추상클래스 : 추상 메서드를 갖고있는 "일반 클래스" + 생성자, iv.. 등을 갖고 있음 \- 인터페이스 : 추상
class A { // B의 외부클래스 class B { // 객체 생성 없이도, A의 멤버에 접근 가능 } // A의 내부 클래스}class Outer { // 클래스 영역 class InstanceOuter {} // instance class static
컴파일 에러(compile-time error) : 컴파일 시 발생하는 에러런타임 에러(runtime error) : 실행 시 발생하는 에러 (프로그램 종료)에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 ex > OOME, Out Of Mem
모든 클래스의 최고 조상 메서드 11개로 구성되어 있음 notify(), wait() 등은 쓰레드 관련 메서드 Reflection API 를 알아보자! equals(Object obj) 객체 자신(this)과 주어진 객체(obj)를 비교한다. 객체의 주소(참조
문자열을 다루기 위한 클래스 : Data(char\[], 문자 배열) + Method(문자열 관련)내용을 변경할 수 없음. (불변, immutable 클래스)문자를 + 연산자를 이용해서 더할 때마다, 새로운 문자열이 만들어지기 때문에, 성능이 떨어짐문자열 결합 혹은 변
문자열을 저장하기 위한 클래스String과 같이, 문자형 배열(char\[])을 내부적으로 갖고 있음String과 달리, 내용을 변경할 수 있음 (Mutable)배열 : 길이 변경 불가. 공간이 부족할 시, 새로운 배열을 생성해야 함.StringBuffer는 저장할 문
StringBuffer는 동기화 되어있기 때문에, 멀티 쓰레드에 안전하다. (Thread-safe)StringBuilder는 StringBuffer와 거의 비슷하나, \*동기화 처리가 되어있지 않다. (동기화 여부에 따라 두 클래스 구분)동기화 == 멀티 쓰레드에 대해
int -> Integer 기본 타입 -> 래퍼클래스(참조형)Integer -> int래퍼클래스(참조형) -> 기본타입오토박싱과 언박싱은 컴파일러가 자동으로 해주는것컴파일러에 의해, 기본 타입과 래퍼클래스(참조형) 간의 연산이 자동으로 된다.컴파일러가 오토박싱 & 언박
컬렉션 : 여러 객체(데이터)를 모아놓은 것 프레임웍 : 표준화, 정형화 된 체계적인 프로그래밍 방식 라이브러리 : 만들어놓은 기능을 모아놓은 것 (기능만 제공) > ### 컬렉션 프레임웍 > - 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식 > -
LIFO(Last In First Out) 구조마지막에 저장된 것을 가장 먼저 꺼냄저장(push) & 추출(pop) : 저장 순서와 추출 순서가 서로 반대임스택은 배열(Array) 구현이 유리함.ex : 수식 계산, 수식 괄호 검사, 워드프로세서의 undo/redo,
Enumeration(구버전)과 Iterator(신버전)는 비슷하다.ListIterator는 Iterator의 접근성을 향상시킨 것. (단방향 -> 양방향)컬렉션에 저장 된 요소들을 읽어오는 방법을 표준화 한 것 (컬렉션이 변경되어도, 동일하게 사용 가능)boolean
배열을 다루기 편리한 메서드(static) 제공 (util)배열의 출력 : toString() -> \[1,2,3,4,...] 형태의 문자열로 반환배열의 복사 : copyOf(), copyOfRange() 배열의 비교 : equals()배열 채우기fill(a
객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스 정렬 : sort(). 두 대상을 비교한 후, 자리를 바꿈. 이를 반복함. Comparable 기본 정렬 기준을 구현하는 데 사용 Comparator 기본 정렬 기준 외에, 다른 기준으로 정렬하고자 할
Set 인터페이스를 구현한 대표적인 컬렉션 클래스 : 순서 X, 중복 X순서를 유지하고 싶으면, LinkedHashSet class를 사용.객체를 저장하기 전에, 기존에 같은 객체가 있는지 확인한다. \-> 같은 객체가 없으면 저장, 있으면 저장하지 않음. bool
순서 X, 중복(키 X, 값 O)Map 인터페이스를 구현. 데이터를 키-값 쌍으로 저장Hashtable : 구버전 (동기화 O)Map 인터페이스를 구현한 대표적 컬렉션 클래스순서를 유지하고 싶으면, LinkedHashMap 사용해싱(Hashing) 기법으로 데이터를 저
컬렉션을 위한 static 메서드 제공 컬렉션 채우기, 복사, 정렬, 검색fill(), copy(), sort(), binarySearch() ...컬렉션의 동기화 : synchronizedXXX()synchronizedCollectionType(CollectionTy
지네릭스 컴파일 시, 타입을 체크해주는 기능 : compile-time type check 객체의 타입 안정성 제공. (Class CastException 방지) 타입 체크와, 형변환을 생략할 수 있으므로, 코드가 간결해짐. 런타임 에러, 실행 중 발생 에러를
서로 관련된 상수들을 함께 묶어놓은 것. Java는 타입에 안전한 열거형을 제공한다. (값, 타입 둘 다 체크함) 즉, 값은 같아도 타입이 다르면 비교불가 컴파일 에러가 발생한다.열거형 상수의 비교에 '=='과 'compareTo()'만 사용 가능 비교 연산자 >,
주석처럼, 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공한다.특정 프로그램에게만 정보를 제공함. (설정 정보..등)사용 예오버라이딩을 올바르게 했는지 컴파일러가 체크하게 한다.오버라이딩을 할 때, 메서드 이름을 잘못적는 실수를 하는 경우가 많다.오버라이딩
Process & Thread 프로세스(공장, 작업환경) : 실행 중인 프로그램. 자원(메모리, CPU...)과 쓰레드로 구성 됨. 쓰레드(일꾼) : 프로세스 내에서 실제 작업을 수행. 모든 프로세스는 최소 하나 이상의 쓰레드를 가지고있다. 싱글 쓰레드 프로세스
출처 : 자바의 정석 남궁성선생님 유튜브출처 : 자바의 정석 남궁성선생님 유튜브Bi가 붙음. "두개"를 의미. -> 매개변수를 두개를 받음.매개변수 3개 이상의 함수형 인터페이스가 필요하면, 직접 만들어야 한다출처 : 자바의 정석 남궁성선생님 유튜브매개 변수의 타입과
함수형 언어 자바는 "객체 지향 언어(OOP)" 이지만, 함수형 언어(FP)를 추가하였음. FP 대표 : Haskell, Erlang, Scala Python, js : OOP + FP 람다식 함수(메서드)를 간단한 "식"으로 표현하는 방법 익명 함수, 이름
다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것. 데이터소스란? 컬렉션이나 배열과 같이, 여러 데이터를 저장하고 있는 것들을 이야기함. 다양한 데이터 소스를 다루는 것이, 진정한 통일을 이룸. 다양한 데이터 소스로부터, "스트림"을 만들 수 있음.