Programming/Java
-
프로그램의 오류 프로그램의 실행 중 오작동 또는 비정상적 종료를 야기하는 원인을 프로그램 에러 또는 오류라고 한다. 이는 발생 시점에 따라 컴파일 에러와 런타임 에러로 나눌 수 있다. 컴파일 에러: 컴파일 시 발생하는 에러 런타임 에러: 실행 시 발생하는 에러 코드의 오타나 잘못된 구문 등 기본적인 검사를 컴파일 시 수행하여 오류가 있으면 컴파일이 실행되지 않는데, 이것이 컴파일 에러다. 물론 컴파일을 성공적으로 마쳐도 프로그램이 실행되는 도중 발생할 수 있는 오류가 있고 이것을 런타임 에러라 하며, 크게 Error와 Exception 두 가지로 분류할 수 있다. 에러(Error): 프로그램 코드에 의해 수습될 수 없는 심각한 오류 예외(Exception): 프로그램 코드에 의해 수습될 수 있는 다소 미..
Java의 예외 - Checked 예외와 Unchecked 예외프로그램의 오류 프로그램의 실행 중 오작동 또는 비정상적 종료를 야기하는 원인을 프로그램 에러 또는 오류라고 한다. 이는 발생 시점에 따라 컴파일 에러와 런타임 에러로 나눌 수 있다. 컴파일 에러: 컴파일 시 발생하는 에러 런타임 에러: 실행 시 발생하는 에러 코드의 오타나 잘못된 구문 등 기본적인 검사를 컴파일 시 수행하여 오류가 있으면 컴파일이 실행되지 않는데, 이것이 컴파일 에러다. 물론 컴파일을 성공적으로 마쳐도 프로그램이 실행되는 도중 발생할 수 있는 오류가 있고 이것을 런타임 에러라 하며, 크게 Error와 Exception 두 가지로 분류할 수 있다. 에러(Error): 프로그램 코드에 의해 수습될 수 없는 심각한 오류 예외(Exception): 프로그램 코드에 의해 수습될 수 있는 다소 미..
2024.01.14 -
Java에서 HashMap을 초기화하는 방법은 여러 가지가 있다. 가장 일반적인 방법은 생성자를 사용하여 초기화하는 건데, Java 9 이상부터는 간단한 초기화를 위해 `Map.of()`를 사용할 수 있다. `map.put()` HashMap 객체를 생성하고 `put()`메서드를 사용하는 방법으로, 흔하게 사용된다. Map map = new HashMap(); map.put("apple", 10); map.put("banana", 20); map.put("orange", 30); //map: {apple=10, banana=20, orange=30} `Map.of()` Java 9부터 `Map.of()` 메서드를 사용하여 Map을 생성할 수 있다. 하지만 이렇게 생성된 Map은 값을 변경할 수 없으며(I..
[Java] HashMap을 초기화하는 방법: map.put(), Map.of(), Map.ofEntries()Java에서 HashMap을 초기화하는 방법은 여러 가지가 있다. 가장 일반적인 방법은 생성자를 사용하여 초기화하는 건데, Java 9 이상부터는 간단한 초기화를 위해 `Map.of()`를 사용할 수 있다. `map.put()` HashMap 객체를 생성하고 `put()`메서드를 사용하는 방법으로, 흔하게 사용된다. Map map = new HashMap(); map.put("apple", 10); map.put("banana", 20); map.put("orange", 30); //map: {apple=10, banana=20, orange=30} `Map.of()` Java 9부터 `Map.of()` 메서드를 사용하여 Map을 생성할 수 있다. 하지만 이렇게 생성된 Map은 값을 변경할 수 없으며(I..
2023.11.30 -
String에 대해서 String은 Java에서 제공하는 문자열을 위한 클래스로, 문자열을 저장하고 다루는데 필요한 메서드를 제공한다. 문자열을 만드는 방법은 두가지로, 문자열 리터럴을 지정하는 것과 생성자를 이용하는 것이 있다. String str1 = "hello"; String str2 = "hello"; String str3 = new String("hello"); String str4 = new String("hello"); str1과 str2는 문자열 리터럴 "hello"의 주소를 저장하지만, str3과 str4는 각각 새로운 String 인스턴스를 생성한다. 따라서 이 경우 문자열을 비교해보면 다음과 같은 결과가 나온다. str1 == str2 // true str1.equals(str2) ..
[Java] String 클래스의 메서드String에 대해서 String은 Java에서 제공하는 문자열을 위한 클래스로, 문자열을 저장하고 다루는데 필요한 메서드를 제공한다. 문자열을 만드는 방법은 두가지로, 문자열 리터럴을 지정하는 것과 생성자를 이용하는 것이 있다. String str1 = "hello"; String str2 = "hello"; String str3 = new String("hello"); String str4 = new String("hello"); str1과 str2는 문자열 리터럴 "hello"의 주소를 저장하지만, str3과 str4는 각각 새로운 String 인스턴스를 생성한다. 따라서 이 경우 문자열을 비교해보면 다음과 같은 결과가 나온다. str1 == str2 // true str1.equals(str2) ..
2023.05.29 -
Thread의 스케줄링 스레드의 스케줄링 관련 메서드로는 sleep(), join(), interrupt(), yield(), stop(), suspend(), resume()이 있는데, 이 중 stop(), suspend(), resume()은 스레드를 교착상태(dead-lock)로 만들기 쉽기 때문에 deprecated 되어 사용하지 않는다. Multithreading 프로세스에서 여러 스레드가 같은 프로세스 내의 자원을 공유하며 생기는 문제점을 방지하기 위해 한 스레드가 진행 중인 작업을 다른 스레드가 간섭하지 못하게 막고, 이를 스레드의 동기화(synchronization)라 한다. 하지만 두 개 이상의 스레드가 동시에 같은 데이터에 접근하고 데이터를 변경하면 원하는 결과를 얻지 못하는 경우가 발..
[Java] Thread의 실행 제어 - interrupt()Thread의 스케줄링 스레드의 스케줄링 관련 메서드로는 sleep(), join(), interrupt(), yield(), stop(), suspend(), resume()이 있는데, 이 중 stop(), suspend(), resume()은 스레드를 교착상태(dead-lock)로 만들기 쉽기 때문에 deprecated 되어 사용하지 않는다. Multithreading 프로세스에서 여러 스레드가 같은 프로세스 내의 자원을 공유하며 생기는 문제점을 방지하기 위해 한 스레드가 진행 중인 작업을 다른 스레드가 간섭하지 못하게 막고, 이를 스레드의 동기화(synchronization)라 한다. 하지만 두 개 이상의 스레드가 동시에 같은 데이터에 접근하고 데이터를 변경하면 원하는 결과를 얻지 못하는 경우가 발..
2023.05.14 -
배열의 출력 - Arrays.toString() 변수의 타입 중 기본형 8개는 실제 값을 저장하고, 참조형은 메모리 주소를 저장한다. 배열은 객체이며, 따라서 배열을 대입한 변수에는 메모리 주소가 저장된다. int[] arr = {1, 2, 3, 4, 5}; System.out.print(arr); // 배열의 요소가 아닌 주소값이 출력됨 이처럼 배열의 변수를 print() 메서드로 출력하면 배열의 요소가 아닌 주소값이 나온다. (예외적으로 char 타입은 요소가 출력됨) 배열의 요소를 콘솔에서 확인하려면 다음과 같은 방법을 사용한다. import java.util.Arrays; public class Test { public static void main(String[] args) { int[] arr..
[Java] 배열의 출력, 비교, 복사와 정렬배열의 출력 - Arrays.toString() 변수의 타입 중 기본형 8개는 실제 값을 저장하고, 참조형은 메모리 주소를 저장한다. 배열은 객체이며, 따라서 배열을 대입한 변수에는 메모리 주소가 저장된다. int[] arr = {1, 2, 3, 4, 5}; System.out.print(arr); // 배열의 요소가 아닌 주소값이 출력됨 이처럼 배열의 변수를 print() 메서드로 출력하면 배열의 요소가 아닌 주소값이 나온다. (예외적으로 char 타입은 요소가 출력됨) 배열의 요소를 콘솔에서 확인하려면 다음과 같은 방법을 사용한다. import java.util.Arrays; public class Test { public static void main(String[] args) { int[] arr..
2023.04.24 -
개요 자바에서 `==`(등가비교 연산자)와 `equals()`는 두 객체의 값이 같은지 비교할 때 사용하며 비교 결과를 boolean 타입으로 반환한다. 둘은 비슷해 보이지만 반대의 결과가 나오기도 하기 때문에 어떤 차이가 있는지 알아보고자 한다. 등가비교 연산자 `==` 두 피연산자의 값이 같은지를 비교하는 연산자로, 모든 자료형(기본형과 참조형)에 사용 가능하다. 기본형의 경우 변수에 저장되어 있는 값이 같은지 알 수 있고, 참조형의 경우 객체의 주소값이 같은지를 알 수 있다. 다시 말해 `==` 연산자는 비교 대상의 주소값을 비교한다. int val1 = 3; int val2 = 3; int val3 = 5; String str1 = "hello"; String str2 = new String("h..
Java에서 객체 값 비교하기: == vs equals()개요 자바에서 `==`(등가비교 연산자)와 `equals()`는 두 객체의 값이 같은지 비교할 때 사용하며 비교 결과를 boolean 타입으로 반환한다. 둘은 비슷해 보이지만 반대의 결과가 나오기도 하기 때문에 어떤 차이가 있는지 알아보고자 한다. 등가비교 연산자 `==` 두 피연산자의 값이 같은지를 비교하는 연산자로, 모든 자료형(기본형과 참조형)에 사용 가능하다. 기본형의 경우 변수에 저장되어 있는 값이 같은지 알 수 있고, 참조형의 경우 객체의 주소값이 같은지를 알 수 있다. 다시 말해 `==` 연산자는 비교 대상의 주소값을 비교한다. int val1 = 3; int val2 = 3; int val3 = 5; String str1 = "hello"; String str2 = new String("h..
2023.04.15 -
break문 switch문을 작성할 때 사용하며 break를 만나면 전체 switch문을 탈출함 자신이 포함된 가장 가까운 하나의 반복문을 벗어남 중첩 반복문에서 하나 이상의 반복문을 벗어나려면, 반복문에 이름을 붙이고 break문에 이름을 지정하여 반복문을 탈출할 수 있음 주로 if문과 함께 사용되어 특정 조건을 만족할 때 반복문을 벗어나게 함 continue문 반복문 내에서만 사용 가능 반복이 진행되는 도중 continue를 만나면 이후 코드는 실행되지 않고 다음 반복으로 넘어감 중첩 반복문에서 하나 이상의 반복문을 건너뛰려면, 반복문에 이름을 붙이고 continue문에 이름을 지정하여 반복을 건너뛸 수 있음 전체 반복 중 특정 조건을 만족하는 경우를 제외하고자 할 때 유용 Loop1 : for (i..
[Java] break, continue, return의 특징과 차이break문 switch문을 작성할 때 사용하며 break를 만나면 전체 switch문을 탈출함 자신이 포함된 가장 가까운 하나의 반복문을 벗어남 중첩 반복문에서 하나 이상의 반복문을 벗어나려면, 반복문에 이름을 붙이고 break문에 이름을 지정하여 반복문을 탈출할 수 있음 주로 if문과 함께 사용되어 특정 조건을 만족할 때 반복문을 벗어나게 함 continue문 반복문 내에서만 사용 가능 반복이 진행되는 도중 continue를 만나면 이후 코드는 실행되지 않고 다음 반복으로 넘어감 중첩 반복문에서 하나 이상의 반복문을 건너뛰려면, 반복문에 이름을 붙이고 continue문에 이름을 지정하여 반복을 건너뛸 수 있음 전체 반복 중 특정 조건을 만족하는 경우를 제외하고자 할 때 유용 Loop1 : for (i..
2023.04.15