가비지 컬렉션 (Garbage Collection) 자바의 메모리 관리 기법 중 하나로, JVM의 heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 객체를 주기적으로 제거하는 프로세스이다. 매번 free() 메소드를 사용하여 메모리를 비워주어
세 가지의 차이에 대해 알아보자static = '고정된'객체 생성 없이 사용하고 싶은 필드와 메소드를 지정할 때 활용한다.프로그래밍 언어에서 정적, 전역의 의미로 사용된다.자바에서는 static을 붙이면 이 메소드나 변수의 메모리 할당을 컴파일 시간에 할 것을 의미한다
말 그대로 어떠한 것의 접근을 제한하기 위해 사용된다.여기서 접근이란 클래스나 인터페이스, 이것들이 가지고 있는 멤버의 접근을 의미한다.자바의 접근 제한자에는 네 가지 종류가 있다.public 외부 클래스가 자유롭게 사용할 수 있도록 한다.protected 같은 패
동등성과 동일성 동등성(Identity)은 두 객체의 값이 같음을 의미하고, 동일성(Equality)은 두 객체의 메모리 주소가 같음을 의미한다. 동등성의 경우 객체의 주소값이 다르더라도 값, 생긴 것이 똑같으면 두 변수는 동등하고, 동일성의 경우 객체의 값, 생긴
객체? 우선 객체 지향 프로그래밍에 대해 알기 전에 객체가 무엇인지에 대해 알아보자 사실 아직도 객체를 설명하라고 하면 명확하게 설명을 잘 하지 못한다... ㅎㅎ 이번 기회에 제대로 알아보자 객체의 본래 의미는 본인이 다른 실체를 바라볼 때, 그 실체가 객체가 되는
불변 객체(Immutable Object) 불변 객체는 객체 생성 이후 재할당은 가능하지만 내부 상태가 변하지 않는, 변경할 수 없는 객체이다. , , 등이 있다. 이런 식으로 사용하면 '객체의 모양이 바뀌는 것이니 불변성이 아닌 것 아니냐?' 생각할 수 있는데
제네릭(Generic) 제네릭은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다. 객체별로 다른 타입의 자료로 저장될 수 있도록 한다. 자바에서 자주 보이는 꺽쇠가 제네릭이다. 위처럼 꺽쇠 안에 데이터 타입을 지정해주면 해당 ArrayList는 Integer, String 데이터만 넣을 수 있게 된다. 제네릭의 장점 잘못된 타입이 ...
컬렉션 프레임워크는 데이터를 쉽게, 효과적으로 처리할 수 있는 데이터 구조를 제공한다.재사용 가능하고 표준화된 인터페이스를 제공하기 때문에 코드의 일관성과 유지보수성을 높일 수 있다.또한, 다양한 데이터 구조와 기능을 손쉽게 사용하도록 도와주므로 개발자가 필요에 따라
자바 8 버전부터 '람다식(Lambda Expression)이 지원되었다.이때부터 자바는 기존의 객체지향 언어의 특징와 함수형 언어의 특징을 함께 가지게 되어, 간단한 작업에서 코드의 가독성과 효율성을 크게 향상 시켜주었다.이렇게 표현되고, 접근자와 반환형이 모두 생략
참조에 의한 호출변수의 메모리 주소를 직접 전달하는 것만약에 전달받은 값을 변경한다면? 원본도 같이 변경된다.값에 의한 호출변수에 저장된 값을 그대로 복사하여 전달하는 것만약에 메소드 내에서 전달받은 값을 변경한다면? 메소드 안에서만 변경되고, 원래 전달된 값은 변경되
클래스 (Class) 객체를 생성하기 위한 설계도 혹은 틀 이 객체가 어떤 변수와 메소드를 가지는지 알려주는 것 객체 (Object) 클래스를 통해서 구현할 대상 클래스에 선언된 변수(속성), 메소드(행동)를 기반으로 그대로 생성된 실체 예를 들어, 헤드셋이라는 객체가 있다고 생각해보자 변수(속성): 스피커, 버튼, 이어폰 잭, ... 메소드(행동...
추상클래스 (abstract) 정의 추상 클래스는 하나 이상의 추상 메소드(구현되지 않은 메소드)를 포함하는 클래스이다. 일반 메소드도 가질 수 있기에 0%에서 99%까지 구현되어 있는 클래스라고 설명할 수 있다. (모두 추상 메소드일수도... 일반 메소드 99개에 추상 메소드 1개일 수도...) 클래스 앞에 를 붙여서 선언한다. 목적 공통된 동작은 공...
캡슐화 객체 지향 프로그래밍에서 데이터(상태)와 기능(동작)을 하나의 단위로 묶는 것 객체가 특정한 목적을 수행하는데 필요한 변수와 메소드를 관련지어서 하나의 클래스로 묶어야 한다. 목적 데이터 보호: 객체의 내부 상태가 외부에서 직접적으로 수정되지 않도록 해야 한다. 기능 제공: 객체의 기능을 메소드를 통해서 외부에 전달하고, 객체가 어떤 동작을 하는...
예외 처리 프로그램 실행 시에 발생할 수 있는 예기치 못한 예외의 발생에 대비하여 코드를 작성하는 것이다. 목적 예외의 발생으로 실행 중인 프로그램이 갑작스럽게 비정상적인 동작을 하는 것을 예외 처리 선에서 막는다. 에러가 발생하는 문제의 원인 파악 및 디버깅이 용
자바에서는 대표적으로 문자열을 다루는 자료형 클래스로 , , 이 세 가지를 사용한다. 이 세 가지는 사용 목적에 따라 쓰임새가 달라지게 되는데 이에 대해 알아보자 String 문자열을 다루는 가장 기본적인 클래스 불변성 객체 생성 후 수정이 불가능 스레드 안전 자주 사용하는 문자열의 경우 String pool에 저장되어 메모리 효율성을 높인다. ...
장점 플랫폼 독립성 (Write Once, Run Anywhere) 자바는 독립적인 언어로 설계되었다. 자바 프로그램이 한 번 작성되면, 어디에서든 JVM을 통해서 어떤 운영체제에서도 실행이 가능하다. 풍부한 라이브러리와 커뮤니티 자바는 역사가 깊은 언어이다. 그래서 다양하고 많은 표준 라이브러리와 활발한 오픈소스 커뮤니티를 보유하고 있다. 이 덕분에 ...
동일한 이름의 메소드를 매개변수만 다르게 하여 정의하는 것코드의 가독성과 재사용성을 위해서 사용한다.메소드 이름은 무조건 같아야 한다.메소드 구성 요소 변수 개수, 타입, 순서 이 중에 하나는 무조건 달라야 한다.반환 타입만 다른 것은 오버로딩 성립 안 된다.stati
동기와 비동기, 블로킹과 논블로킹은 웹 서버에서 중요한 개념이다. 이 둘에 대해 알아보자 동기 / 비동기 동기와 비동기는 작업을 순차적으로 수행할지, 들어오는대로 수행할지에 대한 관점이고, 동기 (Synchronous) 작업이 지정한 순서대로 실행되며, 이전 작업이 완료될 때까지 다음 작업이 대기하는 방식 작업 간 의존성이 높다. 앞선 작업이 시간이 길...
소스 코드를 작성한다.개발자가 작성하는 코드는 .java컴파일러가 바이트 코드를 생성한다.자바 컴파일러 javac는 .java 코드를 바이트 코드인 .class 코드로 변환한다.바이트 코드는 JVM이 이해할 수 있는 중간 언어이다.JVM의 클래스 로더에서 .class
거의 한 달 동안 자바에 대해서 공부를 했다.우리의 계획은 한 달 동안 열심히 공부하고 매월 마지막 주 수요일(바뀔 수도 있음!)에 대면으로 모여서 면접 스터디를 하는 것이었다!어떤 방식으로 진행을 했냐면,,,6명 각자가 전체 부분에서 10개 정도 질문을 뽑아와서 한