목록Java (10)
개발하는 삶

JVM 자바 가상머신 = 자바 소스 코드 -> 자바 바이트 코드 변환 (자바 가상 머신이 이해할 수 있는 자바 소스코드) 자바 프로그램의 실행 구조 하드웨어 > 운영체제 > JVM > 자바프로그램 JVM은 운영체제 위에서 동작하는 소프트웨어임 자바 프로그램을 운영체제에 상관없이(리눅스, 윈도우 등) 실행시키기 위해 따로 설계됨 바이너리 코드 읽기/검증/실행 동작원리 Java Source(.java) -> Java Compiler (javac) -> Java Byte Code(.class) -> JVM(Class Loader, Runtime Data Areas, Execution Engine) 해석 ▼ 자바파일 -> 컴파일러 -> 컴파일 된 자바 바이트코드 -> JVM의 클래스 로더 -> 런타임 데이터 영..

Stack, Queue collection 인터페이스를 상속받음 java.util 내의 클래스 Stack 마지막에 저장된 것을 제일 먼저 꺼내게 된다 활용 예시) 수식계산, 웹브라우저의 뒤로/앞으로 Stack의 메서드 boolean empty() Stack이 비어있는지 알려준다 Object peek() Stack의 맨 위에 저장된 객체를 반환 Object pop() Stack의 맨 위에 저장된 객체를 꺼낸다(삭제) Object push(Object item) Stack에 객체(item)을 저장한다 int search(Object o) Stack에서 주어진 객체를 찾아서 그 위치를 반환. 만약 못찾으면 -1을 반환 (배열과 달리 0이 아닌 1부터 시작(처음이 1)) Queue 제일 먼저 저장한 것을 제일 ..

Stream 다양한 데이터소스(컬렉션/배열..)를 표준화된 방법으로 다루기 위한 것 병렬 처리가 쉬움 (연산을 병렬로 수행) Stream intStream = list.stream(); //컬렉션 Stream strStream = Stream.of(new String[]{"a","b","c"}) //배열 1. 스트림만들기 2. 중간연산 여러번하기 3. 최종연산 중간연산 연산결과가 스트림인 연산. 여러번 적용가능 걸러내기라고 보면 됨 최종연산 연산결과가 스트림이 아닌 연산. 단 한번만 적용가능 스트림의 특징 데이터를 읽기만 하고 변경하지 않음 일회용 (최종연산 후 필요하면 다시 스트림을 생성해야함) 최종 연산 전까지 중간연산이 수행되지 않음 (지연된 연산) 따라서 아래같은 코드가 가능해짐 작업을 내부 반복..

람다식 자바에 함수형 언어를 넣은거 함수(메서드)를 간단한 식으로 표현한 방법 함수와 메서드의 차이 근본적으로 동일하지만 함수는 클래스 밖에 있고, 메서드는 클래스 내에 있는것 익명함수가 아니라 익명객체 라고 함 객체의 선언과 생성을 동시에 해서 익명객체를 다루기위한 참조변수가 필요할 때 : 함수형 인터페이스를 사용함 람다식 작성하기 메서드의 이름, 반환타입(int 등) 제거 후 매개변수 + -> + {} 으로 완성 return문 생략. 끝에 ; 안붙임 매개변수의 타입은 추론 가능시 생략 가능(int a 같은거 int 지워도 됨) 매개변수가 하나이면 괄호 생략 가능(타입 없을때만) (a) -> a*a //를 a -> a*a //로 바꿀 수 있으나 (int a) -> a*a //를 int a -> a*a ..

제네릭스 컴파일 시 타입을 체크해주는 기능 잘못된 타입이 사용되는 문제를 줄여줌 후에 형변환 할 필요없음. 코드가 간결해진다. 타입을 로 가지는 클래스, 인터페이스 public class 클래스명{...} public interface 인터페이스명{...} ArrayList list = new ArrayList(); list에 Object 타입만 넣을 것이라는 뜻 import java.util.ArrayList; public class GenericTest { public static void main(String[] args) { //ArrayList list = new Arraylist(); //~jdk1.5(지네릭스 도입이전) ArrayList list = new ArrayList(); //지네릭스..

예외와 예외클래스 에러 : JVM 실행에 문제가 생겼다는 뜻 예외 : 사용자의 잘못된 조작/개발자의 잘못된 코딩으로 인해 발생하는 오류 모든 예외는 예외처리가 필요하다 모든 예외클래스는 java.lang.Exception 클래스를 상속받음 NullPointerException 객체가 없는 상태(null)에서 객체를 사용하려 하면 예외 발생 ArrayIndexOutOfBoundsException 배열에서 인덱스 범위를 초과하여 사용할 때 예외 발생 NumberFormatException 문자열 내에 숫자로 변환 될 수 없는 문자가 포함될 때 예외 발생 ("a100" 과 같은것) ClassCastException 상위클래스 - 하위클래스, 인터페이스 - 구현클래스 관계가 아닌데 형변환 할 때 예외 발생 예외..