본문 바로가기
반응형

Spec UP - Backend/나도코딩의 자바기본편58

chap_13. 파일/폴더 다루기 Java를 통하여 파일을 만들고 정보를 불러오는 방법을 학습해보자. file.createNewFile() 을 통해 파일을 생성한다.(이미 해당 파일이 존재하는 경우 생성하지 않음) file.exists() 파일 존재 유무를 확인한다. file.getName() 파일의 이름을 불러온다. file.getAbsolutePath() 파일의 절대 경로를 불러온다. file.getLength() 파일의 크기 Byte 를 불러온다. 이번시간에는 폴더에 대하여 학습해보자. folder.mkdir() 을 통해 해당 폴더를 생성한다. folder.mkdirs() 를 통해 하위폴더를 생성할 수 있다. filesAndFolders.listFiles() 를 통해 해당 경로 내에 파일/폴더 리스트를 확인할 수 있다. file.i.. 2023. 7. 13.
chap_13. 출력 Java는 System.out.format()이나 System.out.printf() 출력 결과물의 포맷을 다양하게 설정할 수 있다. 아래 예제를 통해 정수를 다양한 포맷으로 출력하는 방법을 학습해보자. 위 예제에 대하여 실수로 출력하는 포맷을 학습해보자. (Math.PI 원주율을 이용하여) 이번에는 문자열을 다양한 포맷으로 출력해보자. 위의 학습한 출력포맷을 이용해 다음 예제를 학습해보자. System.out.println() 을 이용해 학생들의 점수를 출력하였다. 그런데 출력물을 보면 공백이 맞지 않아 가독성이 떨어지는 단점이 있다. 위에서 학습한 포맷을 통해 정리해보자. System.out.printf()를 활용하여 정돈된 결과물을 확인할 수 있다. 2023. 7. 12.
chap_13. 입력 사용자로부터 데이터를 입력받아 처리하는 로직을 작성해보자. 위 코드를 실행하면 사용자에게 이름을 입력받은 후 입력받은 정보를 출력하는 것을 확인할 수 있다. 아래 예제를 통해 다양한 데이터 타입에 대하여 데이터 입력 및 출력을 학습해보자. 위 구문을 실행하고 "Java", "좋아요"를 입력할 때 실행되는 결과이다. 이 때 sc.next()의 특성상 띄어쓰기를 입력하면 예상치 못한 오류가 발생될 수 있다. 예를들어 "무슨 프로그래밍 언어를 배웠나요?" 라는 질문에 "Java를 배웠어요" 라고 답변했다고 해보자. 첫 질문에 "Java를 배웠어요" 라고 입력하자 "Java를" / "배웠어요" 로 나뉘어서 답변 처리가 된것을 볼 수 있다. 이는 sc.next() 메소드는 띄어쓰기로 구분해서 값을 입력받는 형식이.. 2023. 7. 11.
chap_12. 동기화 기존 쓰레드 시간에 학습한 예제를 볼 때 직원 1, 직원 2 가 각각 방을 청소하면서 방 청소 순서가 섞여서 진행되었다. 이번에는 방을 순차적으로 청소하도록 동기화를 활용해보자. 위와 같이 Room 클래스를 별도로 생성하여 직원 1, 2가 5개의 방씩 순차적으로 청소하도록 하였다. 하지만 실행결과를 보면 아래와 같이 1번방이 두번 청소된 것을 볼 수 있다. 두개의 쓰레드가 동시에 실행되면서 발생하는 오류이다. 동기화를 활용해 한 쓰레드가 실행중이면 다른 쓰레드가 접근하지 못하도록 개선 해보자. Room 클래스의 clean() 메소드 앞에 synchronized 를 추가해주면 동기화되어 여러개의 쓰레드가 동시에 접근하지 못한다. 2023. 7. 11.
chap_12. Thread와 Runnable, Join, MultiThread 일반적으로 실행가능한 프로그램은 .exe 형태로 만들어져있다. 그리고 프로그램을 실행함으로써 현재 돌아가고 있는 상태를 프로세스라고 한다. 해당 프로세스 자원을 이용해 작업을 수행하는 것을 쓰레드라고 한다. 일반적으로 프로세스는 여러개의 쓰레드를 가질 수 있지만, 따로 쓰레드 처리를 해주지 않으면 Java는 하나의 프로세스가 하나의 쓰레드만을 가지며 순차적으로 수행한다. 위와 같이 1명이 1~10번방 청소를 혼자 순차적으로 진행하도록 하였다. 이번에는 청소를 할 사람 2명으로 늘려서 2개의 쓰레드를 처리해보자. 우선 CleanThread 라는 클래스를 별도로 생성하여 직원이 홀수방을 청소를 수행하는 메소드를 생성하였다. 그리고 사장님이 짝수방을 청소하는 cleanByBoss() 메소드를 생성하였다. cl.. 2023. 7. 11.
chap_11. 예외처리미루기(Throws) 위와 같이 test.txt 파일을 불러오기를 시도하는 구문을 생성하였다. 오류가 발생되면 "파일 쓰기에 실패했습니다.", "writeFile 메소드 내에서 자체해결하였습니다."가 출력된다. writeFile() 메소드를 실행하는 동안 오류가 발생하였을 때 해당 메소드 내에서 자체적으로 예외처리 할 수도 있고 throws를 이용해 메소드를 호출한 위치에서 예외처리하도록 만들 수도 있다. 2023. 7. 10.
chap_11. 사용자 정의 예외 이전 시간에 throw를 학습하면서 위와 같은 예제를 학습하였다. 이는 age 값을 17로 설정하고 age 2023. 7. 10.
chap_11. Finally 구문 / Try With Resources try 구문이 정상적으로 실행되건, 예외 오류가 발생되건 결과와 상관 없이 finally 로 설정한 구문은 반드시 실행된다. 보통 Finally 구문은 try 내에서 작업하던 내용을 정리할 때 사용한다. (Ex. 파일을 열었다면 Finally를 통해 파일을 닫는다. / 임시파일을 생성하였다면 Finally를 통해 임시파일을 삭제한다.) Try 구문은 아래와 같이 여러 유형으로 생성할 수 있다. * try + catch / try + catch + finally / try+ finally 아래와 같이 catch 구문 없이 try + finally 유형으로도 생성할 수 있는 점을 참고하자. 임시 파일을 쓰는 클래스를 만들어 예시를 학습해보자. 위와 같이 MyFileWirter 객체를 생성하여 파일에 내용을 .. 2023. 7. 10.
chap_11. 예외처리 (Try Catch) / 예외발생시키기(Throw) Java 프로그램 내에서 예상치 못한 상황이 발생됐을 때를 대비하여 예외처리가 필요하다. * 컴파일 오류 : 코드에 문제가 있어 프로그램이 실행되지 않는 경우 * 런타임 오류 : 컴파일은 작동되나 실행과정에서 오류가 발생되는 경우 런타임 오류는 크게 에러 error 와 예외 exception 이 있다. 에러 : 작성한 소스코드를 통해 수습할 수 없는 사례(메모리, 스택오버플로우 등) 예외 : 소스코드를 통해 수습할 수 있는 사례(지정 경로가 잘못된 경우, 호출한 객체가 없는 경우 등) 예를 들어 3/0을 실행하면 숫자를 0으로 나눌 수 없으므로 오류가 발생된다. 위의 try catch 구문을 통해 작성하게 되면 실제 3/0은 실행되지 않았지만 catch 구문으로 오류를 출력하였으므로 "프로그램 정상 종료.. 2023. 7. 10.
chap_10. Stream Stream의 문자 그대로의 뜻은 개울, 시내, 흐르다 라는 의미를 가진다. Java에서 스트림은 '데이터가 흐른다' 라는 의미로 볼 수 있으며 Java에서 스트림을 이용하면 많은 데이터 중 필터링 된 데이터, 요소를 추출할 수 있다. 스트림은 위와같이 Arrays.stream() , Collection.stream() , Stream.of() 등의 형태로 생성할 수 있다. 스트림 사용은 중간연산(Intermediate Operation)과 최종연산(Terminal Operation)이 있다. 중간연산은 중간에 필터링 등의 여러 작업을 진행한다. (filter, map, sorted, distinct, skip) 최종연산은 일련의 작업을 통해 최종적인 결과물로 한번만 사용한다.(count, min, ma.. 2023. 7. 6.
반응형