JVM 메모리 영역(Method Area, Call Stack, Heap)
·
Programming/Java
보호되어 있는 글입니다.
Interface와 Abstract Class 차이
·
Programming/Java
인터페이스클래스 간 반드시 따라야 하는 행동 계약을 정의한다.여러 클래스가 공통된 동작을 제공하도록 강제한다.다중 상속을 지원한다.추상 클래스상속을 통해 코드를 재사용하거나 공통된 기능을 제공하기 위한 기본 클래스의 역할상속 계층 구조에서 사용된다. 다중 상속이 필요하지 않은 경우 적합하다.인터페이스는 다중 상속을 지원하고 모든 메서드가 추상 메서드이며, 구현을 강제합니다. 반면에 추상 클래스는 일부 구현을 가질 수 있고, 단일 상속만 지원합니다.
JDK와 JRE
·
Programming/Java
JDKJava Developmnet Kit개발과 실행을 위한 도구대표적으로 컴파일러(javac).java -> .calss 변환하여 JVM은 바이트코드(.class)를 기계어로 변환하여 실행JREJava Runtime Environment실행만을 위한 환경대표적으로 클래스 로더필요한 .class 파일을 메모리에 로드하여 JVM이 실행할 수 있도록 하는 역할
추상 클래스
·
Programming/Java
목차1. 추상 클래스 특징2. 인터페이스와 차이점3. 추상 클래스의 목적 "추상 클래스는 공통 기능을 제공하면서 하위 클래스가 필수적으로 구현해야 할 규격을 정의하여 일관성과 다형성을 지원하는 클래스 설계 도구이다." 1. 추상 클래스 특징- 일부 메서드를 구현하지 않고 서브 클래스에서 구체화하도록 강제하는 클래스- 인스턴스화 할 수 없다- 세부 구현은 자식 클래스가 맡는다.public abstract class Animal { public String kind; public void breath(){ System.out.println("숨 쉰다."); } //추상메서드 public abstract void sound();//구체적인 구현부는 없음!} 2. 인터페이..
SOLID, 객체 지향 설계 원칙
·
Programming/Java
SOLID객체 지향 설계 다섯 가지 원칙- S: Single Responsibility Principle- O: Open Closed- L: Liskov Substitution Principle- I: Interface Segregation Principle- D: Dependency Inversion PrincipleS: Single Responsibility Principle, 단일 책임 원칙- 하나의 클래스는 하나의 책임(기능)을 가져야 한다.- 책임의 캡슐화public class Car{ private Seat seat; private Heater heater; private Wheel wheel;}O: Open Closed Principle, 개방 폐쇄 원칙- 기능 추가 시, 기존..
업캐스팅, 다운캐스팅
·
Programming/Java
캐스팅이란?- 타입을 변환하는 것. 형변환- 부모와 자식 클래스 간 형변환 가능 Upcasting- 자식 클래스의 객채가 부모 클래스 타입으로 형변환 되는 것- p는 Student 객체를 가리키지만, p는 Person 타입이기 때문에 Person 멤버에만 접근 가능하다.class Person{ String name; Person(String name){ this.name = name; }}class Student extends Person{ String check; Student(String name){ super(name); }}public class Main{ public static void main(String[] args){ Student s = new Student("홍길동"); Per..
ArrayList vs LinkedList
·
Programming/Java
모두 Java에서 제공하는 List 인터페이스를 구현한 Collection 구현체이다. 하지만 인터페이스만 같을 뿐 내부적으로 동작하는 방식은 다르다. ArrayList- 내부적으로 데이터를 관리.- 데이터 추가/ 삭제를 위해 임시 배열을 생성해 데이터를 복사- 인덱스 기반 자료구조이기 때문에 검색에 유리- 대량의 자료를 추가/삭제 하는 경우 그만큼 데이터의 복사-> 성능 저하 LinkedList- 데이터를 저장하는 각 노드는 이전 노드와 다음 노드 상태만 알고 있다. - 추가/ 삭제 시 불필요한 데이터 복사가 없어 데이터 추가/ 삭제에 유리- 검색 시, 인덱스가 없기 때문에 처음부터 노드 순회-> 성능 저하데이터 검색, 삽입, 삭제 시 성능 비교검색- ArrayList: O(1). 인덱스 기반 자료구조..
Collections.sort()
·
Programming/Java
오름차순/ 내림차순/ 대소문자 구분 없이 정렬import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;public class SortArrayList {public static void main(String[] args) {// ArrayList 준비ArrayList list = new ArrayList(Arrays.asList("C", "A", "B", "a"));System.out.println("원본 : " + list); // [C, A, B, a]// 오름차순으로 정렬Collections.sort(list);System.out.println("오름차순 : " + list); // [A, B, C, a]// 내림..
Wildcard <?>
·
Programming/Java
와일드카드란?The wildcard ? in Java is a special kind of type argument[1] that controls the type safety of the use of generic (parameterized) types. It can be used in variable declarations and instantiations as well as in method definitions, but not in the definition of a generic type.[  public static void peekBox(Box box){ System.out.println(box); }// 제네릭 메소드 정의public static void peekBox(Box box){ Sy..
Generic Method (Basic)
·
Programming/Java
제네릭 메소드class BoxFactory{ public static Box makeBox(T o){ Box box= new Box(); box.set(o); return box; } }클래스 전부가 아닌 메소드 하나에 대해 제네릭으로 정의 제네릭 메소드와 제네릭 클래스의 차이- 제네릭 메소드의 T 결정: 호출 시점- 제네릭 클래스의 T 결정: 인스턴스 생성 시점 오토 박싱: 기본 자료형이 인자로 들어와도 오토 박싱을 통해 객체 타입으로 변환