본문 바로가기

Java

[Java] try-with-resources 1. try-with-resources 구문 Java7 부터 도입된 기능으로, 자원을 명시적으로 닫아주는 코드를 간소화 하기 위한 구문 주로 파일, 네트워크 연결, 데이터베이스 연결 등의 자원을 사용한 후에 반드시 닫아주어야 하는 경우 활용됨 AutoCloseable 인터페이스를 구현한 자원을 효과적으로 사용할 수 있음 AutoCloseable은 close() 메서드를 제공하는 인터페이스로 이를 구현한 클래스는 try-with-resources문에서 사용될 수 있음 2. 기본 구조 try (자원의 생성 및 할당) { // AutoCloseable을 구현한 객체를 생성하고 할당, 블록 실행 전에 자원 초기화 // 자원을 사용하는 코드 작성 // 블록이 끝나면 자동으로 close() 메소드가 호출되어 자원이.. 더보기
[Java] LinkedBlockingQueue 클래스 1. 정의 An optionally-bounded blocking queue based on linked nodes. This queue orders elements FIFO (first-in-first-out). The head of the queue is that element that has been on the queue the longest time. The tail of the queue is that element that has been on the queue the shortest time. New elements are inserted at the tail of the queue, and the queue retrieval operations obtain elements at the h.. 더보기
[Java] 맥북 m2 JDK 설치 homebrew 설치 및 업데이트 $brew update 'AdoptOpenJDK/openjdk' 라는 이름의 패키지 저장소 추가 $brew tap adoptopenjdk/openjdk 설치 가능한 jdk 찾기 더보기 Fomulae와 Casks Fomulae와 Casks는 패키지를 설치하는 방법 1) Formulae 소스코드로부터 패키지를 빌드하고 설치하는 방법 주로 컴파일이 필요한 소프트웨어 패키지를 다룰 때 사용 brew install 명령을 사용하여 설치함 2) Casks 이진 파일을 다운로드하고 애플리케이션을 설치하는 방법 주로 그래픽 사용자 인터페이스(GUI) 애플리케이션이나 대형 소프트웨어 패키지를 다룰 때 사용 brew cask install 명령을 사용하여 설치 일반적으로 JDK(Java .. 더보기
[Java] 문자열 비교 == 과 equals() - 자바는 문자열 리터럴이 동일하면 String 객체를 공유하도록 설계되어 있음 public class EqualsEx { public static void main(String[] args) { // 동일한 String 객체의 번지가 저장됨 String name1 = "sky"; String name2 = "sky"; if(name1 == name2) { System.out.println("name1과 name2는 참조가 같음"); } else { System.out.println("name1과 name2는 참조가 다름"); } if(name1.equals(name2)) { System.out.println("name1과 name2는 문자열이 같음"); } // new 연산자로 String 객체를 생성.. 더보기
Java 네트워킹(networking) 네트워킹(networking): 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것 자바에서는 java.net패키지를 제공하여 네트워크 어플리케이션의 데이터 통신 부분의 코드 작성을 도움 1. 클라이언트와 서버(client & server) 1) 클라이언트 서비스를 사용하는 컴퓨터 2) 서버 - 서비스를 제공하는 컴퓨터 - 서버가 제공하는 서비스 종류에 따라 파일 서버, 메일 서버, 어플리케이션 서버 등이 있음 2. 관련 클래스 1) InetAddress클래스 IP주소를 다루기 위한 클래스 2) URL클래스 URL을 다루기 위한 클래스 3) URLConnection클래스 - 어플리케이션과 URL 간 통신연결을 나타내는 클래스의 최상위 클래스이며 추상클래스임 - URLConnection클래스를.. 더보기
Java 입출력(I/O) - 입출력은 컴퓨터 내부 또는 외부의 장치와 프로그램 간 데이터를 주고 받는 것 - 자바에서는 java.io 패키지를 통해서 많은 종류의 입출력 관련 클래스들을 제공함 1. 스트림(stream) - 자바에서 입출력을 수행(데이터 운반)에 사용되는 연결통로 - 스트림은 단방향 통신만 가능, 그러므로 입출력을 동시에 사용하기 위해서는 2개의 스트림 필요 - 스트림은 먼저 보낸 데이터를 먼저 받음(큐의 FIFO구조 같은 형태) - 중간에 건너뜀 없이 연속적으로 데이터를 주고 받음 2. 바이트 기반 스트림 - 바이트 단위로 데이터를 전송 - 입출력 대상과 입/출력 목적에 따라 해당 스트림을 선택해서 사용 입출력 대상 입력 스트림 출력 스트림 파일 FileInputStream FileOutputStream 메모리.. 더보기
Java Optional<T> - T 타입의 객체를 감싸는 래퍼 클래스 1. Optional 객체 생성 - of()로 생성 String str = "abc"; Optional optVal = Optional.of(str); Optional optVal = Optional.of("abc"); Optional optVal = Optional.of(new String("abc")); - 참조변수의 값이 Null일 가능성이 있는 경우 ofNullable()를 사용하여 생성 Optional optVal = Optional.of(null); // NullPointerException 발생 Optional optVal = Optional.ofNullable(null); // OK - Optional 타입의 참조변수를 기본값으로 초기화 하는 경우,.. 더보기
Java 스트림(stream) - 다양한 데이터 소스(컬렉션, 배열, 람다식, 난수 스트림 등)를 표준화된 방법으로 다루기 위한 것 - 스트림 만들기 -> 중간연산(0~n 번) -> 최종연산(1번)으로 결과를 얻음 1. 스트림의 특징 1) 데이터 소스로부터 데이터를 읽기만 할 뿐 변경하지 않음 - 필요시 정렬된 결과를 컬렉션이나 배열에 담아 반환 가능 2) Iterator처럼 일회용(필요한 경우 다시 스트림 생성해야 함) 3) 최종 연산 전까지 중간연산이 수행되지 않음 - 지연된 연산 IntStream intStream = new Random().ints(1, 46); // 1~ 45 범위의 무한 스트림 IntStream.distinct().limit(6).sorted() // 중간연산, 수행되지 않고 수행해야할 내용을 지정하는 것 .. 더보기