본문 바로가기

개발자한걸음

(212)
Resource를 (클래스 생성없이) JAVA로 불러오기 (FileInputStream) 저번에 했던 객체를 생성하여 JAVA로 불러오는 것 외에도 불러오는 동시에 선언을 하는 방법이 있다. 그 방법은 FileInputStream fis=new FileInputStream(경로/파일명.확장자) 로 생성하면 된다. 이번에는 이것을 사용하여 문자열의 값을 받고, 그 문자열을 int로 다시 형변환하여 연산자 사용까지 하는 것을 해보는 예제이다. package class03; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class Test03 { public static void main(String[] args) { S..
Resource를 JAVA로 불러오기 (FileInputStream) 먼저 외부에 있는 데이터를 사용하기 위해선 File 이라는 클래스가 자바 내에 hiding 되어있기 때문에 File file = new File();로 임포트한다. 그리고 이 때 , Input 값에 자신이 불러오고자 하는 파일의 경로와 파일명.확장자를 입력하면 된다. 이 파일을 불러올 때에 대한 오류가 있을 수 있기 때문에 try catch로 예외처리를 완료하면 불러온 값을 file이라는 객체로 생성하는 것 까지 완료가 된 것이다. package class03; import java.io.File; import java.io.FileInputStream; import java.io.IOException; // [파일객체] public class Test02 { public static void main(..
반복문 for / for each + 컬렉션 [Iterator] for문과 for each문의 차이 ArrayList al =new ArrayList(); al.add(1); al.add(2); al.add(3); al.add(4); al.add(5); Integer 값만 받는 ArrayList al을 생성하여 {1,2,3,4,5} 를 배열에 넣어줬다. 이 때 배열 안에 인자값 들을 보기 위해서는 다음과 같이 for문을 사용했는데, for (int i = 0; i < al.size(); i++) { System.out.println(i); } 이 때 일반 for문 , for(초기식 ; 조건식 ; 증감식){ 반복 수행할 작업 } 을 사용하여도 상관이 없지만 1. 가독성이 떨어질 수 있고 2. ArrayIndexOutOfBoundException을 만날 수도 있다. 이러..
스레드 [Thread] 의 동기화(synchronized) - 티켓팅 예제 동기화를 하는 이유: - 공유된 자원을 단순 처리속도로 수행하게 되면, 실질적인 자원이 없음에도 불구하고 먼저 수행을 해버리고 discount를 나중에 하게 된다면 , 복잡한 일이 많이 생길 것이다. - 극단적인 예로 은행에서의 현금인출과 티켓팅이 있을 것인데, 티켓팅에 대한 예제를 살펴볼 것이다. package class05; // [동기화] // : 공유자원을 어떤 스레드가 점유하고있을때, // 다른 스레드의 접근을 막는 것 class Person implements Runnable { Ticketting t = new Ticketting(); @Override public void run() { t.pay(); } } class Ticketting { static int ticket = 2; // ..
예외처리 - 나만의 예외 만들기 상황 : 나이를 입력하시오 (0~200) 내로 유효한 범위 내의 나이를 받고 싶은데, 기본적으로 제공되는 예외처리로는 예외처리를 하기가 어려움, 이를 위해 나만의 예외처리를 만드려고 한다. package class02; import java.util.Scanner; // +) // 나만의 예외만들기 class MyException extends Exception{ // 멤버변수 메세지 값을 // 반드시 설정해서 만들수있게! // -> 생성자: 멤버변수 값을 초기화할때 private String message; MyException(String message){ this.message=message; } public String getMessage() { return message; } } public c..
예외처리 throw 이름 그대로 throw 던진다 catch로... throw 예외를 발생시키는 키워드 ​ throw 예외객체; ex) throw new ArrayIndexOutOfBoundsException(); ​ 보통 생성자의 매개변수로 문자열 값을 넘겨주면 해당 문자열값이 부연설명으로 들어가도록 설계되어있다 throws 예외처리를 떠넘길때 사용하는 키워드 ​ 메소드를 정의할때 예외 처리를 떠넘김으로서 사용하는 사람이 원하는 방식으로 예외처리를 할 수 있게 한다
예외와 예외처리(try, catch) - Exception, .printStackTrace(); 사용 아직 어떤 예외가 발생할지 모르기 때문에 Exception을 사용한다. 그리고 그걸 개발자가 확인할 수 있게 사용하는 것이 .printStackTrace(); 을 사용하여 시각화한다. package class02; import java.util.ArrayList; import java.util.Scanner; public class Test04 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArrayList data = new ArrayList(); data.add(-1); data.add(0); data.add(1); data.add(2); data.add(3); System.out.println("로그: ..
예외와 예외처리(try, catch) 기본사용법 try-catch문 try{ 오류가 발생할 수 있는 코드; }catch (Exception 예외객체) { 오류가발생했을때실행할코드; } ​ try{ 예외가발생할수있는코드; }catch(예외이름1 예외객체) { 예외이름1이발생했을때 실행되는영역; }catch(예외이름2 예외객체) { 예외이름2가발생했을때 실행되는영역; }... { ​ }finally { 강제종료전에무조건한번실행되는영역; } package class02; import java.util.Scanner; public class Test02 { public static void main(String[] args) { int[] data= {1,2,3}; Scanner sc=new Scanner(System.in); System.out.printl..