java 문법을 이미 알고 있지만, 진짜 제대로 하기 위해 문법을 다시 한번 훑고 정리하려고 한다. java의 탄생 과정부터 이야기해보자.
1. 간단하다 2. 객체 지향적 3. 인터프리터 언어 4. 포인터 연산 x 5. 자료형에 민감 6. 독립적 플랫폼 7. 멀티 스레드 8. 동적
JVM과 JRE/JDK, JDK의 종류와 이에 따른 Java 실행 과정
문자열, 문자, 숫자, 논리, 연산자
변수와 상수, 기본형과 레퍼런스, 변수의 종류
다양한 값의 형태별로 어느정도의 크기를 한 값으로 취급할 것인지 Compiler와 약속한 키워드StringBuffer도 문자열을 다루지만, String에 비해 메모리의 낭비가 없고 빠르다.리스트(List)는 배열과 비슷하지만 훨씬 편리한 자료형이다.가장 큰 차이점은 배
자동 형변환과 강제 형변환, Wrapper, final
산술 / 증감 / 비교 / 논리 / 삼항 / 연산자 우선순위
메소드 선언, Static, 패키지, Import
if, switch, for, for each, while, do-while
배열에 대한 모든 것
enum 자료형은 서로 연관 있는 여러 개의 상수 집합을 정의할 때 사용한다.코드를 명확하게 작성할 수 있는 장점이 있다.예를 들어 아이유의 노래 목록을 다음과 같다고 가정해 보자.이렇게 3가지 노래가 있다면, enum으로 상수 집합을 만들고 접근할 수 있다.
📌 객체 지향 언어란? 프로그램을 다수의 객체로 만들고, 이들끼리 서로 상호작용하도록 만드는 프로그래밍 언어 📌 객체 지향 언어의 특징 🌈 1. 캡슐화 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것 객체는 캡슐화가 기본 원칙이지만 외부와의 접속을 위해 몇 부분만 공개 노출한다. 자바에서 객체는 클래스라는 캡슐을 사용하며, 필드(멤버 변수)...
객체를 만들어 내기 위한 설계도, 객체의 추상화서로 다른 자료형의 데이터들을 사용자 정의로 묶어 새로운 타입을 정의한다.클래스 모양 그대로 생성된 실체클래스의 모양대로 모두 동일한 속성을 가지고 생성되지만, 각자만의 고유한 값을 가진다.객체를 클래스의 인스턴스(inst
📌 상속 부모 클래스에 만들어진 필드와 메소드를 자식 클래스가 물려받는 것 중복 코드를 제거하여 클래스를 간결하게 구현할 수 있게 한다. 멤버 외에 Type 또한 상속이 된다 → 다형성 🌈 Java 상속의 특징 자바는 단일 상속만을 지원한다. > 💡 단일 상속 하나의 Class만을 부모 Class로 가지는 것 자바에서는 상속의 횟수에 영향을 두지...
객체가 생성될 때 객체의 초기화를 위해 실행되는 메서드이다.객체가 생성되는 순간에 자동으로 호출된다.매개변수와 실행 코드가 없어 아무 일도 하지 않고 단순 리턴하는 생성자생성자는 반드시 하나 이상 있어야 하므로 생성자를 지정하지 않으면 기본 생성자가 자동으로 생성된다.
현재 실행되고 있는 메소드가 속한 객체에 대한 레퍼런스이다.컴파일러에 의해 자동 관리되므로, 우리는 사용하기만 하면 된다!생성자가 다른 생성자를 호출할 때 사용반드시 생성자 코드에서만 호출할 수 있다.반드시 같은 클래스 내에서 다른 생성자를 호출할 때 사용된다.this
📌 객체 배열 객체를 원소로 하는 객체 배열 Reference 변수에 대한 배열 🌈 객체 배열의 선언과 할당 🌈 객체 배열의 저장구조 arr[index]가 하나의 참조형 변수라고 생각하자.
📌 접근 지정자 객체를 캡슐화하기 때문에, 객체에 다른 객체가 접근하는 것을 허용할지, 말지를 지정한다. 📌 클래스 접근 지정 🌈 public 패키지에 상관없이 어떤 클래스에게도 사용이 허용된다. > 💡 패키지(package) 자바는 서로 관련 있는 클래스 파일들을 패키지에 저장하여 관리한다. 🌈 디폴트 클래스(접근 지정자 생략) 같은 패키지...
🌈 Static 멤버 클래스당 하나씩 생기는 멤버로, 동일한 클래스의 모든 객체들에 의해 공유된다. 클래스 멤버라고도 한다(non Static 멤버는 인스턴스 멤버라고도 한다.) 전역 변수, 전역 함수를 만들 때 활용된다. 🌈 Static vs non Static ||non-static 멤버|static 멤버| |---|---|---| |선언|clas...
📌 final 자료형에 값을 단 한 번만 설정할 수 있게 강제하는 키워드이다. 값을 한 번 설정하면 그 값을 다시 설정할 수 없다. 🌈 final 자료형/필드 자료형의 값을 다시 바꿀 수 없게 상수로 취급된다. 클래스 내에서 필드 선언 시에도 같다. 🌈 final 클래스 final이 클래스 이름 앞에 사용되면 클래스를 상속받을 수 없다. 🌈 f...
📌 캐스팅 자바의 상속 관계에 있는 부모와 자식 클래스 간에는 서로 간의 형변환이 가능하다. 클래스는 reference 타입으로 분류되므로 이를 참조형 캐스팅(업캐스팅/다운캐스팅)이라 한다. 클래스의 캐스팅 목적은 사용할 수 있는 멤버의 갯수를 조절하는 것이다. 🌈 업캐스팅(upcasting) 자식 클래스의 객체에 대한 레퍼런스를 부모 클래스 타입으로...
📌 오버라이딩(Overriding) 부모 클래스와 자식 클래스의 메소드 사이에 발생하는 관계 부모 클래스에 있는 메소드를 자식 클래스에서 재작성하는 것 오버라이딩은 동적 바인딩을 유발시킨다. > 💡 동적 바인딩 실행할 메소드를 컴파일 시에 결정하지 않고 실행(runtime) 시에 결정하는 것 오버라이딩된 메소드가 항상 실행하도록 보장한다. 오버라이딩...
📌 추상 메소드(abstract method) 선언은 되어 있으나 코드가 구현되어 있지 않는, 즉 껍데기만 있는 메소드이다. abstract 키워드와 함께 원형만 작성하고 코드는 작성하지 않는다. 📌 추상 클래스(abstract class) 추상 클래스가 되는 경우는 다음 2가지로서, 모두 abstract 키워드로 선언해야 한다. 추상 메소드를 포함하...
📌 인터페이스? UBS 인터페이스, SATA 인터페이스 등으로 많이 사용하는 용어이다. 이때 인터페이스는 서로 다른 하드웨어 장치들이 데이터를 주고받을 수 있는 규격이다. 이러한 규격을 정해놓으면 장치들을 규격화하여 누가 만들건 문제없이 결합할 수 있게 된다. 소프트웨어에도 이 개념을 적용할 수 있다. 소프트웨어를 규격화된 모듈로 만들고, 서로 인터페이스...
📌 제네릭(Generic) 모든 종류의 타입을 다룰 수 있도록, 클래스나 메소드를 타입 매개변수을 이용하여 선언한다. 클래스 코드를 찍어내듯이 생산할 수 있도록 데이터 타입을 일반화(generic)시키는 도구이다. 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에
📌 오류(Error) System상에서 프로그램에 심각한 문제를 발생하여 실행중인 프로그램이 종료되는 것 📌 예외 처리(Exception Handling) 프로그램이 실행 중 오류가 발생했을 때 적절히 대응함으로써(handling) 다른 처리 방식으로 코드의 흐름을 옮기는 것 🌈 예외 Class 계층 구조 Checked Exception : 예외처...
📌 레코드 자바 레코드(Java Record)는 Java 16부터 추가된 기능으로, 데이터 클래스를 정의할 때 코드를 간결하게 작성할 수 있게 도와주는 역할을 한다. DTO 등 데이터 전달을 목적으로 하는 클래스를 작성할 때, getter, setter, equals