java/java 심화

java/java 심화

Class 객체 - Reflection API

Class 객체 java.lang.Class 클래스는 모든 클래스의 메타 정보를 나타내는 클래스 클래스의 모든 정보 제공 : 생성자, 필드, 메서드, 접근 제어자,어노테이션 등등 클래스 당 1개만 존재 Class 객체 자체 메서드 존재 원리 Car class를 작성한 Car.java 파일이 존재 프로그램에서 참조변수로 해당 Car type을 부름 Car.java -> compile -> Car.class : 컴파일 완료 컴파일 된 .class 파일은 한 파일(xxx.java) 내에 여러 class 클래스명{}들이 존재하더라도 compile시 각각의 파일(.class)로 나누어준다. 그래서 Class 객체가 클래스당 1개만 존재가 가능 ClassLoader라는 것을 통해서 (위의 과정과 같이 클래스 정보..

java/java 심화

Object clone() - 얕은 복사, 깊은 복사

clone() _ 얕은 복사, 깊은 복사 clone() 인스턴스변수의 값만 복사하기 때문에 참조타입의 인스턴스 변수가 있는 클래스는 완전한 인스턴스 복제가 일어나지 않는다. 참조타입의 인스턴스 변수: 객체에 iv들이 존재하는데 iv 값이 다른 객체 주소를 가리키는 상황. 완전한 복제가 안된다는 의미: 객체까지는 복사가 됬는데 객체 내부의 iv가 가리기는 다른 객체는 서로 공유하는 상황 이와 같은 clone을 얕은 복사라고 한다. -> 서로 공유하는 객체가 존재하기 때문 clone() 사용 방법 clone의 얕은 복사로 인해 원본 객체에 영향을 끼치기 때문에 원본 보호 목적으로 특정 조건을 허용해야 clone()을 사용할 수 있도록 했다. implements Cloneable : interface 구현 접..

java/java 심화

List 구현

개요 LinkedList원리 Node를 통해서 객체들을 연결을 한 상태로 Node 내부에 data와 nextNode 주소, prevNode 주소 등이 들어갈 수 있다. 구현된 LinkedList 이용시 중간에 값 추가, 중간 값 삭제 등 배열보다 높은 성능을 보여준다. LinkedList 구현의 필요성 회전하는 순서 같이 LinkedList의 원리로 구현할 수 있는 부분들이 LinkedList에 구현이 되어있지 않다. ex) 1,2,3 이 저장된 list를 get(int index)을 통해서 뽑아낼때 indexrk list Node 수보다 많으면 예외발생 이 외에도 LinkedList를 직접 구현해야되는 상황이 생길시 구현을 할 줄 알아야한다. 구현 순서 LinkedList : 평소에 사용하는 Linke..

java/java 심화

Interface와 API

1. 인터페이스의 의미 인터페이스는 표준껍데기이다. 2가지 개념이 같이 움직인다. 표준이라는 것은 자신들이 만든 프로그램이 이런 표준이라고 상대방에게 알리는 것. 무슨 표준 규칙이 존재하는게 아니다. 상대방 기준에서 표준인 것. 2. 인터페이스 사용 하는 큰 개념들 2.1. 자바적 개념 추상메서드의 집합, 내부 변경이 쉽고 호환이 쉽다. 인터페이스와 연결된 객체는 인터페이스 내부의 실제 구현체와 의존하지 않아서 실제 구현체는 변경이 용의 구현체 : 인터페이스 구현체 연결체는 인터페이스 메서드 선언부로만 가지고 실제 구현체를 작동할수 있다. 인터페이스를 타입변수로 가진 실제 인터페이스 구현체는 설정창과 같은 곳에서 따로 관리 구현체 업데이트시 설정창의 인터페이스와 인터페이스 구현체를 새로 연결하면 된다. ..

java/java 심화

JVM 메모리 구조

1. 이전에 알고 있었던 JVM 메모리 구조 Method Area: class가 올라올 때 제일 먼저 static method와 static variable 생성 Call Stack: method 호출시 stack 올라오고 해당 stack에 local valiable 생성 Heap : 인스턴스 - 내부에 instance method, instance valiable 존재 하지만 위의 개념은 반은 맞고 반은 틀렸다. 맞은 점은 iv, im은 객체를 생성해야 사용가능하고 cv, cm은 객체를 생성하지 않아도 사용이 가능하다는 원리가 핵심이고 가장 중요한 부분이다. 틀렸다는 점은 내부적으로 저장된 위치와 어떻게 호출되었는지 이기에 실제로는 몰라도 크게 상관이 없다. 2. JVM 내부 작동 원리 3가지 존재 s..

wooweee
'java/java 심화' 카테고리의 글 목록