< 입출력 관련 API >
① Scanner 클래스
- Scanner 클래스는 입출력 스트림도 아니고, 보조 스트림도 아님
- nextLine() 메서드 제공
public class Product {
private int pno;
private String name;
private int price;
private int stock;
public int getPno() {
return pno;
}
public void setPno(int pno) {
this.pno = pno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getStock() {
return stock;
}
public void setStock(int stock) {
this.stock = stock;
}
}
import java.util.*;
public class ProductStorage {
private List<Product> list = new ArrayList<>();
private Scanner scanner = new Scanner(System.in);
private int counter;
public void showMenu() {
while(true) {
System.out.println("------------------------------");
System.out.println(" 1. 등록 | 2. 목록 | 3. 종료 ");
System.out.println("------------------------------");
System.out.print("선택: ");
String selectNo = scanner.nextLine();
switch(selectNo) {
case "1" : registerProduct(); break;
case "2" : showProducts(); break;
case "3" : return;
}
}
}
public void registerProduct() {
try {
Product product = new Product();
product.setPno(++counter);
System.out.print("상품명: ");
product.setName(scanner.nextLine());
System.out.print("가격: ");
product.setPrice(Integer.parseInt(scanner.nextLine()));
System.out.print("재고: ");
product.setStock(Integer.parseInt(scanner.nextLine()));
list.add(product);
}catch(Exception e) {
System.out.println("등록에러: "+e.getMessage());
}
}
public void showProducts() {
for(Product p : list) {
System.out.println(p.getPno()+"\t"+p.getName()+"\t"+p.getPrice()+"\t"+p.getStock());
}
}
}
public class ProductStorageExample {
public static void main(String[] args) {
ProductStorage productStorage = new ProductStorage();
productStorage.showMenu();
}
}
② File 클래스
- 파일 및 폴더 정보를 제공해주는 역할
- 문자열 경로 제공해야 함
· 윈도우에서는 /, (\\) 둘 다 사용가능
· 유닉스와 리눅스는 / 사용
File file = new File("C:/Temp/file.txt");
File file = new File("C:\\Temp\\file.txt");
< 멀티 스레드 >
- 동시에 여러개의 일을 처리하는 동작
- 프로세서 : 프로세스를 처리해주는 처리기 ( ex. CPU )
- 프로세스 : 메모리에 올라와져있는 일 ( ex. 파워포인트, 엑셀 등 .. )
- 프로세스와 프로세스는 독립적
- 스레드와 스레드는 하나의 애플리케이션 안에 들어가져있는 병렬의 단위
public class GameEx1 {
public static void main(String[] args) {
for(int i=10; i>0;i--) {
try {
Thread.sleep(1000);
}catch (InterruptedException e) {}
System.out.println("count down : "+i );
}
int num1 = (int)(Math.random()*9)+1; // 1~9
int num2 = (int)(Math.random()*9)+1; // 1~9
String msg = num1 + "*"+num2+" = ? ";
String result = JOptionPane.showInputDialog(msg);
System.out.println(result);
if((num1*num2)==Integer.parseInt(result)) {
System.out.println("빙고");
}else {
System.out.println("틀림");
}
}
}
- Thread.sleep() : 1초 쉼
- i와 j 10번씩 출력할건데 i 먼저 출력 후 j 출력하는게 아니라 동시에 실행시키려면 Thread 사용해야함
public class ThreadEx1 {
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
for(int i=0; i<10;i++) System.out.println("i");
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
for(int i=0; i<10;i++) System.out.println("j");
}
});
t1.start();
t2.start();
}
}
- 결과는 실행할때마다 랜덤임
'자바 웹 개발자가 될거야 > JAVA' 카테고리의 다른 글
[JAVA] 동기화 메소드 / synchronized (0) | 2021.12.09 |
---|---|
[JAVA] 멀티스레드 / 멀티스레드로 구구단 구현 (0) | 2021.12.09 |
[JAVA] 필드 / 생성자 / 생성자 오버로딩 / this. 참조 / this() 다른생성자 호출 (0) | 2021.11.19 |
이클립스 워크스페이스 기본 경로 변경 / 프로젝트 익스플로어 창 사라졌을 때 (0) | 2021.11.19 |
[JAVA] 중첩클래스 / 인스턴스 멤버 클래스 / 정적 멤버 클래스 / 로컬 클래스 / 중첩클래스 참조 (0) | 2021.11.18 |