본문 바로가기

개발 언어 (Language)/Java27

I/O 스트림 I/O 스트림스트림과 I/O 스트림의 차이스트림은 데이터를 어떤 형태로 걸러내고 가공하는 것인지 즉 데이터를 목적에 맞게 걸러내거나 가공하는데 있습니다.하지만 I/O스트림은 데이터의 입력과 출력입니다.  I/O 스트림파일키보드와 모니터그래픽카드, 사운드카드프린터, 팩스 등 출력장치서버 또는 클라이언트입출력 대상은 다양하여 코드상의 입출력도 다양해지는 것이 일반적입니다. 하지만 자바에서는 동일한 방법으로 입출력이 가능합니다.  자바 스트림에는 두 가지가 있습니다.입력 스트림(Input Stream) : 실행 중인 자바 프로그램으로 데이터를 읽어오는 스트림출력 스트림(Output Stream) : 실행 중인 자바 프로그램으로 데이터를 내보내는 스트림자바 I/O스트림에는 두 가지 카테고리가 존재합니다.바이트 .. 2024. 8. 14.
스트림 스트림(Stream)스트림은 데이터의 흐름을 표현하는 것으로, 데이터를 필터링, 매핑, 정렬, 집계하는 등의 다양한 연산을 선언적으로 수행할 수 있습니다. 스트림은 데이터 소스를 통해 생성되며, 연산을 통해 처리됩니다. 스트림 생성하기 컬렉션에서 생성 import java.util.*;import java.util.stream.*;class Main { public static void main(String[] args) { List list = Arrays.asList("a", "b", "c"); Stream stream = list.stream(); }} 배열에서 생성 import java.util.*;import java.util.stream.*;class Mai.. 2024. 8. 13.
람다 람다(Lambda)interface Print { void print(String s);}class Printer implements Print { @Override public void print(String s) { System.out.println(s); }}class Main { public static void main(String[] args) { Print p = new Printer(); p.print("Hello World"); }}지금껏 공부한 내용을 바탕으로 print() 함수를 제작하였습니다. 익명클래스를 사용하면 위에 코드를 줄일 수 있습니다.interface Print { void print(String .. 2024. 8. 11.
중첩 클래스 중첩(Nested) 클래스public class OuterClass { private String outerField = "Outer Field"; class InnerClass { void accessOuter() { System.out.println("Accessing: " + outerField); // 바깥 클래스의 멤버에 접근 } } public static void main(String[] args) { OuterClass outer = new OuterClass(); OuterClass.InnerClass inner = outer.new InnerClass(); inner.accessOut.. 2024. 8. 11.
열거형, 가변인자, 어노테이션 열거형public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}public class Main { public static void main(String[] args) { Day today = Day.MONDAY; if (today == Day.MONDAY) { System.out.println("Today is Monday."); } }}열거형이 등장하기 이전에는 자바는 열거형을 표현하기 위해서 상수에 이름을 붙여 사용하였습니다. 하지만 이러한 방식에는 예를 들어 남성은 1이고 고양이도 1이라는 상수로 만들었는데 switch문에서.. 2024. 8. 11.
컬렉션 프레임워크 컬렉션 프레임워크(Collection Framework)프레임워크란?프로그래머들이 쓸 수 있도록 정의된 클래스들의 모임입니다. 즉 자바 프레임워크는 개발자가 자바로 응용 프로그램을 쉽게 구축할 수 있도록 돕는 소프트웨어 플랫폼입니다.하지만 이것이 전부라면 라이브러리라고 불리게 됩니다. 컬렉션이란?데이터를 효율적으로 저장하고 조작하기 위한 자료구조와 알고리즘의 집합을 제공합니다. 자바 컬렉션은 다양한 자료구조를 지원하며, 각 자료구조는 특정 상황에서 효율적인 데이터 처리 방법을 제공합니다. 컬렉션 프레임워크란?즉 컬렉션 프레임워크란 자료구조와 알고리즘을 제네릭 기반의 클래스와 메소드로 미리 구현한 결과물입니다.  인터페이스 주요 메소드: add(), remove(), contains(), size(), i.. 2024. 8. 10.
제네릭 제네릭(Generics)// 제네릭 클래스 정의class Notepad { private T memo; public void setMemo(T memo) { this.memo = memo; } public T getMemo() { return memo; }}// 제네릭 클래스 사용public class Main { public static void main(String[] args) { Notepad stringBox = new Notepad(); stringBox.setMemo("Hello"); System.out.println(stringBox.getMemo()); // Hello .. 2024. 8. 10.
Arrays 클래스 Arrays 클래스import java.util.Arrays;class Main { public static void main(String[] args) { int[] number = new int[] {2, 1, 4, 3, 6, 5}; // 정렬 Arrays.sort(number); // 1, 2, 3, 4, 5, 6 // 검색 int index = Arrays.binarySearch(number, 4); // 3 // 배열 복사 int[] newNumber = Arrays.copyOf(number, 7); // [2, 1, 4, 3, 6, 5, 0] .. 2024. 8. 9.
StringTokenizer 클래스 StringTokenizer 클래스import java.util.StringTokenizer;public class Main { public static void main(String[] args) { // 기본 구분자 (공백) String str1 = "Java is fun to learn"; StringTokenizer st1 = new StringTokenizer(str1); String str2 = "1 + 2 - 3 * 4 / 5 ="; StringTokenizer st2 = new StringTokenizer(str2, "+-*/="); while (st1.hasMoreTokens()) { .. 2024. 8. 9.
래퍼 클래스 래퍼 클래스(Wrapper class)class Main { public static void main(String[] args) { int num = 5; Integer boxnum = Integer.valueOf(num); // 명시적 박싱 Integer autobox = num; // 자동 박싱 int nubox = boxnum.intValue(); // 명시적 박싱 int autonubox = autobox; // 자동 언박싱 }}자바의 래퍼 클래스(Wrapper Class)는 기본 데이터 타입(primitive data type)을 객체로 다룰 수 있도록 해주는 클래스입니다. 자바는 기본.. 2024. 8. 9.
메모리 모델과 Object 클래스 메모리 모델가상머신은 메모리 공간을 크게 3가지 영역으로 나뉩니다.메소드 영역(Method Area)스택 영역 (Stack Area)힙 영역 (Heap Area)메소드 영역(Method Area)인스턴스 생성 및 클래스 변수의 접근을 위해서 메모리 공간에 올려지는데 올려지는 메모리 공간을 메소드영역이라고 합니다.모든 클래스 데이터, 메소드 정보 및 상수 등이 여기 저장되어 프로그램이 실행될 때 필요에 따라 사용됩니다. 스택 영역 (Stack Area)각 스레드별로 메소드 호출 시마다 스택 프레임이 생성됩니다. 스택 프레임에는 지역 변수, 매개변수, 중간 결과 등이 포함됩니다.메소드 실행과 관련된 데이터를 관리하며, 메드 호출이 끝나면 스택 프레임은 제거됩니다. 힙 영역(Heap Area)모든 객체와 그 .. 2024. 8. 8.
인터페이스와 추상 클래스 인터페이스public interface Car { void run(); void stop(); default void Klaxon() { System.out.println("클락션"); }}class Volvo implements Car { @Override public void run() { System.out.println("달립니다."); } @Override public void stop() { System.out.println("멈춥니다."); } @Override public void Klaxon() { System.out.println("경적"); }}class Ma.. 2024. 8. 7.
자바 예외처리 예외처리(Exceotion Handling)class Main { public static void main(String[] args) { try { int[] numbers = new int[5]; numbers[10] = 30; // ArrayIndexOutOfBoundsException 발생 } catch (ArrayIndexOutOfBoundsException e) { System.out.println("오류 발생: " + e.getMessage()); } finally { System.out.println("이곳은 항상 실행됩니다."); .. 2024. 8. 6.
상속 상속class Car { private int speed; public Car(int speed) { this.speed = speed; } public void printSpeed() { System.out.println("Speed : " + this.speed); }}class Volvo extends Car { private String name; public Volvo(String name, int speed) { super(speed); // 슈퍼클래스의 생성자 호출 this.name = name; } @Override public void printSpeed() { .. 2024. 8. 6.
배열 배열public class Array { public static void main(String[] args) { int[] arr = new int[] {1, 2, 3, 4, 5}; int[] ar = new int[5]; ar[0] = 1; ar[1] = 2; ar[2] = 3; ar[3] = 4; ar[4] = 5; for(int i : arr) { System.out.println(i); } for(int i : ar) { System.out.println(i); } }}배열(Array)은 동일한 .. 2024. 8. 5.