
22일차인 오늘은 HashMap과 TreeSet에 대해서 학습했다. 생각보다 많이 헷갈리고 많이 어려웠다. 꼼꼼히 복습 시작하도록 하겠숨둥. HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션이다. Map 인터페이스를 상속하고 있기에 Map의 성질을 그대로 가지고 있습니다. 값은 중복 저장될 수 있지만 키는 중복 저장될 수 없습니다. 만약 기존의 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치됩니다. HashMap을 생성하려면 키 타입과 값 타입을 파라미터로 주고 기본생성자를 호출하면 됩니다. HashMap은 저장공간보다 값이 추가로 들어오면 List처럼 저장공간을 추가로 늘리는데, List 처럼 저장공간을 한 칸씩 늘리지 않고 두배로 늘립니다. 출처 : h..

20일차인 오늘은 ArrayList, HashSet, Queue, Stack에 대해서 학습했다. import java.util.ArrayList; import java.util.Iterator; public class Main { public static void main(String[] args) { //ArrayList numbers를 만들고 10 부터 40까지 add한다. //2번째값에 50을 집어넣고 출력한다. //인덱스값을 하나 출력한다. ArrayList numbers = new ArrayList(); numbers.add("10"); numbers.add("20"); numbers.add("30"); numbers.add("40"); System.out.println(numbers); // ..

20일차인 오늘은 StringBuffer, Vector, ArrayList, StringTokenizerTest에 대해서 학습했다. String 클래스 객체는 Heap 메모리 영역(가비지 컬렉션이 동작하는 영역)에 생성하고 한번 생성된 객체의 내부 내용을 변화시킬 수 없다. String 객체는 이러한 이유로 문자열 연산이 많은 경우 성능이 좋지 않다. StringBuffer와 StringBuilder는 String과 다르게 동작한다. 문자열 연산 등으로 기존 객체의 공간이 부족하게 되는 경우 기존의 버퍼 크기를 늘리며 유연하게 동작한다. StringBuffer와 StringBuilder 클래스가 제공하는 메서드는 서로 동일하다. String 짧은 문자열을 더할 경우 문자열 연산이 적고 멀티스레드 환경일 ..

19차인 오늘은 String 객체와 Sorting에 대해서 학습했다. new 키워드를 사용 안 하고 String 리터럴로 표현할 경우 String Constant Pool 영억에 존재한 후 해당 영역의 값을 가리키게 된다. new 키워드를 사용할 경우에는 heap영역에 String 객체를 생성하게 되는 것이다. 출처 : https://brunch.co.kr/@kd4/1 Java String을 잘 아신다고 생각하시나요? Java String의 속성에 관하여 | 아래 자바 코드는 몇 개의 오브젝트를 생성할까요? String str1 = new String("gabbar");String str2 = new String("gabbar");String str3 = "gabbar"; 그리고 아래 코드가 실행된 결괏..
18일차 오늘은 Wrapper class에 대해서 학습했다. Wrapper class : 자바의 8가지 기본 자료형은 단순히 값을 저장하는 기능만 있지만 Wrapper 클래스는 다양한 기능을 사용할 수 있다. 자바의 기본형 변수도 때로는 객체로 다루어 져야 하는 경우도 있습니다. 예를 들면 매개 변수로 객체를 요구할 때 기본형이 아닌 객체로 저장해야 할 때, 객체간의 비교가 필요할 때 등등의 경우에 기본 값들을 객체로 변환해서 작업을 수행해야 한다. 이때 사용되는 것이 Wrapper 클래스 이다. 기본 자료형은 단순히 값을 저장하는 기능만 있지만, Wrapper 클래스는 객체이므로 다양한 기능을 사용할 수 있습니다. 기본자료형 Wrapper boolean Boolean byte Byte char Char..
저번 시간에 학습한 Thread를 활용하여 ATM 기기 예제를 학습했다. 물론 Thread만을 학습하기 위해서 예제를 활용한 것은 아니구, Synchronization(동기화)를 학습하기 위해서 ATM기기 예제를 학습했다. 여러개의 은행카드(스레드)는 하나의 계좌(공용변수)에 입출금 할 수 있습니다. 동기화 처리를 하지 않는다면 스레드가 무분별하게 사용되어 원하는 값을 정확하게 추출하지 못하므로, 동기화 처리를 해서 한 시점에서 한 하나의 스레드만 공유된 값을 변경시킬 수 있도록 처리를 해야합니다. class ATM_2{ int total; public ATM_2(int total) { this.total = total; } synchronized void deposit(int amount, String..
16일차인 오늘은 Thread와 Runnable을 중심으로 학습했다. package ja_0721; class MyThreadTest_3 extends Thread{ public MyThreadTest_3(String name) { super(name); } @Override public void run() { try { for(int i = 0; i < 5; i++) { Thread.sleep(1000); System.out.println(" " + i + " 번 " + getName() + " : 스레드 "); } }catch(InterruptedException e) { e.printStackTrace(); } } } public class MyThread_3 { public static void ..
14일차인 오늘은 Exception(예외 처리), Thread 에 대해서 학습했다. (1) Exception : 대부분의 프로그램에서는 에러가 발생한다. 그렇기 때문에 프로그램에는 다양한 에러의 대처할 수 있는 기능을 구현해야 한다. 만약 에러에 대처하는 기능이 없다면 프로그램이 비정상적으로 동작하거나 종료하게 된다. 이를 해결하고 프로그램을 정상적으로 실행하는데 방해가 되는 에러들을 Exception(예외)라고 한다. .RuntimeException : 실행시간에 발생한 예외 처리 .IOException : 입출력에 관련된 예외 처리 .NoSuchMethodException : 메소드를 찾을 수 없을 때 예외처리 .InterruptedException : 인터럽트에 관련된 예외 처리 .ClassNotF..