study/java (36) 썸네일형 리스트형 자바/JAVA Class 클래스 자바의 모든 모든 클래스, 인터페이스는 컴파일 후에 class 파일이 생성된다. class 파일에는 객체의 정보(필드, 메소드, 생정자 등)가 있다. Class 클래스는 class 파일에서 객체의 정보를 가질 수 있다. 다음과 같은 방법 Class 인스턴스를 얻을 수 있다. // 1. 생성된 인스턴스에서 class 정보 갖고 오기 String name = new String(); Class classTest = name.getClass(); // 2. 이미 컴파일 된 클래스에서 class 정보 갖고 오기. 객체가 생성되지 않아도 가져올 수 있다. Class classTest = String.Class; // 3. Class의 forName() 메소드로 동적로딩 하기 Class classTest = Cla.. 자바/JAVA static, final, static final static, final, static final의 특성이 헷갈려서 적는 글. static : 클래스 멤버(정적 멤버)를 선언할 때 사용하는 키워드. final : 상수나 메소드,클래스를 정의한 뒤 변경하지 못하게 할 때 사용한다. 변수에 붙이면 상수를 만든다 메소드에 사용하면 재정의할 수 없다. 클래스에 붙이면 상속할 수 없다. static final : static + final의 특성을 갖는다. 변수에 붙이면 정적 상수. 메소드에 붙이면 정적 메소드를 만든다. 자바/JAVA 메모리 사용 영역(Runtime Data Area) 인스턴스: 클래스를 구현한 실체. 힙 메모리에 멤버 변수의 크기에 따라 메모리가 생성된다. 클래스를 기반으로 new 키워드를 이용해 여러 인스턴스를 생성한다. 인스턴스가 생성되면, Heap 메모리에 올라간다. 인스턴스를 참조하는 레퍼런스 변수(참조 변수)는 Stack 메모리에 올라간다. 참조 변수에는 참조 값이 할당된다. 참조 변수 - 메모리에 생성된 인스턴스를 가리키는 변수 참조 값 - 생성된 인스턴스의 메모리 주소 값 JVM은 OS에게 할당받은 메모리 영역(Runtime Data Area)을 메소드, 힙, JVM 스택으로 세부영역으로 나눠 사용한다. 메소드 영역(Method Area) JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역. 사용되는 클래스들을 클래스 로더로 읽어 클래스별로 정적 필.. 자바/JAVA LIFO, FIFO 컬렉션 후입선출 LIFO Last In First Out: 나중에 넣은 객체가 먼저 나오는 자료구조. 선입선출 FIFO First In First Out: 먼저 넣은 객체가 먼저 나오는 자료구조. 컬렉션 프레임워크에는 LIFO를 지원하는 Stack 클래스, FIFO를 지원하는 Queue 인터페이스를 제공한다. Stack의 주요 메소드 리턴 타입 메소드 설명 E push(E item) 주어진 객체를 스택에 넣는다. E peek() 스택의 맨 위 객체를 가져온다. 객체를 제거하지는 않는다. E pop() 스택의 맨 위 객체를 가져오고, 객체를 스택에서 제거한다. 스택 생성 Stack stack = new Stack(); Stack stack = new Stack(); Queue의 주요 메소드 리턴 타입 메소드 설명.. 자바/JAVA 스레드(2) 스레드는 다양한 상태를 가지게 된다. 스레드 상태 제어: 실행 중인 스레드의 상태를 변경하는 것. 스레드 객체를 생성하고 start() 메서드를 호출하면 바로 스레드가 실행되는 것이 아니라 실행 대기 상태가 된다. 실행 대기 상태(Runnable): 바로 실행할 준비가 된 상태. 실행을 기다리는 상태. 실행 상태(Running): 실행 대기 상태인 스레드 중에서 OS가 하나를 선택하고 CPU가 스레드의 run() 메서드를 실행시킨다. 이때가 실행 상태이다. 실행 상태 스레드는 run() 메소드를 모두 실행하기 전에 실행 대기 상태로 돌아갈 수 있고, 실행 대기 상태에 있는 다른 스레드가 선택되어 실행 상태가 되기도 한다. 따라서 스레드는 실행 대기 상태와 실행 상태를 번갈아가면서 자신의 run() 메서드.. 자바/JAVA 스레드(1) 프로세스(process): OS에서 실행 중인 하나의 애플리케이션이다. OS로부터 메모리를 할당받아 코드를 실행한다. 하나의 애플리케이션은 멀티 프로세스를 만들기도 한다. -> 멀티 프로세서의 예) 미디어 플레이어는 동영상 재생과 음악 재생을 동시에 한다. OS는 멀티 태스킹할 수 있도록, 메모리를 프로세스마다 할당하고 병렬로 실행시킨다. 멀티 태스킹은 OS가 두 가지 이상의 작업을 처리하는 것인데, 이것은 멀티 프로세스와 다르다. 미디어 플레이어는 하나지만 멀티 프로레스이다. 스레드(thread): 프로세스 내에서 실행되는 하나의 코드 실행(작업) 흐름 단위이다. 하나의 프로세스는 하나 이상의 스레드를 갖는다. 멀티 스레드: 하나의 프로세스 내에 동시 실행을 하는 스레드들이 2개 이상인 경우. 멀티 프.. 자바/JAVA 스트림과 입출력 입출력 클래스는 다양하고, 사용법도 다양하기 때문에 개념만 잡고 사용할 때마다 문법을 찾아서 사용하자. 입출력을 알기 위해 스트림을 알아야 한다. * 스트림은 다양한 장치에 독립적으로 일관성 있게 데이터 입출력을 제공하는 방식이다. * 입출력이 구현 되는 곳에서는 모두 I/O 스트림을 사용한다.// 키보드, 파일, 메모리, 네트워크 * 단방향이다. 스트림은 입력과 출력, 바이트와 문자, 기반과 보조로 나눌 수 있다. 입력 스트림: 대상으로부터 자료를 읽어 들이는 스트림 출력 스트림: 대상으로부터 자료를 출력하는 스트림 바이트 단위 스트림: 바이트 단위로 처리하고 동영상, 음악 파일 등을 읽고 쓸 때 사용하는 스트림(XXXInputStream, XXXOutputStream) 문자 단위 스트림: 문자 처리를.. 자바/JAVA Collection Framework 생활코딩 강의를 듣고 적는 글입니다. 컬렉션 프레임워크는 여러 데이터를 효과적으로 처리하는 클래스(자료구조와 알고리즘)의 집합이다. java.util 패키지에서 제공한다. Collection은 객체의 저장을 뜻하고, Framework는 사용 방법을 정해놓은 라이브러리를 뜻한다. 컬렉션 프레임워크의 구조를 보면 Collection은 인터페이스고 단일 객체를 다룬다. Set과 List는 Collection을 상속받는 하위 인터페이스이다. 그리고 HashSet, ArrayList는 각각 인터페이스의 구현 클래스이다. 정확히는 AbstractSet, AbstractList가 구현하고 그걸 HashSet과 ArrayList가 상속받는다. List 컬렉션 배열과 비슷하게 객체를 인덱스로 관리한다. 배열과 차이점은 .. 이전 1 2 3 4 5 다음