목록자바 (91)
삶 가운데 남긴 기록 AACII.TISTORY.COM
File 클래스 import java.io.File; import java.net.URI; import java.text.SimpleDateFormat; import java.util.Date; public class FileEx { public static void main(String[] args) throws Exception { File dir = new File("D:/temp/Dir"); File file1 = new File("D:/temp/file1.txt"); File file2 = new File("D:/temp/file2.txt"); File file3 = new File(new URI("file:///D:/temp/file3.txt")); if(dir.exists() == false..
Console 키보드로 입력받고, 화면으로 출력하는 소프트웨어. System.in import java.io.IOException; import java.io.InputStream; public class SystemInEx { public static void main(String[] args) throws IOException { System.out.println("1. 조회"); System.out.println("2. 출금"); System.out.println("3. 입금"); System.out.println("4. 종료"); System.out.print("메뉴 선택: "); InputStream is = System.in;//키보드 입력 스트림 획득 char inputChar = (char..
함수형 프로그래밍함수형 프로그래밍(Functional Programming, FP)은 자료 처리를 수학적 함수의 계산으로 취급하고, 프로그램의 상태(State)와 가변 데이터를 멀리하는 프로그래밍 패러다임 중 하나입니다. 객체 지향 프로그래밍(OOP)이나 명령형 프로그래밍(Imperative Programming)이 어떻게(How) 상태를 바꾸는 일련의 명령어에 집중하는 반면, 함수형 프로그래밍은 무엇(What)을 할지 함수의 응용(Application)에 집중합니다. 함수형 프로그래밍은 다음과 같은 이점을 제공합니다.예측 가능성 향상: 순수 함수와 불변성 덕분에 코드가 더 명확하고 예상치 못한 버그(Side Effect) 발생 가능성이 줄어듭니다.테스트 용이성: 외부 환경에 의존하지 않는 순수 함수 덕..
stack 스택은 Last In First Out 자료구조입니다. 제일 마지막에 push()한 객체가 제일 처음에 pop() 됩니다. import java.util.Stack; class Coin{ private int value; public Coin(int value) { this.value = value; } public int getValue() { return value; } } public class StackEx { public static void main(String[] args) { Stack coinBox = new Stack(); coinBox.push(new Coin(100)); coinBox.push(new Coin(500)); coinBox.push(new Coin(10)); ..
이진 트리(binary tree) 구조 검색을 위해서는 우선 정렬이 되어 있어야 하는데, 이때 정렬을 위해 이진트리구조를 이용합니다. 이진 트리 구조에 대한 자세한 내용은 생략하도록 하겠습니다. TreeSet 이진트리 기반 Set 컬렉션입니다. value와 왼쪽노드, 오른쪽노드로 구성됩니다. import java.util.NavigableSet; import java.util.TreeSet; public class TreeSetEx { public static void main(String[] args) { TreeSet scores = new TreeSet(); scores.add(new Integer(97)); scores.add(new Integer(78)); scores.add(new Intege..
Map key와 value로 구성된 객체를 저장하는 구조입니다. 여기서 key와 value는 모두 객체입니다. key는 중복될 수 없지만 값은 중복될 수 있습니다. 여기서 key는 중복을 허용하지 않으므로 set과 동일한 구조를 가진 객체입니다. 그래서 key는 keySet 형태로 저정되어 keySet() 메서드를 통해 얻을 수 있습니다. 만약 동일한 key로 value값을 저장하면 나중에 저장한 값으로 기존값이 대체되는 겁니다. HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등이 있습니다. HashMap import java.util.HashMap; import java.util.Iterator; import java.util.Map; import j..
Set 순서를 유지하지 않고, 중복을 허용하지 않는 컬렉션 입니다. 수학에서의 집합과 유사한 개념입니다. 순서나 인덱스가 없기 때문에 Iterator 를 이용해서 값에 접근해야 합니다. HashSet Set 인터페이스를 구현한 클래스 입니다. HashSet은 객체를 저장하기 전에 객체의 해시코드를 얻어내고 이미 저장되어 있는 객체들의 해시코드와 비교해서 중복된 값이 있는지 검사합니다. public class HashSetEx { public static void main(String[] args) { Set set = new HashSet(); set.add("Java"); set.add("JDBC"); set.add("Servlet"); set.add("Java");//중복해서 저장되지 않음 set.a..
List 컬렉션 순서를 유지하며 객체를 저장하며 중복해서 저장할 수 있습니다. ArrayList 인덱스 정보가 있는 List 컬렉션입니다. 인덱스가 있으므로 삽입과 삭제가 빈번한 구조에서는 바람직하지 않습니다. 이런 경우 LinkedList를 사용하는 것이 좋습니다. java 1.5부터 제네렉을 통해 객체의 타입을 지정해줘서 불필요한 casting을 하지 않아도 됩니다. import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ArrayListEx { public static void main(String[] args) { List list = new ArrayList(); list.add("1st");..
Lambda Expressions함수형 프로그래밍은 병렬처리와 이벤트 처리에 효율적이어서, 객체지향 언어인 자바에서도 함수형 프로그래밍의 장점을 도입하기 위해 람다식이 자바 8부터 도입되었습니다.람다 표현식은 익명 클래스(Anonymous Class)의 간결한 형태로, 주로 함수형 인터페이스(Functional Interface)의 단일 추상 메서드를 구현하는 데 사용됩니다.즉, 람다 표현식은 익명함수를 생성하기 위한 식입니다.이때 -> 연산자는 매개변수 목록과 함수 본문을 구분하는 역할을 합니다. 기본 문법(타입 매개변수, 타입 매개변수, ...) -> {함수 실행문; }(int a)->{System.out.println(a);} 매개변수의 타입은 자동 인식 될 수 있기 때문에 생략 가능합니다.(a)-..
제네릭 타입은 JDK5부터 지원됩니다.제네릭은 데이터 타입객체를 잘못 대입해서 발생하던 런타임 문제를 컴파일 과정에서 제거하고 타입을 바꾸기 위해 불필요한 casting을 하지 않도록 해줍니다.제네릭을 사용하면 같은 코드를 타입만 다르게 해서 재사용 할 수있게 해줍니다.즉, 클래스나 메소드가 나중에 사용할 객체(타입)을 나중에 지정할 수 있게 해줍니다.주로 List나 Map 같은 컬렉션에서 사용됩니다. 제네릭 타입TTypeEElementKKeyVValueRResult 또는 ReturnNNumberpublic class BoxExample { public static void main(String[] args) { Box box1 = new Box(); box1.set("BOX"); String st..
스레드 풀스레드 풀은 작업 스레드를 제한된 개수(총 개수)만큼 정해놓고 작업 큐에 들어오는 작업들을 하나씩 스레드가 맡아서 처리합니다. 작업 처리가 끝난 스레드는 다시 작업 큐에서 새로운 작업을 가져와 처리 합니다. 스레드 풀(작업 큐)로 병렬 처리를 한다면 갑자기 스레드가 폭증하는 상황에서도 성능 저하를 최소화 할 수 있습니다. 스레드 풀은 java.util.concurrent 패키지의 ExecutorService 인터페이스와 Executors 클래스를 제공하고 있습니다. 스레드 풀 생성Executors 클래스의 newCachedThreadPool()이나 newFixedThreadPool(int n Threads) 으로 생성 할 수 있습니다. 스레드 풀 종료스레드 풀은 데몬 스레드가 아니기 때문에 메인..
DecimalFormat 숫자 데이터를 원하는 형식으로 표현하기 위한 클래스 입니다. import java.text.DecimalFormat; public class DeciamlFormatEx { public static void main(String[] args) { double num = 1234567.89; DecimalFormat df = new DecimalFormat("0");//10진수, 빈자리는 0으로 채움 System.out.println(df.format(num)); df = new DecimalFormat("0.0");//소수점 표현 System.out.println(df.format(num)); df = new DecimalFormat("0000000000.00000"); Syst..
Date 클래스 현재 날짜 출력을 위한 클래스입니다. 날짜를 표기하는 포멧을 지정하려면 SimpleDateFormat 클래스를 이용합니다. import java.text.SimpleDateFormat; import java.util.Date; public class DateEx { public static void main(String[] args) { Date now = new Date(); String strNow1 = now.toString(); System.out.println(strNow1); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String strNow2 = sdf.format(now); System.out.p..
Math 클래스 수학 계산용 메서드들을 제공합니다. 대부분 static 이므로 인스턴스 생성 없이 바로 사용가능 합니다. public class MathEx { public static void main(String[] args) { int v1 = Math.abs(-5);//절대값 double v2 = Math.ceil(5.3);//올림 double v3 = Math.floor(-5.3); //내림 int v4 = Math.max(5, 9);//최대값 double v5 = Math.min(5.1, 2.3);//최소값 double v6 = Math.random();//0 이상 1 미만 랜덤 숫자 long v7 = Math.round(5.6);//반올림 System.out.println(v1); Syste..
자바는 기본 데이터 타입을 값으로 갖는 객체를 생성할 수 있습니다. 이러한 객체를 wrapper class 라고 합니다. byte : Byte char : Character short : Short int : Integer long : Long float : Float double : Double boolean : Boolean Boxing/Unboxing boxing: 기본 데이터 타입을 래퍼 클래스로 변환 unboxing: 래퍼클래스를 기본 데이터 타입으로 변환 public class BoxingUnBoxing { public static void main(String[] args) { //boxing Integer obj1 = new Integer(100); Integer obj2 = new Int..