동기와 비동기
- 동기 : 일의 순서가 있다.
동기는 CPU가 멍때리는 상황이 발생할 수 있다.
- 비동기 : 일의 순서가 없다
빠른 속도로 실행해서 동시에 진행하는 효과를 볼 수 있다.
총합시간은 각각 실행하는 것보다 느리다.
CPU가 멍때리는 시간을 없애준다.
예외처리 (Exception)
- 운영 전 예외는 컴파일 시 잡음
- 운영 후 예외는 런타임 시 잡음
package ch07;
class 총 {
void shoot() {
System.out.println("총을 발사했습니다.");
}
}
public class ExceptionEx01 {
public static void main(String[] args) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
int[] nums = {1,2,3};
try {
System.out.println(nums[3]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("괜찮아 그냥 진행해");
System.out.println(e.getMessage());
e.printStackTrace();
}
총 s = null;
try {
s.shoot();
} catch (Exception e) {
System.out.println("총이 없어서 발사하지 못했습니다.");
}
System.out.println("매인 스레드 종료");
}
}
String
- String은 클래스
1.기본자료형x
2.주소를 가지고있다.
- char배열로 만들어짐
- 원래 new를 통해서 만들어야하지만, 그냥 바로 만들 수 있게 허용
- String 상수 풀에서 같은 내용이면 같은 곳을 가리킴
- new를 통해 만들지 않으면 특징
장 : 같은 문자열이 같은 공간 공유 -> 메모리효율높다
단 : 문자열을 변경할때마다 새로운 공간이 할당
package ch07;
public class StringEx01 {
public static void main(String[] args) {
String s1 = new String("바다");
String s2 = new String("바다");
System.out.println(s1 == s2);
String s3 = "바다";
String s4 = "바다";
System.out.println(s3 == s4);
s3 = s3 + "태양";
s3 = s3 + "물";
System.out.println(s3);
System.out.println(s4);
System.out.println(s1.equals(s2));
}
}
버퍼
- 버퍼 : 임시 저장 공간
- Stream
1. 데이터의 흐름 (데이터 선)
2. 1Byte(8bit)씩 끊어서 전송
- 통신은 항상 인코딩과 디코딩이 필요함
package ch07;
import java.io.IOException;
import java.io.InputStream;
public class StreamEx01 {
public static void main(String[] args) {
InputStream in = System.in;
try {
int data = in.read();
System.out.println((char)data);
} catch (Exception e) {
e.printStackTrace();
}
}
}