21.08.10

.·2021년 8월 19일
0

playdata

목록 보기
15/35
post-thumbnail

DAY15

✍️ String, StringBuffer, StringBuilder

  • 불변성(immutable) : 생성된 동일 객체를 Update, Delete 못하는 것
  • 가변성(mutable) : 생성된 동일 객체를 Update, Delete를 할 수 있는 것
1) String : Create _불변성 , 문자열 생성
2) StringBuffer : CRUD_가변성, 문자열 생성, 추가, 삭제 등의 문자열 연산, 동기화, 다중스레드
                  ex) 멀티채팅, 멀티게임, 멀티 스레드
3) StringBuilder : CRUD_가변성, 문자열 생성, 추가, 삭제 등의 문자열 연산, 동기화가 되지 않는다, 단일 스레드 
                  ex) 단일게임, 단일스레드

✏️ Autoboxing & Unboxing

- 내부적으로 기본 코드 생성

e.g.
Character ch = 'a'
=> Character ch = new Character('a');
Integer i = 100;
=> Integer i = new Integer(100);


✍️ 사용자 정렬 코드

static int compare(int x, int y) // 매개인자를 각기 다른것을 받아야함
int compareTo(Integer anotherInteger) //비교하고자 하는것을 자기 자신과 비교 non-static

e.g.
public int compareTo(Object arg0){

	Address other_class = (Address)arg0;
    int res = this.getName().compareTo(other_class.getName());
    
    if(res >0 ){
    	return 1;
    }else if (res <0) {
    	return -1;
    }
    return 0;
    }
java.util.Collection
static <T extends Comparable<? super T>>
                                        void sort(List<T> list)
                                        
static <T> void sort (List<T> list, Comparator<? super T> c)
                                        
e.g.
public static void main (String[] args) {
	List<Address> list_all = new ArrayList<>();
    
    list_all.add(new Address("111","111"));
    list_all.add(new Address("444","444"));
    list_all.add(new Address("333","333"));
    
    System.out.println("전체출력");
    for(Address ar : list_all){
    	System.out.println(ar);
        }
    
    System.out.println ("정렬 후 출력");
    Collections.sort(list_all); // list_all이 가진 E 요소의 형식에 따라 정렬을 하겠다
    
    for(Adderess ar : list_all){
    System.out.println(ar);
    }
    }

✍️ Process

command 명령을 이용해서 단일 Process exe를 생성해서 로딩 해보자

public static void main(String[] args) {

Runtime r = Runtime.getRuntime();
// python 웹 수집기를 만들어서 java application으로 제어할 때 사용한다.
try{
	r.exec("notepad");
}catch (IOException e) {
    e.printStackTrace();
    }
    }

✍️ Thread

class 단위로 실행되는 Process
method 단위로 실행되는 Thread

1) Interface Runnable : run() -> Thread로 실행되는 메소드 (start())

Runnable를 implements해서 run()이라는 재정의 메소드에 명령을 기재하고 Thread 클래스의 생성자를 통해서 Thread로 만들어 start()메소드롤 실행한다.

2) class Thread : run()-> Thread로 실행되는 메소드 (start())

Thread의 실행시 속성값들을 리턴, 제어, 흐름주기를 스케쥴링 등의 메소드를 추가한 확장형 클래스
Thread라는 클래스를 extends 해서 run()이라는 재정의 메소드에 명령을 기재하고 객체 생성후 start()메소드로 실행한다.

e.g.
class ThreadExample1 implements Runnable{
	int i;
    
    public void run() {
    	while (i<30) {
         i++;
         System.out.println(Thread.currentThread().getName() + "i :" +i);
        }
       }
      }
      
 public class ThreadTest1{
 	public static void main(String args[] ) throws Exception {
    Thread t1 = new Thread(new ThreadExample1());
    Thread t2 = new Thread(new ThreadExample1());
    t1.start();
    t2.start();
    t2.setPriority(Thread.Max_PRIORITY);
    System.out.println(t1.getName() + "," + t1.getID() + "," + t1.getPriority());
    System.out.println(t2.getName()+ "," + t2.getID()+ "," + t2.getPriority()));

0개의 댓글