[JAVA] List & Set &Map
·
Programming Language/JAVA
List 데이터를 순차적으로 저장 데이터의 중복 허용 데이터로 null 허용 Set 순서 없이 Key로만 데이터를 저장 Key 중복 허용 안함 Key로 null 허용 안함 Map 순서 없이 Key, Value로 데이터를 저장 Value는 중복을 허용하지만 Key의 중복을 허용하지 않음 Key로 null을 허용 안함
[JAVA] Call By Value와 Call By Reference
·
Programming Language/JAVA
Call By Value 인자로 받은 값을 복사하여 처리하는 방식 Call By Value에 의해 넘어온 값을 증가 시켜도 원래의 값이 보존됨 값을 복사하여 넘기기 때문에 메모리 사용량이 늘어남 Call By Reference 인자로 받은 값의 주소를 참조하여 직접 값에 영향을 주는 방식 값을 복사하지 않고 직접 참조하기 때문에 속도가 빠름 원래의 값에 영향을 주는 리스크가 존재함 public class Main { public static void main(String[] args) { Foo f = new Foo("f"); System.out.println(f.string); changeReference(f); // It won't change the reference! modifyReference(..
[JAVA] 지역 변수 & 전역 변수 & static(정적) 변수
·
Programming Language/JAVA
지역 변수(stack 영역) 지역 안에서 선언된 변수 그 영역의 닫는 중괄호를 만났을 때 메모리에서 해제됨 사용자가 직접 초기화 해야 함 다른 영역에서 접근할 수 없기 때문에 보안성이 뛰어남 public class Main { public static void main(String[] args) { int a = 0; //지역변수. } } 전역 변수(data 영역) 클래스 영역 안에 있고, 전체 영역에서 사용 가능한 변수 클래스 영역 외의 어떠한 영역에도 포함되어 있지 않음 new를 만났을 때 초기화 됨 프로그램 종료 시 메모리에서 해제 됨 다른 영역에서도 접근할 수 있기 때문에, 보안성이 상대적으로 낮음 전역 변수 종료 static 변수 : 다른 클래스에서도 호출 가능 인스턴스 변수 : 같은 클래스 내..
[JAVA] 인터페이스(interface)
·
Programming Language/JAVA
인터페이스 클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등 여러가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않음 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미함 추상 메소드와 상수만을 포함할 수 있음(변수 가질 수 없음) 다중 상속 지원 모든 메소드는 선언부만 존재 구현 클래스는 선언된 모든 메소드를 overriding함 사용 이유 ex) 한국인을 위한 번역기를 만들 예정, 그러나 전세계 언어가 너무 많아서 업무를 나눠서 한 친구는 영어 번역 클래스를, 한 친구는 중국어 번역 클래스를 생성하기로 함 결과물 1 /** * @author 팀원1 */ public class Eng..
[JAVA] 가비지 컬렉션(Garbage Collection)
·
Programming Language/JAVA
가비지 컬렉션(Garbage Collection, GC) 자바의 메모리 관리 방법 중의 하나로 JVM의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체를 모아 주기적으로 제거하는 프로세스 가비지 컬렉터(Garbage Collector) 가비지 컬렉션을 수행하는 주체 가비지 컬렉션의 필요성 가비지 컬렉션을 이용하게 되면 프로그래머가 동적으로 할당한 메모리 영역 전체를 완벽하게 관리하지 않아도 되고, 버그나 불필요한 작업을 해소할 수 있는 장점 하지만, 동적으로 할당된 메모리가 사용되지 않는 경우엔 문제가 발생 메모리 해제 시점을 추적해야 하는데 비용이 들게 되고, 프로그래머가 수동으로 메모리 할당과 해제를 일일이 해줘야함. 그러므로 가비지 컬렉션이 필요 가비지 컬렉션의 동작 매커니..
[JAVA] JVM
·
Programming Language/JAVA
JVM(Java Virtual Machine) 자바 가상 머신 운영체제에 종속적이다. 자바와 운영체제 사이에서 중개자 역할을 수행하며, 자바가 운영체제에 구애받지 않고 프로그램을 실행할 수 있도록 도와줌 가비지 컬렉터를 사용한 메모리 관리도 자동으로 수행하며, 다른 하드웨어와 다르게 레지스터 기반이 아닌 스택 기반으로 동작 자바 프로그램의 실행 단계 자바 컴파일러에 의해 자바 소스 파일은 바이트 코드로 변환됨 바이트 코드를 JVM에서 읽어 들인 다음에, 복잡한 과정을 거쳐 어떤 운영체제 간에 프로그램을 실행할 수 있도록 만드는 것 ⇒ 만약, 자바 소스 파일은 리눅스에서 만들었고 윈도우에서 이 파일을 실행하고 싶다면, 윈도우용 JVM을 설치만 하면 됨 JVM 메모리 구조 자바 프로그램의 실행 단계 Garb..