목록SelfStudy/JAVA (23)
YJ의 새벽
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/zEhIF/btrYqMI7nVX/85dUt3fI0rvmmEnkhM2In1/img.png)
데몬쓰레드 --일반 쓰레드의 작업을 돕는 보조적인 역할을 수행. --일반 쓰레드가 모두 종료되면 자동적으로 종료. -- ex)) 가비지 컬렉터, 자동저장, 화면 자동갱신 등등..에 사용 . --무한루프와 조건문을 이용해서 실행 후 대기하다가, 특정조건이 만족되면 작업을 수행하고, 다시 대기하도록 작성. boolean isDaemon () : 쓰레드가 데몬쓰레드인지 확인, 참이면 true 를 반환 void setDaemon( boolean on) : 쓰레드를 데몬쓰레드 , 사용자 쓰레드로 변경 매개변수 on 을 true 로 지정하면 데몬쓰레드가 된다. **setDaemon(boolean on) 은 반드시 start() 호출 전에 실행되여야함. 그렇지않으면 오류발생. EX )))) 데몬쓰레드 예제. publ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/SAyFK/btrYieGVOpM/OZzMpw9WgLI2MviO33X6x0/img.png)
--프로세스 : 실행중인 프로그램, 자원 (메모리,cpu ... ) 과 쓰레드로 구성. --쓰레드 : 프로세스 내에서 실제 작업을 수행. 모든 프로세스는 하나 이상의 쓰레드를 가지고있다. 멀티쓰레드의 장점 : 시스템자원을 효율적으로 사용할수있음. 사용자에대한 응답성이 향상. 작업이 분리되어 코드가 간결. 멀티쓰레드의 단점 : 동기화(synchronization)에 주의 해야함. 교착상태가 발생하지않도록 주의. 프로그래밍 할 때 고려해야 할 사항들이 많다. 쓰레드 구현과 실행. -- 자바는 단일 상속이므로, Runnable 을 구현하는것이 좀더 실용적이다. EX ))) 쓰레드를 실행해보자. -- 쓰레드를 실행시키면 (start()) 바로 실행되는게 아니고, OS 스케줄러가 실행순서를 결정한다. ( OS에 ..
애너테이션 --주석처럼 프로그래밍 언어에 영향을 미치지 않으며 , 유용한 정보를 제공. 표준 애너테이션 --JAVA에서 제공하는 애너테이션 --@Override : 오버라이딩을 올바르게 했는지 컴파일러가 체크하게한다. --메소드 선언부 앞에 @Override 를 붙인다. --@Deprecated : 앞으로 사용하지않을것을 권장하는 필드나 메소드에 붙인다. --@FunctionalInterface : 함수형 인터페이스에 붙이면 , 컴파일러가 올바르게 작성했는지 체크. --함수형 인터페이스에는 하나의 추상메서드만 가져야한다는 제약이 있음. --@SuppressWarning() : 컴파일러의 경고메시지가 나타나지 않게 억제한다. -- () 안에 억제하고자 하는 경고의 종류를 문자열로 지정. -- ex ) 경고..
열거형 --관련된 상수들을 같이 묶어 놓은것 . --열겨형 정의 enum 열거형이름 { 상수명1, 상수명2 , ... } enum Direction { EAST , SOUTH , WEST , NORTH } public class Example { public static void main(String[] args) { Direction d1 = Direction.EAST; Direction d2 = Direction.valueOf("WEST"); Direction d3 = Enum.valueOf(Direction.class, "EAST"); System.out.println("d1="+d1); // EAST System.out.println("d2="+d2); // WEST System.out.print..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/o6eFr/btrX3ZchinX/npGNBTEeytx2K1g1HN6Ko0/img.png)
--하나의 참조변수로 대입된 타입이 다른 객체를 참조 가능. EX ))) class Fruit {public String toString() {return "Fruit";}} class Apple extends Fruit {public String toString() {return "Apple";}} class Grape extends Fruit {public String toString() {return "Grape";}} class Juice{ String name; Juice(String name) {this.name=name+"Juice";} public String toString() {return name;} } class FruitBox extends Box{} class Box{ Array..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/l7obT/btrX4iPeneB/pcyFrrpKQx0EUc5Z5asbhk/img.png)
제네릭스란?? -- 컴파일시 타입을 체크해주는 기능. -- 객체의 타입 안정성을 높이고 , 형변환의 번거로움을 줄여줌. -- 실행중 에러를 컴파일에러로 가져올수있게 해준다. import java.util.*; public class Example { public static void main(String[] args) { //ArrayList list = new ArrayList(); ArrayList list = new ArrayList(); list.add(10); list.add(20); list.add("30"); // 제네릭을 사용하면 오류발생. // 컴파일에러를 잡아준다. (타입체크가 강화됨) int i = (int)list.get(2); System.out.println(i); } } 타입변..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/2i2Zu/btrX32FR4va/kH6kzM4SzxH2ONeyzO8Dfk/img.png)
Collections --컬렉션을 위한 메서드를 제공 --fill() , copy() , sort() , binarySearch() 채우기 복사 정렬 검색 --synchronized (동기화) --unmodifiable (변경불가) -컬렉션이 변경되지않게 보호 --singleton ( 객체1개만 저장 ) --checked ( 한종류의 객체만 저장 ) import java.util.*; public class Example { public static void main(String[] args) { List list = new ArrayList(); // list생성 Collections.addAll(list, 1,2,3,4,5); // 1,2,3,4,5 값 추가 Collections.rotate(list..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ctNjlI/btrXXhpj9EO/X8SPKlJe6GaDFqikhfIQk0/img.png)
--Map 인터페이스를 구현 , --데이터를 키와 값의 쌍으로 저장. --순서 X 중복( 키x 값o ) --순서를유지하려면 LinkedHashMap --TreeMap : TreeSet과 같은 특성, (키로 저장한다는 차이) --Hashtable : 배열과 LinkedList 가 조합된 형태. EX ))) HashMapExample ( 로그인 ) import java.util.HashMap; import java.util.Scanner; public class HashtableExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); HashMap map = new HashMap(); map.put(..