파일을 영구 보존하기 위해서는 RAM이 아니라 외부 저장 장치에 저장해야 한다.
텍스트
# String
텍스트는 일종의 문자열이고, 수정불가하다. 즉, immutable하다.
String과 Char[]는 다르다. String은 immutable하지만 Char[]은 mutable하다.
.equals()의 매개변수에는 Object가 들어가서 어떤 것이든 들어간다. 다른 말로 유연하다.
package example;
public class example_string {
public static void main(String[] args) {
String s = "abc";
String t = "abc";
System.out.println(s==t);
System.out.println(s.equals(t));
}
}
는 아래 그림과 같이 같은 주소값을 받아서 s == t를 했을 때도 true가 나온다.
package example;
public class example_string {
public static void main(String[] args) {
String s = "abc";
String t = new String("abc");
System.out.println(s==t);
System.out.println(s.equals(t));
}
}
하지만 위의 코드처럼 프로그래밍한다면 다른 주소값을 할당받기 때문에 아래 그림과 같이 s == t는 false, s.equals(t)는 true가 나온다.
# 직렬 파일 ( Sequential Files )
파일(file) : 보조 기억장치에 영구 저장되어 있는 심벌의 시퀀스(나열)
- 문자 파일( = 텍스트 파일) : 키보드 문자의 시퀀스 (바이트 단위로 저장)
- 바이너리 파일 : 0과 1의 시퀀스
package example;
import java.io.FileWriter;
import java.io.PrintWriter;
public class example_string {
public static void main(String[] args) throws Exception{
PrintWriter outfile = new PrintWriter(new FileWriter("poem.txt"));
outfile.println("가을이 오면");
outfile.println("학기가 저물고, ");
outfile.println("시험이 끝나면서");
outfile.println("겨울이 온다.");
outfile.close();
}
}
다음과 같이 작성할 수 있다.
예외 처리
# Exceptions
Exception에는 크게 3가지가 있다. InterrptedException, RuntimeException, IOException이다.
ArithmeticException : 0으로 나눌 때 exception
# try - catch
try-catch 구문은 다음과 같이 사용할 수 있다.
Exception e로 처리하면 exception이 발생하지 않겠지만 너무 두루뭉실하게 처리된다. 따라서 exception마다 예외처리를 하는 것이 바람직하다.
위의 표는 예외가 발생했을 때 Exception 객체가 처리 가능한 메서드이다.
예외처리와 일반 코드가 같이 존재하면 굉장히 복잡해진다. 따라서 예외처리를 하는 클래스를 따로 만들어서 처리하는 것이 효과적이다.