JDK1.8부터 람다식이 추가되었다. 람다식은 메서드를 하나의 식으로 표현한 것이다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로 람다식을 익명함수 라고도 한다. //class LambdaEx{ //int max(int a, int b) { //return a > b ? a : b; //} // ////람다함수 정의 방법//(매개변수) -> 명령 //1. (int a, int b) -> {return a > b ? a : b;}//return 구문이 있을 시 중괄호({})는 생략 불가능 //2. (int a, int b) -> { a > b ? a : b;}//연산식의 결과를 리턴하는 경우 return 구문은 생략 가능 //3. (int a, int b) -> a > b ? a : b..
Java
한 쓰레드가 진행 중인 작업을 다른 쓰레드가 간섭하지 못하도록 막는 것을 '쓰레드의 동기화( synchronization )'라고 한다. //경쟁조건(Race condition) : 두 개의 스레드가 동시에 자원을 접근하면서 발생하는 문제 //이 경우 원치 않은 결과를 얻을 수 있다. class ShareResource{ private int count = 0; //synchronized //메서드에 대한 임계영역(critical section) - lock 획득 public synchronized void increment() { count++; //Load count toR1 //R1 = R1 + 1 //Store R1 to count }//lock반납 public int getCount() { re..
프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다. 하나의 프로세스 내에서 여러 개의 스레드가 동시에 실행될 수 있다. 쓰레드를 구현하는 방법은 Thread클래스를 상속받는 방법과 Runnable 인터페이스를 구현하는 방법이 있다. run()을 오버라이딩 //스레드(Thread) : 프로세스내에서 동시에 여러 작업을 수행할 수 있다. //할당받은 자원을 이용해서 실제 작업을 수행한다. //다중스레드(Multi Thread) : 스레드가 2개 이상 존재하는 경우를 말하며 프로그램의 성능을 향상시킬 수 있다. class MyThread extends Thread{ //Thread 클래스의 ..
익명 클래스는 일회용으로 인스턴스를 생성하고 버려지는 객체이다. 그러므로 재사용되지 않는다. //추상클래스 : 추상 메서드를 한 개 이상 포함한 클래스 abstract class Vehicle{ abstract void start(); //추상메서드 : 정의부가 없이 선언부만 존재하는 메서드 void stop() { System.out.println("Vehicle stop!"); } } //class Bus extends Vehicle{ // //@Override //void start() { //System.out.println("Bus start!"); //} // //} public class _01_Anonymous { public static void main(String[] args) { /..
출처 : [인프런] 김태원의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 첫 번째 풀이 = 정답 split() 메서드는 문자열을 특정 기준에 따라 잘라서 배열로 입력할 때 사용된다. split("\\s+") => "\\s+"를 이용하면 공백, 탭 등의 문자가 하나 이상 있을 시 다 묶어서 split 함 for- each 루프 사용 1. for( String x : words) words 배열에 저장된 각 단어를 x변수에 하나씩 가져온다. 2. if(x.length() > longest.length()) 현재 순회중인 단어 x의 길이와 longest의 길이를 비교. 3. x의 길이가 더 길다면 longest를 x로 업데이트. import java.util.Scanner; public class..
출처 : [인프런] 김태원의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 첫 번째 풀이 = 정답 import java.util.Scanner; public class Main { public static void Main(String str) { char[] chars = str.toCharArray();// 문자열 길이 배열 생성 for (int i = 0; i = 'A' && arr = 'a' && arr = 97 && x
김태원 선생님의 자바 알고리즘 강의를 들으며 알고리즘 입문을 하려고 한다. 첫 번째 풀이 = 오답(소문자만 있을때만 정답) [채점 결과 보기]라는걸 나중에 알아서 대문자 변환을 하지 않아서 틀렸다는 걸 풀이를 보고 알았다. import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner in=new Scanner(System.in); String input1 = in.next(); in.nextLine(); char input2 = in.nextLine().charAt(0);//charAt(0);붙이는걸 까먹어서 찾아봤다. int count = 0; for(int i = 0; i < input1.len..
TreeMap은 이진검색트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장한다. 그러므로 검색과 정렬에 적합한 컬렉션 클래스이다. import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; public class _01_Treemap { public static void main(String[] args) { //HashMap과 같지만 key값을 기준으로 정렬된 상태를 유지한다. TreeMap student = new TreeMap(); student.put(3, "홍길동"); student.put(1, "장보고"); student.put(4, "이순신"); student.put(5, "유관순"); student.put(2,..