자바 (17) 썸네일형 리스트형 [자바] JVM 메모리 구조 자바의 프로그램의 실행 구조를 살펴보면, 자바 소스파일은 자바 컴파일러에 의해 바이트 코드(class 파일)로 변환된다. 바이트 코드를 JVM에서 읽어들인 다음 Class Loader를 통해 JVM Runtime Data Area로 로딩하게 된다. 로딩된 바이트코드들을 Execution Engine에서 명령어 단위로 읽어(해석)서 실행한다. Garbage Collector는 힙메모리 영역에 생성된 객체들 중에서 참조되지 않은 객체들을 탐색 후 제거한다. 이때 GC가 제거하는 시간은 언제인지 정확히 알 수 없다. GC역할을 수행하는 스레드를 제외한 나머지 모든 스레드들은 일시정지 상태가 된다. GC의 대상으로는 Heap area와 Method area가 있다. Method area : 모든 쓰레드가 공유하.. [자바] Tree Set 개념 및 활용 TreeSet은 이진 탐색 트리를 이용한 Set이다. 저장할때 정렬하면서 저장을 하기 때문에 따로 정렬을 할 필요가 없다. public static void main(String[] args) { TreeSet set = new TreeSet(); String from = "b"; String to = "d"; set.add("abc"); set.add("alien"); set.add("bat"); set.add("car"); set.add("Car"); set.add("dance"); set.add("dZZZZ"); set.add("dzzzz"); set.add("elephant"); set.add("elevator"); set.add("fan"); set.add("flower"); set.add("d.. [자바] Map과 Iterator Map 맵은 효율성면에서 굉장히 좋은 컬렉션이라고 생각한다. 키(key)와 값(value)를 한쌍(pair)으로 저장하고 있다. 키는 중복될 수 없고, 값은 중복이 허용된다. 만약 Map에 (1,3) 이 저장되고 (1,4)가 저장되면 나중에 들어온 (1,4)로 덮여쓰여진다. void clear() // Map의 모든 객체를 삭제한다. boolean containsKey(Object key) // key객체와 일치하는 Map의 key 객체가 있으면 true 없으면 false를 리턴한다. boolean containsValue(Object value) // value값이 있으면 true, 없으면 false를 리턴한다. Set entrySet() // Map에 저장된 key-value쌍을 Map.Entry타입.. [자바] Iterator, ListIterator 개념 및 사용법 Itorator 컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스 public interface Iterator{ boolean hasNext(); Object next(); void remove(); } public interface Collection{ ... public Iterator iterator(); ... } 컬렉션에 저장된 각 요서에 접근하는 기능을 가진 Iterator 인터페이스를 정의하고, Collection 인터페이스에는 Iterator를 구현한 클래스의 인스턴스를 반환하는 iterator()를 정의하고 있다. List list = new ArrayList(); Iterator it = list.iterator(); while(it.hasNext()){ // boolean has.. [자바] static 메모리 Static 메모리 static 키워드를 사용하면 데이터가 고정 메모리에 올라가기 때문에 효율적이고, static영역에 저장된 메모리는 모든 객체가 공유한다는 장점이 있지만, Garbage Collector가 관리하지 않아 무분별하게 사용하면 할당되지 않은 메모리의 낭비가 심해진다. static 변수는 클래스 변수다 static 키워드가 붙은 메소드는 객체를 생성하지 않고도 메소드에 접근이 가능하다. static 메소드 내부에서 Instance 메소드를 호출할 수 없다. - > 인스턴스 메소드는 반드시 객체 생성 후 호출 가능. class StaticStudyClass{ void instanceMethod() {} //인스턴스 메서드 생성 static void staticMethod() {} //stat.. [자바] 기본형 매개변수와 참조형 매개변수 (객체지향) 기본형 매개변수 class Data {int x;} class Ex6_6{ public static void main(String[] args){ Data d = new Data(); d.x = 10; System.out.println("main() : x = " + d.x); change(d.x); System.out.println("After change(d.x)"); System.out.println("main() : x " + d.x); //main() : x 10 } static void change(int x){ x = 1000; System.out.println("change() : x = " + x); //change() : x = 1000 } } 기본형 매개변수는 변수값을 읽기만 가능하다.. [자바] 힙(heap)과 스택(stack) 메모리 구조 Stack 정적으로 할당된 메모리 영역이다. 원시 타입(primitive)의 데이터가 함께 할당된다. Heap 영역에 생성된 Object 타입의 데이터의 참조값이 할당된다. 각각의 Thread는 각각의 Stack 메모리를 갖는다 Heap 동적으로 할당된 메모리 영역이다. 모든 Objcet 타입의 데이터가 할당 된다. Heap 영역의 Object를 가리키는 참조변수가 Stack에 저장된다. 생명주기가 긴 데이터들이 주로 저장된다. 몇개의 Thread가 존재하든 상관없이 하나의 Heap영역만 존재한다. public class Main { public static void main(String[] args) { int age = 29; String name = "sebang"; } } Stack에 29라는 값.. [자바] BufferedReader / StringTokenizer BufferedReader는 Scanner와 다르게 8192 char (16384 byte) 크기의 버퍼에 담아두었다가 한번에 전송하기 때문에 효율적이고 빠른 전송이 가능하다. Scanner https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html Scanner (Java Platform SE 8 ) Scans the next token of the input as a float. This method will throw InputMismatchException if the next token cannot be translated into a valid float value as described below. If the translation i.. [자바] Comparable, Comparator [Comparable] docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html#method.summary Comparable (Java Platform SE 8 ) This interface imposes a total ordering on the objects of each class that implements it. This ordering is referred to as the class's natural ordering, and the class's compareTo method is referred to as its natural comparison method. Lists (and arrays) of o docs.oracle.com Comp.. [자바] CompareTo CompareTo 숫자형 비교 int x = 5; int y = 3; x.compareTo(y) //1 x.compareTo(7) //-1 x.compareTo(5) //0 기준값과 비교대상이 같을 경우 : 0을 리턴 기준값이 비교대상보다 클 경우 : 1 기준값이 비교대상보다 작을 경우 : -1 문자열 비교 String str = "abc"; str.compareTo("abc") // 0 str.compareTo("ab") // 1 str.compareTo("a") // 2 str.compareTo("d") // -3 str.compareTo("") // 3 기준문자열과 비교대상이 같을경우 : 0 기준문자열에 비교대상이 포함돼 있을경우 : 문자열 길이의 차이만큼 리턴 기준문자열과 비교대상이 전혀 다른 문.. 이전 1 2 다음