목록JAVA (42)
코딩항해기
StringBuilderString은 불변(immutable)객체로 String은 한 번 생성되면 변경될 수 없다. 즉, 연결연산자를 사용해 문자열을 연결하면 연결 할 때마다 기존의 String 객체는 가비지 컬렉터로 들어가고, 새로운 String 객체가 생성된다. 이러한 행위는 메모리를 많이 소모하게 된다. 이러한 점을 해결하기 위한 것이 StringBuilder로, StringBuilder는 변경 가능한 문자열을 만든다. StringBuilder의 연결은 새로운 객체를 생성하는 것이 아닌 기존 데이터에 연결하는 방식으로 속도도 빠르고 부하도 적다.긴 문자열을 더하거나, 자주 더할 때 사용하면 용이하다. (비슷한 종류로는 StringBuffer가 있다.) StringBuilder와 StringBuffe..
POJO (Plain Old Java Object)오래된 방식의 간단한 자바 오브젝트라는 말로서 Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에 반발해서 사용되게 된 용어이다.여기서 오래된 방식의 간단한 자바 오브젝트란 특정 기술에 종속되지 않은 순수한 자바 객체를 의미한다. POJO를 지향해야하는 이유스프링 이전에는 원하는 엔터프라이즈 기술이 있다면 그 기술을 직접적으로 사용하는 객체를 설계했다. 즉, 특정 기술과 환경에 종속된 것으로 가독성이 떨어지고 유지보수에 어려움이 생겼다. 그리고, 특정 기술의 클래스를 상속받거나 직접 의존하게 되어 확장성도 떨어지게 됐다.객체 지향의 장점을 잃어버리게 되므로, 객체 지향의 장점을 가지고 있었던..
자바 입출력 스트림 특징자바에서는 입출력이 동시에 진행되는 것이 아니라 독립적으로 한 가지 기능만 동작하기 때문에 데이터를 교환하기 위해서는 입력 스트림과 출력 스트림이 따로 필요하다.스트림은 입출력 장치와 자바 프로그램 간의 연결 통로로 스트림의 양 끝에서 전달이 이루어진다.단방향 통신이므로 입력 스트림과 출력스트림을 별도로 사용해야하며 FIFO(First In Fires Out) 선입선출 구조이다.연속된 데이터의 흐름으로 입출력 진행 시 다른 작업을 할 수 없는 상태가 된다.입출력 대상을 변경하기 편하며 동일한 프로그램 구조를 유지할 수 있다. 입출력 스트림의 종류IO(input/output) 입출력바이트 기반 스트림byte단위로 파일을 읽고 출력할 때 사용된다.모든 타입의 데이터가 가능하다.Inpu..
스레드 하나의 프로세스 내에서 작업을 처리하는 흐름의 단위이다.스레드는 생성, 실행, 종료되기까지 다양한 상태를 가지며, 각 스레드의 상태는 스레드 클래스에 정의되어있다.Thread.State로 타입을 알 수 있다.상태상수설명생성NEW스레드 객체가 생성되었지만 아직 start() 메서드가 생성되지 않은 상태 이다.대기RUNNABLE실행 대기 또는 실행 상태로 언제든지 갈 수 있는 상태 이다.일시정지WATING다른 스레드가 종료될 때까지 대기하는 상태 이다.TIMED_WATING주어진 시간동안 대기하는 상태 이다.BLOCKED락이 풀릴 때까지 대기하는 상태 이다.종료TERMINATED수행을 종료한 상태 이다. 프로세스프로세스는 컴퓨터에서 실행 중인 프로그램을 의미하며, 프로그램이 실행되면 운영 체제에 의..
람다식 Lambda expression함수의 이름이 없는 익명함수(anonymous function)를 만들기 위한 표현식이다. 식과 문값 Value식이 평가되어 생성된 결과로, 프로그램이 조작할 수 있는 어떤 표현이다.식 Expression식 또는 표현식이라고 하며 값을 결정짓기 위해 평가 될 수 있는 구문이다. 문 Staement프로그램을 구성하는 기본 단위이자 최소 실행 단위이다.문은 데이터에 어떤 액션을 취할 것인지 결정할 수 있고 식을 내부 요소로 가질 수 있다. 람다식은 이름에서도 알 수 있듯 식에 해당한다.2 + 3 // 5로 평가되는 연산식이다.4 ≠ 4 // flase라는 값으로 평가되는 관계식이다.y + 6 // 변수도 값으로 평가되므로 역시 식이다.const a = 1; // 선언문..
체크 예외와 비체크 예외 체크 예외 checked exception체크 예외는 RuntimeException 클래스를 상속받지 않은 예외 클래스들이다. 체크 예외는 복구 가능성이 있는 예외이므로 반드시 예외를 처리하는 코드를 함께 작성해야 한다. 대표적으로 IOException, SQLException 등이 있으며, 예외를 처리하기 위해서는 try catch 문으로 내부에서 처리해주거나 throws를 통해 메서드를 사용하는 측에서 처리하게 할 수 있다. 만약 예외를 처리하지 않으면 컴파일 에러가 발생한다. 비체크 예외, 언체크 예외 unchecked exceptionRuntimeException 클래스를 상속받는 예외 클래스들은 복구 가능성이 없는 예외들이므로 컴파일러가 예외처리를 강제하지 않는다. 비체..
[JAVA] 배열 (+index, Arrays)배열Array 같은 자료형의 여러 데이터를 저장할 수 있는 자료구조 배열 같은 자료형의 변수를 지정하여 여러 데이터를 저장할 수 있는 저장공간이다.이렇게 여러 데이터를 담을 수 있는 구조minibcake.tistory.com 2차원 배열배열의 값으로 배열이 담긴 구조로, 행과 열이 존재하는 구조이다.다차원 배열 중 하나로, 여기서 한 번 더 나가가게 되면 다른 다차원 배열인 3차원 배열이 된다. 2차원 배열 선언자료형[][] 배열명 = new 자료형[행][열]; 자료형[][] 배열명 = {{값1, 값2, 값3},{값1, 값2, 값3}};//3차원 배열은 []괄호가 3번 있고, 값 안에 다시 배열이 담긴다. 2차원 배열 길이배열명.length; //행..
에러와 예외에러(Error)java.lang.Error 클래스의 하위 클래스들이다. Error는 메모리가 부족하는 등과 같이 시스템이 비정상적인 상황인 경우에 사용한다. 주로 JVM에서 발생시키기 때문에 코드에서 잡아서는 안되며, 잡아서 대응할 수 있는 방법도 없다. 따라서 시스템 레벨에서 특별한 작업을 하는게 아니라면 이러한 에러 처리는 하지 않아도 된다. 예외(Exception)java.lang.Exception 클래스와 하위 클래스들은 Error와 달리 애플리케이션 코드에서 예외가 발생하였을 경우에 사용된다. 그리고 Exception 은 다시 체크 예외와 언체크 예외로 구분된다. 발생 시점 예외 구분확인된 예외, 체크 예외 (checked Exception)컴파일 단계에서 발생하는 예외미확인 예외..
내부 클래스두 클래스 간에 서로 쉽게 접근하여 사용할 수 있도록 만든 것이다.중첩 클래스라고도 하며, 바깥쪽 클래스를 외부 클래스, 안쪽 클래스를 내부 클래스라고 한다. 내부 클래스의 종류인스턴스 클래스외부 클래스의 멤버 변수와 같은 위치에 선언한다주로 외부 클래스의 멤버 변수와 관련된 작업에 사용될 목적으로 선언한다.외부클래스 멤버 변수위치정적 클래스외부 클래스의 클래스 변수와 같이 static 키워드가 부여된다.외부 클래스 클래스 변수 위치지역 클래스외부 클래스의 메서드 내부에서 선언하여 사용된다.메서드 영역에서 선언되기 때문에 메서드 내부에서만 사용할 수 있다.외부 클래스 메서드 안 내부 클래스의 선언public class 외부클래스 { private String 외부클래스멤버; pu..
상속 (Inheritance)기존에 선언된 클래스의 멤버(생성자는 제외)를 새롭게 만들 클래스에서 사용하고 싶을 때, 상속을 받아 새로운 기능만 추가 할 수 있도록 해준다. 여러 클래스 선언 시 멤버가 겹치는 경우, 부모 클래스를 먼저 선언하여 공통멤버를 자식 클래스들에게 상속하는 방식으로 사용할 수 있다. 상속은 단일상속만 할 수 있다.(자식 클래스는 하나의 부모 클래스만 가질 수 있다.) 상속문법class Parent{//부모클래스의 멤버(필드, 메소드)}class 슈퍼클래스{//슈퍼클래스 멤버}class child extends Parent {//부모클래스의 멤버//자식클래스의 멤버}class 서브클래스 extends 슈퍼클래스 {//슈퍼클래스 멤버//서브클래스 멤버}Parents 부모클래스, 슈퍼..