본문 바로가기

Java

(54)
직렬화 직렬화 인스턴스 상태를 그대로 저장 or 네트워크로 전송 후에 복원 직렬화 사용을 위해 마크인터페이스 해야 함 implements Serializable 이를테면 파일에 한글자씩 혹은 문자열로 정보를 저장시키는 것이 아니고 인스턴스 자체를 파일에 저장하였다가 인스턴스 채로 뽑아오는 작업 class Person implements Serializable{ String name; Person(String s) { this.name = s; } } Person lee = new Person(“김유신”); Person kim = new Person(“강감찬”); FileOutputStream fos =new FileOutputStream(“serial.dat”); 한뒤에 바로 Object를 쓸수는 없으므로 보조..
FileInputStream && FileOutputStream FileInputStream FileOutputStream 파일에 한 바이트씩 자료 읽고 쓰는데 사용. 입력스트림은 파일 없을 때 예외 출력스트림은 파일 없을 때 생성 & 출력 try{ FileInputStream fls = new FileInputStream("input.txt'); int i; //파일 끝에서 -1 출력 while( (i = fls.read()) != -1){ System.out.println((char)i); } } catch (Exception e) { System.out.println(e); }finally{ try{ fls.cloes(); } catch(Exception e) { System.out.println(e); } } try{ FileInputStream fls = n..
입출력 스트림 입출력 스트림 다양한 입출력 장치에서 독립적인 입출력 방식 제공 기존의 자료 계산을 위한 스트림과 다름 기반 스트림 : 읽고 쓰는 기능을 하는 스트림 보조 스트림 : 기반 스트림의 추가적인 기능 제공 모든 입출력은 예외처리 해야함. try{ int i = System.in.read(); System.out.println(i); System.out.println((char)i); a를 입력시에 97 a 출력 while( (i = System.in.read()) != '끝') { System.out.println((char)i); } 하면 무한 반복되는데 끝이 2바이트 이므로 read()는 1바이트만 읽기 때문에 무한 반복됨. InputStreamReader isr = new InputStreamReader..
자바 연습 (스트림) public class Customer { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getCost() { return cost; } public void setCost(int ..
예외 처리 예외처리 -> 프로그래머가 처리 가능 try{ }catch(Exception e) { System.out.println(e); //어떤 종류의 예외인지 알려줌 }finally{ } 예외처리는 서버가 죽지 않고 예외만 남기고 돌기때문에 예외처리를 해줘야 함 finally는 try가 수행되면 무조건 수행됨 try catch이후 수행할 작업이 적힘 예를들어 try에서 file open할때 예외로 catch로 넘어간 경우 각각 close가 필요하지만 finally에서 close한번만 해주면 됨
스트림 자료의 연산을 위해 사용하는 객체 ㅡ 스트림 스트림은 한번 수행후에 재활용 불가능 다시 스트림 생성해서 사용 배열의 스트림 int[] arr = {1,2,3,4,5} int sum = Arrays.stream(arr).sum() int count = (int)Arrays.stream(arr).count() count는 long형이므로 int로 바꿔줌 Collection stream List list = new ArrayList(); Stream stream = list.stream(); 배열과 다르게 컬렉션 스트림은 이렇게 객체로 생성가능 stream.foreach(s->System.out.println(s)); foreach로 하나씩 접근 가능 만약 sort후에 출력이라면 위에 stream 그대로 사용..
람다식 순수 함수 -> 외부 변수 사용안하고 매개변수만 이용해서 처리하는 함수 순수함수를 이용하는 프로그래밍 -> 함수형 프로그래밍 람다식의 메소드 구현은 인터페이스 사용 함수형 인터페이스는 메소드 하나만 작성 가능. 원래는 인터페이스 만들고 그 인터페이스를 상속받는 클래스를 만들고 그 클래스에서 인터페이스의 메소드 구현 후에 메인부에서 시행. 람다식은 자료형 필요 x public interface Stringcla { public void makeString(String s1, String s2); } Stringcla st = (s,v) ->System.out.println(s+","+v); 이 람다식은 사실 Stringcla st = new Stringcla(){ @Override public void m..
익명 클래스 익명 클래스. Runnable getRunnable(int i) { int num = 100; class MyRunnable implements Runnable{ @Override public void run() { System.out.println(outNum); System.out.println(Outer.sNum); } } return new MyRunnable(); } 같이 메소드안에서 class가 정의된 경우에 MyRunnable이라는 이름은 여기서 밖에 쓰이지 않음. 따라서 Runnable getRunnable(int i) { int num = 100; return new Runnable(){ @Override public void run() { System.out.println(outNum)..