본문 바로가기

전체 글292

Java : 입출력 예외 처리 (throws IOException) 입력과 출력을 할 때는 예외 처리가 필요하다. public static void main(String[] args) throws IOException { Java는 입력과 출력을 할 때 발생할 수 있는 예외에 대해 매우 까다롭게 규정하고 있다. 그렇기 때문에, 입력과 출력을 다룰 때, 예외 처리가 없다면 컴파일 에러가 발생한다. public class Test { public static void main(String[] arg) { System.out.println("Hello Java!!"); } 위와 같은 코드에서는 출력을 하는 메서드 println()이 사용되었는데, 왜 예외 처리를 안해도 될까? 그 이유는 Java에서는 print(), println(), printf() 메서드에만 자체적으로 예.. 2022. 9. 3.
2022.09.02. ▶ 학습 전(계획) 학습 목표는 무엇인가? Java; 객체지향 프로그래밍 클래스와 객체 필드와 메서드 이미 알고 있는 내용은 무엇인가? 한 번씩 다뤄본 내용들이다. 처음 배운다는 생각으로 집중해서 봐야될 것 같다. ▶ 학습 후(점검 및 평가) 새롭게 배운 내용은 무엇인가? 클래스는 크게 필드, 메서드, 생성자, 이너 클래스로 구성된다. 여기서 멤버는 메서드, 생성자, 이너 클래스를 말한다. 객체가 생성되면 생성된 인스턴스는 어느 메모리 영역에 들어가게 되고, 그 인스턴스의 메서드는 어느 메모리 영역에 들어가게 되는지. 자바에서 변수는 크게 클래스 변수, 인스턴스 변수, 지역 변수로 구분된다. 필드 변수는 클래스 변수와 인스턴스 변수를 말하고, 이 둘은 static 키워드의 유무로 구분된다. 이 두 변수 .. 2022. 9. 2.
오버로딩(Overloading) vs 오버라이딩(Overriding) 오버로딩과 오버라이딩은 둘 다 하나의 메소드를 가공해서 사용한다라는 공통점이 있다. 오버로딩은 한 클래스 내에서 이미 같은 이름을 가진 메소드를 가공하는 것이다. 조건은 이름은 같게 하고, 접근 제어자 or 반환 타입 or 매개 변수의 개수나 타입을 다르게 해야 한다. 접근제어자만 다르게 하는 것으로 오버로딩 할 수는 없다. 리턴값만 다른 것으로 오버로딩 할 수는 없다. 오버로딩의 장점은 다음과 같다. 메소드의 이름을 절약할 수 있다. (오버로딩한 메소드들의 이름은 같아야 하기 때문에) 하나의 메소드로 여러 상황에서 같은 기능을 하게끔 만들 수 있다. (같은 기능을 하되, 상황에 따라 결과는 다름) 오버라이딩은 부모 클래스로부터 상속받은 자식 클래스에서 메소드를 가공(재정의)하는 것이다. 조건은 이름, .. 2022. 9. 2.
2022.09.01. ▶ 학습 전(계획) 학습 목표는 무엇인가? 배열 계산기 만들기 이미 알고 있는 내용은 무엇인가? 배열에 대해 배워보긴 했지만, 익숙치 않다. 이번에 학습하면서, 능숙하게 사용할 수 있도록 자세히 봐야겠다. ▶ 학습 후(점검 및 평가) 새롭게 배운 내용은 무엇인가? 배열을 이용한 연습문제 풀이에서, str.split() System.arraycopy() str.replaceAll() 피보나치 이렇게 새롭게 배운 내용들이다. 다른 사람에게 설명할 수 있는가? str.split()과 System.arraycopy()에 관해서는 어느 정도 익숙해져 있기 때문에 설명이 가능하다. 아직 이해되지 않은 내용은 무엇인가? str.replaceAll()의 사용법과 피보나치 로직은 아직 완전히 익히지 못한 것 같다. 이해.. 2022. 9. 1.
Scanner 사용 시, next()와 nextLine()의 차이 next()와 nextLine() 모두 String 타입의 문자열을 입력받을 때, 사용한다. Scanner sc = new Scanner(System.in); String str1 = sc.next(); String str2 = sc.nextLine(); 다음과 같이 사용하는데, 둘의 차이점은 next()를 사용할 경우, 문자열을 입력하고 스페이스바를 치기 전까지의 문자열을 입력을 받고, nextLine()의 경우는, 문자열을 입력하고 엔터를 치기 전까지의 문자열을 모두 받는다. 다음 코드를 통해 next()와 nextLine()의 출력 결과를 확인해보자. 입력 방식의 차이는 직접 쳐봐야 알기 때문에, 코드를 직접 입력해서 진행해보시길 바랍니다. import java.util.Scanner; public.. 2022. 8. 31.
2022.08.31. ▶ 학습 전(계획) 학습 목표는 무엇인가? 제어문 조건문 반복문 이미 알고 있는 내용은 무엇인가? 조건문과 반복문에 대해 간단한 사용법 정도는 알고 있는 것 같다. 복습하는 차원에서, 이번 학습을 이어 나아가야 되겠다. ▶ 학습 후(점검 및 평가) 새롭게 배운 내용은 무엇인가? 새롭게 배운 내용은 없었고, 알고리즘 관련 풀이에 대해 조금은 알게 되었던 것 같다. 다른 사람에게 설명할 수 있는가? 조건문과 반복문을 어떻게 사용하고, 어느 상황에서 사용하면 좋을지 설명할 수 있을 것 같다. 아직 이해되지 않은 내용은 무엇인가? 아직 이해되지 않기보단, 소수 관련 알고리즘 풀이에 대해 다시 한 번 봐야할 것 같다. 오후 줌 세션 때, 크루분이 풀어주시는 거 보고, 되게 새롭게 다가왔다. 알고리즘 관련 풀이를 .. 2022. 8. 31.
2022.08.30. ▶ 학습 전(계획) 학습 목표는 무엇인가? JAVA 기초 변수와 타입 문자열 연산자 콘솔 입출력 이미 알고 있는 내용은 무엇인가? 한 번씩은 훑어본 내용들이다. 하지만, 다시 기본부터 공부한다는 생각으로 임해야겠다. ▶ 학습 후(점검 및 평가) 새롭게 배운 내용은 무엇인가? 자바에서의 여러 변수와 타입, 선언과 할당 방법에 대해 다시 한 번 복기하는 과정이었다. String 클래스 참조와 StringTokenizer / StringBuilder / StringBuffer에 대해 새로이 알게 되었다. 연산자의 우선 순위에 대해 알게 되었다. 다른 사람에게 설명할 수 있는가? Sting 클래스를 참조하는 메서드들을 모두 자세히 알진 못하기 때문에, 이 부분은 설명하기 어려울 것 같다. 다른 부분은 설명이 가.. 2022. 8. 31.
StringBuilder vs StringBuffer StringBuilder와 StringBuffer는 String 클래스와는 다르게 가변성을 가지고 있습니다. 이 둘의 차이점은 바로 동기화의 유무입니다. 먼저, StringBuffer는 동기화(Synchronization)를 지원하기 때문에, Multi-Thread 환경에서 안전하게 동작할 수 있습니다. StringBuilder는 Single-Thread 환경에서만큼은 StringBuffer보다 뛰어나다고 할 수 있지만, Multi-Thread에서만큼은 그렇지 못합니다. Java의 동기화(Synchronized) 키워드는 여러 개의 Thread가 한 개의 자원에 접근하려고 할 때, 현재 데이터를 사용하고 있는 Thread를 제외하고 나머지 Thread들이 데이터에 접근할 수 없도록 막는 역할을 수행합니다. 2022. 8. 30.
Java : String <-> int String to int String from = "123"; int to = Integer.parseInt(from); int to String int from = 123; String to = Integer.toString(from); 2022. 8. 30.