Java-Spring/열혈 Java 프로그래밍

자바 / 스프링 / 스프링부트 스터디 정리
Java-Spring/열혈 Java 프로그래밍

[Java] 열혈 Java 프로그래밍 - 목차

01. 자바 프로그램의 원리와 메모리 모델 1.1) 자바 프로그램과 실행의 원리에 대한 이해 1.2) 자바 가상머신의 메모리 모델 02. 변수와 자료형 2.1) 변수의 이해와 활용 2.2) 정수의 표현 방식 이해하기 2.3) 실수의 표현 방식 이해하기 03. 상수와 형 변환 3.1) 상수 3.2) 형 변환 04. 연산자 4.1) 이항 연산자들 4.2) 단항 연산자들 4.3) 비트 연산자들 05. 실행 흐름의 컨트롤 5.1) if 그리고 else 5.2) switch와 break 5.3) for, while 그리고 do~while 5.4) break & continue 5.5) 반복문의 중첩 06. 메소드와 변수의 스코프 6.1) 메소드 6.2) 변수의 스코프 6.3) 메소드의 재귀 호출 07. 클래스와 ..

Java-Spring/열혈 Java 프로그래밍

[Java] 자바 프로그램의 원리와 메모리 모델

✔ 자바 프로그램과 실행의 원리에 대한 이해 자바 프로그램의 실행 구조와 자바 가상머신 일반적인 프로그램은 윈도우 또는 리눅스와 같은 운영체제 위에서 실행이 됨 하드웨어를 기반으로 운영체제가 동작하고, 그 위에서 프로그램이 실행되는 구조 즉, 하드웨어 위에서 실행되는 운영체제가 프로그램을 실행시키는 구조 자바 프로그램은 운영체제가 자바 가상머신을 실행시키고, 자바 가상머신이 자바 프로그램을 실행시키는 구조 자바 가상머신은 운영체제 위에서 동작하는 일종의 소프트웨어로 자바 프로그램을 운영체제에 상관없이 실행시키기 위해 사용됨 자바 컴파일러와 자바 바이트코드 자바 컴파일러인 javac.exe는 소스파일에 저장된 소스코드를 자바 가상머신이 이해할 수 있는 자바 바이트코드로 변환함 이후 바이트코드는 확장자가 c..

Java-Spring/열혈 Java 프로그래밍

[Java] 쓰레드 그리고 동기화

✔ 쓰레드의 이해와 쓰레드의 생성 쓰레드의 이해 쓰레드란 실행 중인 프로그램 내에서 또 다른 실행의 흐름을 형성하는 주체를 의미 현재까지 작성한 예제들은 하나의 쓰레드를 생성해서 main 메소드를 실행해 온 것 public static void main(String[] args) { Thread ct = Thread.currentThread(); String name = ct.getName(); System.out.println(name); // 쓰레드의 이름인 main 반환 } 쓰레드의 생성 main 쓰레드 이외의 쓰레드를 생성하면 추가한 수만큼 프로그램 내에서 다른 실행의 흐름이 만들어지게 됨 쓰레드의 생성을 위해 제일 먼저 할 일은 Runnable 인터페이스를 구현하는 클래스의 인스턴스를 생성하는 ..

Java-Spring/열혈 Java 프로그래밍

[Java] NIO 그리고 NIO.2

✔ 파일 시스템 NIO란? 자바 4에서 java.io 패키지의 성능을 보강하기 위한 New IO라는 NIO API가 java.nio 패키지로 묶여서 추가됨 그리고 그 뒤를 이어서 자바 7에서 NIO.2라고 불리는 API가 java.nio.file 패키지로 묶여서 추가됨 기본적인 파일 시스템 윈도우의 파일 경로는 \ 방식으로 나타내지만 리눅스의 파일 경로는 / 방식으로 나타냄 윈도우는 여러 개의 루트 디렉토리(최상위 디렉토리)를 가지지만, 리눅스는 하나의 루트 티렉토리만 가짐 경로에는 파일 또는 디렉토리의 위치를 루트 디렉토리를 기준으로 위치를 표현하는 절대 경로와 파일 또는 디렉토리의 위치를 현재 디렉토리를 기준으로 위치를 표현하는 상대 경로가 존재 Paths와 Path 클래스 결함이 있던 java.ni..

Java-Spring/열혈 Java 프로그래밍

[Java] I/O 스트림

✔ I/O 스트림에 대한 이해 스트림과 I/O 스트림의 차이는? 스트림은 데이터를 어떻게 원하는 형태로 걸러내고 가공할 것인가의 목적 반면 I/O 스트림은 어떻게 데이터를 입력하고 출력할 것인가의 목적 I/O 스트림 모델과 스트림의 이해 자바에서는 입출력 대상에 상관없이 동일한 방법으로 입출력을 진행할 수 있도록 I/O 스트림 모델을 정의 입출력 대상에는 파일, 키보드, 모니터, 그래픽카드, 사운드카드, 프린터, 팩스, 인터넷으로 연결되어 있는 서버 또는 클라이언트 등이 존재 I/O 스트림 모델을 줄여서 I/O 모델이라고 함 가장 기본적인 데이터의 입출력 단위는 바이트이고, 바이트 단위로 데이터를 입력 및 출력하는 스트림을 바이트 스트림이라 함 I/O 모델의 스트림은 입출력 대상과의 연결을 위한 클래스로..

Java-Spring/열혈 Java 프로그래밍

[Java] 시각과 날짜의 처리

✔ 시각과 날짜 관련 코드의 작성 Instant 클래스 시각은 시간의 어느 한 시점을 뜻하고, 시간은 어떤 시각에서 어떤 시각까지의 사이를 뜻함 Instant 클래스는 흐르는 시간 속에서의 특정 시점을 표현하기 위한 클래스 now 메소드를 통해 호출된 시점의 시각 정보를 얻을 수 있으며, '1970-01-01 00:00:00'을 기준으로 지나온 시간을 초 단위로 계산한 결과를 반환함 밀리 초 단위 정밀도를 요구한다면 시각의 차를 표현하기 위한 Duration 클래스를 이용해 1/1000초 단위의 정밀도로 확인 이러한 시각 차 정보를 이용해 병렬 스트림 등에서 속도 향상 효과가 있는지 확인할 수 있음 Instant start = Instant.now(); // 현재 시각 정보 System.out.print..

Java-Spring/열혈 Java 프로그래밍

[Java] 스트림

✔ 스트림의 이해 스트림이란? 데이터를 흐름을 뜻함 또한 배열 또는 컬렉션 인스턴스에 저장된 데이터를 꺼내서 파이프에 흘려보내는 것을 뜻함 데이터를 흘려보낼 파이프인 연산의 종류는 중간 연산과 최종 연산이 존재 스트림을 생성하고 이를 대상으로 중간 연산과 최종 연산을 진행하면 원하는 기준으로 데이터를 필터링하고 필터링된 데이터의 가공된 결과를 얻을 수 있게 됨 int[] ar = {1, 2, 3, 4, 5}; IntStream stm1 = Arrays.stream(ar); // Arrays 클래스의 stream 메소드를 통해 배열을 대상으로 스트림 생성 IntStream stm2 = stm1.filter(n -> n % 2 == 1); // 중간 연산 int sum = stm2.sum(); // 최종 연..

Java-Spring/열혈 Java 프로그래밍

[Java] 메소드 참조와 Optional

✔ 메소드 참조 메소드 참조의 4가지 유형과 메소드 참조의 장점 람다식은 결국 메소드의 정의이므로 람다식을 작성할 때 이미 정의되어 있는 메소드를 사용한다면 람다식을 작성할 필요 없이 메소드 정보만 전달하여 이를 대신할 수 있게 됨 메소드 참조의 유형은 총 4가지 static 메소드 참조 참조변수를 통한 인스턴스 메소드 참조 클래스 이름을 통한 인스턴스 메소드 참조 생성자 참조 그리하여 메소드 참조는 람다식으로 줄어든 코드의 양을 조금 더 줄일 수 있게 함 static 메소드 참조 static 메소드의 참조 방법은 className::staticMethodName 사용 람다식은 이미 정의되어 있는 메소드를 사용 전달되는 인자를 람다식에 그대로 전달하므로 인자 전달 정보는 생략할 수 있음 // static..

김깅긍
'Java-Spring/열혈 Java 프로그래밍' 카테고리의 글 목록