본문 바로가기

Java

(22)
java.lang패키지와 유용한 클래스 -(2) java.lang패키지와 유용한 클래스-(2) 1.StringBuffer클래스 StringBuffer 클래스는 String 클래스와 달리, 지정된 문자열을 변경할 수 있다. 즉, StringBuffer인스턴스를 생성할 때 그 크기를 지정할 수 있다. 이때 편집할 문자열의 길이를 고려하여 버퍼의 길이를 충분히 잡아주는 것이 좋다. StringBuffer 클래스는 String 클래스처럼 문자열을 저장하기 위한 char형 배열의 참조변수를인스턴스 변수로 선언해 놓고 있다. 따라서 StringBuffer인스턴스가 생성될 때 char형 배열이 생성되며, 이때 생성된 char형 배열을 참조하게 될 것이다. 1) StringBuffer의 생성자 StringBuffer 클래스의 인스턴스를 생성할 때 생성자 String..
Java 람다와 스트림 -(2) 람다와 스트림 1.스트림 1) Optional 래퍼 클래스(Wrapper Class)는 8개의 기본 타입에 해당하는 데이터를 객체로 표현하기 위해 포장해주는 클래스 Optional는 T타입의 객체를 감싸는 래퍼 클래스이다. 따라서 Optional타입의 객체에는 모든 타입의 객체를 담을 수 있다. 최종 연산의 결과를 그냥 반환하는 게 아니라, Optional 객체에 담아서 반환하면 그 결과가 null인지 체크하는 if문 없어도 NullPointerException이 발생하지 않는다. 간결하고 편리하다. ① Optional 객체 생성하기 of 또는 ofNullable()을 사용한다. String str =”abc”; Optional optVal = Optional.of(str); Optional optVal..
Java 람다와 스트림 - (1) 람다와 스트림 자바는 객체지향적 언어(OOP)이다. JDK1.8부터 OOP에 함수형 언어의 기능을 추가했다. 1. 람다식(Lambda Expression) 람다식은 함수(메서드)를 간단한 식(expression)으로 표현하는 방법이다. 메서드에서 이름과 반환 타입을 제거하고, 선언부와 몸통 사이에 ‘->’를 추가하면 람다식이 된다. 이로 인해 람다식은 익명함수(anonymous function)이다. 함수와 메서드는 근본적으로 동일하지만, 메서드는 객체지향적 용어이다. 클래스 밖에 있을 수 없는 메서드는 클래스에 종속적인 특징을 갖고 있다. 반면 함수는 클래스로부터 독립적이다. 람다식 작성하기 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능(끝에 ;클론 붙이지 않음) 매개변수의 타입이 추..
Java 쓰레드 쓰레드 1.쓰레드 프로세스(Process)는 실행중인 프로그램을 의미한다. 프로그램을 실행하게 되면, OS로부터 필요한 자원(메모리)를 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하기 위해서 필요한 데이터와 메모리 등의 자원, 그리고 쓰레드로 구성되어 있다. 쓰레드는 프로세스의 자원을 이용해 작업을 실제로 수행한다. 예시 ) 프로그램을 실행하기 위해서 프로세스라는 공장에서 작업을 처리하는 일꾼이 쓰레드이다. 멀티쓰레드는 일꾼이 늘어난 것이다. 멀티 쓰레딩의 장단점 ① CPU의 사용률을 향상시킨다 ② 자원을 보다 효율적으로 사용할 수 있다 ③ 사용자에 대한 응답성이 향상된다 ④ 작업이 분리되어 코드가 간결해진다 메신저로 채팅을 하면서 동시에 유튜브를 볼 수 있는 것은 멀티쓰레드로 작성되어 있기 때..
Java 지네릭스, 열거형, 애너테이션 지네릭스, 열거형, 애너테이션 (generics, enumeration, annotation) 1. 지네릭스 컴파일할 때 타입을 체크해주는 기능을 ‘지네릭스’라고 한다. 지네릭스는 객체의 타입을 체크하기 때문에 객체 타입 안정성을 높이고 형변환의 번거로움이 줄여준다 또한, 저장된 객체를 꺼낼 때 형변환이 필요없어 편리하다. 왜냐하면 이미 어떤 타입인지 알고 있기 때문이다. 따라서 지네릭스의 장점은 1. 타입 안정성을 제공한다. - 의도하지 않은 타입의 객체 저장을 막고, 저장된 객체를 꺼낼 때 원래의 타입과 다른 타입으로 형변환되는 오류를 줄여준다. 2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다. 1) 타입 변수 ArrayList클래스에서 ‘’ 안에 있는 E를 타입변수라고 한다. 일..
Java 컬렉션프레임웍 - (2) 컬렉션프레임웍- (2) 1.Arrays 클래스 Arrays 클래스는 배열을 다루는데 유용한 메서드를 정의하고 있다. Arrays에 정의된 메서드들은 모두 static메서드이다. Arrays 클래스의 정의된 메서드를 살펴 보자. ① 배열의 복사 - copyOf(), copyOfRange() copyOf()는 배열의 전체를 복사하지만, copyOfRange()은 배열의 일부를 복사해 새로운 배열을 만든다. copyOfRange()에 지정된 범위의 끝은 포함되지 않는다 ②배열 채우기 -fill(), setAll() fill() - 배열의 모든 요소를 지정된 값으로 채운다 setAll() - 배열을 채우는데 사용할 함수형 인터페이스를 매개변수로 받는다. 이 메서드를 호출할 때 인터페이스를 구현한 객체를 매개변수..
Java 컬렉션 프레임웍 - (1) 컬렉션 프레임웍(collection framework) 1.컬렉션 프레임웍 다수의 데이터를 저장할 수 있는 클래스 - - > 컬렉션 클래스 컬렉션 프레임웍? 다양한 종류의 컬렉션 클래스를 표준화된 방식으로 체계화한 것 컬렉션 프레임웍으로 인해, 다수의 데이터를 다루는 데 필요한 다양하고 풍부한 클래스를 활용할 수 있다. 또한, 인터페이스와 다형성을 이용한 객체지향적 설계에 의해 표준화되어 있기 때문에 편리하다는 장점도 있다. cf. 라이브러리 vs 프레임웍 라이브러리는 공통적으로 사용될만한 유용한 기능을 모듈화하여 제공, 반면 프레임웍은 기능뿐만 아니라 프로그래밍 방식을 정형화하여 개발 생산성을 높임 1)컬렉션 프레임웍의 핵심 ‘인터페이스’ 컬렉션 프레임웍에서는 컬렉션 데이터 그룹을 3가지로 분류 각 컬..
Java 날짜와 시간 & 형식화 날짜와 시간 & 형식화 1. Calendar클래스 Calendar는 추상클래스이므로 객체를 생성할 수 없고, 메서드를 통해 완전히 구현된 클래스의 인스턴스를 얻어야 한다. Calendar cal = new Calendar(); // 에러!!! 추상클래스는 인스턴스를 생성할 수 없다 Calendar cal = Calendar.getInstance(); // Ok. getInstance() 메서드는 Calendar클래스를 구현한 클래스의 인스턴스를 반환한다. 인스턴스를 직접 생성하지 않고 getInstance() 메서드를 통해 인스턴스를 반환받는 이유는최소한의 변경으로 프로그램을 동작하도록 하기 위해서다. getInstance() 메서드는 static이다. 그 이유는 메서드 내에서 인스턴스 변수를 사용하거나..
java.lang패키지와 유용한 클래스-(1) java.lang패키지와 유용한 클래스 1. Object 클래스 java.lang패키지는 자바프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있다. 그러므로 java.lang패키지의 클래스들은 import문이 없어도 사용할 수 있다. java.lang패키지의 여러 클래스 중에서 자주 사용되는 클래스에 대해 확인하자. Object클래스는 모든 클래스의 최고 조상이기 때문에 Object클래스의 멤버들은 모든 클래스에서 바로 사용 가능하다. Object클래스는 멤버변수는 없고 오직 11개의 메서드만 가지고 있다. (쓰레드와 관련된 건 우선 생략) Object 클래스의 메서드 설명 protected Object clone() 객체 자신의 복사본을 반환한다 public boolean equals(object o..
Java 예외처리 예외처리 1. 프로그램 에러(오류) 1) 프로그램 에러(오류) 발생 시점에 따라 구분 가능하다. - 컴파일 에러 (컴파일할 때 발생하는 에러) - 런타임 에러(실행할 때 발생하는 에러) - 논리적 에러 - 실행은 되지만, 의도와 다르게 동작하는 것 런타임 에러 - 에러(Error) 와 예외(Exception)로 구분 가능 에러(Error) : 프로그램 코드에 의해 수습 불가능한 심각한 오류 ex)메모리부족(OutOfMemoryError), 스택오버플로우(StackOverFlowerError) 예외(Exception) : 프로그램 코드에 의해 수습 가능한 다소 미약한 오류 2) 예외 클래스 자바에서 실행할 때 발생할 수 있는 오류를 클래스로 정의 그림처럼 예외 클래스들은 두 그룹으로 분류 가능하다. ① E..