Java 24

[Java] nextInt() 사용 후 nextLine() 사용 시 주의할 점

아래와 같이 코드를 작성했고,Scanner sc = new Scanner(System.in);int n = sc.nextInt();int k = sc.nextInt();int count = 0;HashMap studying = new HashMap();HashMap studyTime = new HashMap();for(int i = 0; i 아래의 입력값들을 입력하려 했다. 그런데 8 12를 입력하고, jack를 입력하기도 전에 for문의 s에 값이 공백으로 들어가고 ArrayIndexOutOfBoundsException이 발생하는 것을 확인할 수 있었다.(코드 생략된 부분에서)  Scanner.nextInt()은 사용자 입력의 가장 마지막 개행문자(enter)를 제거하지 않고 개행문자 전까지만 숫자로 ..

Java 2024.09.01

[Java] 13. Collection (3) Stack & Queue

Stack: List 계열 클래스인 Vector 클래스를 상속받아 구현된 자료구조- LIFO(Last In First Out) 구조로 되어 있다. 1. Stack 선언하기/* Stack 인스턴스 생성 */Stack integerStack = new Stack(); 2. 값 삽입하기// push()integerStack.push(1);integerStack.push(2);integerStack.push(3);integerStack.push(4);integerStack.push(5);// Vector 클래스를 상속받았기 때문에 add()도 사용 가능하지만 push()를 사용하는 것이 좋다.System.out.println(integerStack); // [1, 2, 3, 4, 5] 3. 요소 찾기// se..

Java 2024.08.23

[Java] 13. Collection (2) List - LinkedList

LinkedList1. LinkedList의 특징- 연속된 공간에 저장되는 것이 아니므로 각 데이터를 Link을 연결하여 구성한다.- 데이터의 삽입, 삭제가 빈번할 경우 연결되는 링크 정보만 수정하면 되기 때문에 ArrayList보다 더 적합하다.- 스택, 큐, 양방향 큐 등을 구성하기 용이하다. 2. LinkedList의 종류(1) 단일 연결 리스트: 저장한 요소가 순서를 유지하지 않고 저장되지만 요소들 사이를 link로 연결하여 마치 연결된 리스트 형태처럼 만든 자료구조(2) 이중 연결 리스트: 단일 연결 리스트는 다음 요소만 연결하지만, 이중 연결 리스트는 이전 요소도 링크하여 이전 요소로 접근하기 쉬운 자료구조 3. LinkedList의 활용(1) LinkedList 선언하기/* LinkedLis..

Java 2024.08.22

[Java] 13. Collection (1) List - ArrayList

List1. List 인터페이스: 순서가 있는 데이터의 집합으로, 같은 데이터의 중복 저장을 허용한다.- ArrayList, LinkedList, Vector, StackArrayList- 크기 변경이 불가능한 배열의 단점을 보완. 기본 배열보다 느릴 수는 있지만 동적 배열이 구현돼 있다.- ArrayList 인스턴스를 생성하게 되면 내부적으로 10칸짜리 배열을 생성해서 관리한다.- 크기 변경, 요소 추가/삭제/정렬 기능들을 메소드로 제공한다.- ArrayList는 스레드 간 동기화가 지원되지 않기 때문에, 다수의 스레드가 동시에 접근하여 데이터를 조작하게 될 경우 데이터 훼손이 일어날 수 있다.- cf. 모든 컬렉션 프레임워크는 제네릭 클래스로 작성 되어 있다. List stringList = new ..

Java 2024.08.22

[Java] 13. Collection

Collection: 많은 데이터들을 효과적으로 처리할 수 있는 방법을 제공하는 클래스들의 집합 1. Collection을 사용하는 이유(1) 일관된 API- Collection에서 제공하는 규격화된 메소드를 사용함으로써 일관된 사용과 유지보수 가능(2) 프로그래밍 비용 감소- 이미 제공된 자료구조를 활용하기 때문에, low-level의 알고리즘을 고민할 시간과 노력을 아낄 수 있다.(3) 프로그래밍 속도 및 품질 향상 2. Collection 주요 인터페이스- Collection 인터페이스는 List, Set, Queue로 크게 3가지 상위 인터페이스로 분류된다.- 이 세가지는 Collection 인터페이스를 상속 받지만, 구조 상의 이유로 Map은 따로 구현되어 있다.인터페이스설명구현 클래스List순..

Java 2024.08.22

[Java] 12. 제네릭 프로그래밍

: 데이터 형식에 의존없이 여러 다른 데이터 타입을 가질 수 있는 기술로 재사용성을 높일 수 있다.- 하나의 클래스만 작성해도 여러 타입의 필드 값을 가진 클래스로 변형해서 다룰 수 있는 구현의 편리함이 있다.- 컴파일 시 미리 타입 검사를 하여 객체의 타입 안정성을 높이고, 반환 값에 대한 타입 변환 및 타입 검사에 들어가는 코드도 생략할 수 있다.public class GenericTest { private T value; public T getValue() { return value; } public void setValue(T value) { this.value = value; }}public class Application { public static void main(String[..

Java 2024.08.21

[Java] 11. 입출력

입출력의 정의 및 사용 이유1. 입출력(IO) 이란?: 컴퓨터 내부 또는 외부 장치와 프로그램 간의 데이터 연동을 위한 자바 라이브러리- 단방향 데이터 송수신을 위해 스트림을 활용하여 데이터를 서로 주고 받는다. 2. 스트림이란?: 입출력 장치에서 데이터를 읽고 쓰기 위한 단방향 통로로, 자바에서 제공하는 클래스- 각각의 장치마다 연결할 수 있는 스트림이 존재하며, 바이트 단위 처리와 문자 단위 처리를 위한 스트림 등이 존재한다.- 스트림은 기본적으로 1바이트 단위의 데이터만 지나가게 되는데, 주고 받는 데이터의 기본 단위가 1바이트이므로 단방향 처리만 가능하다. 따라서 입력 스트림과 출력 스트림을 따로 구성해야 한다.- 영어, 숫자, 특수기호들은 한 글자가 1바이트이지만, 한글과 같은 언어들은 한 글자..

Java 2024.08.21

[Java] 10. 예외처리 (1)

: 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성하는 것1. 오류와 예외(1) 오류: 시스템 상에서 프로그램에 심각한 문제가 발생하여 실행중인 프로그램이 종료되는 것- 개발자가 미리 예측하거나 코드로 처리하는 것이 불가능한 경우를 말한다.- ex) JVM 에러, 메모리 초과, 정전 등 (2) 예외: 개발자가 미리 예측하고 처리할 수 있는 미약한 오류- 개발자가 적절히 처리하여 코드의 흐름은 컨트롤(비정상적인 종료 or not) 할 수 있다.  2. 예외 클래스의 종류(1) 예외 클래스의 계층 구조  3. Checked Exception과 Unchecked Exception- Checked Exception은 컴파일 예외클래스, Unchecked Exception은 런타임..

Java 2024.08.21

[Java] 배열의 값을 출력하기(반복문, Arrays.toString())

public class PrintArray { public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5}; System.out.println(array); }} 배열 array을 출력하는 코드를 위와 같이 작성했다.하지만 출력해보면 결과는 아래와 같다. 이 결과값은 배열 array의 메모리 주소값이다.즉, 배열 변수를 출력하게 되면 메모리 주소값이 출력되므로 배열에 있는 원소들을 출력하기 위해서는 반복문을 이용하거나,java.util.Arrays 패키지의 toString() 메소드를 사용해주어야 한다.  방법 1. 반복문 이용하기public class PrintArray { public stati..

Java 2024.08.11

Java(9) 자주 쓰는 API - Object 클래스, String 클래스, 이스케이프 문자

1. Object 클래스- 자바에서의 최상위 부모 클래스로, 모든 클래스는 Object 클래스를 상속하고 있으므로 Object 안에 있는 메소드 사용 가능- java.lang.Object(1) toString(): "인스턴스 생성 시 사용한 full class name + "@" + 16진수 해시코드" 가 문자열로 반환- 16진수 해시코드는 인스턴스의 주소를 가리키는 값으로 인스턴스마다 다른 값 반환 (2) equals(): 매개변수로 전달받은 인스턴스와 동일 객체인지 비교- 동일 객체 : 주소가 동일한 인스턴스- 동등 객체 : 주소가 다르더라도 필드 값이 동일한 인스턴스 (3) hashCode(): 객체의 메모리 주소값을 이용해 해시코드(객체를 식별하는 값)를 만들어 반환- equals() 메소드를 재..

Java 2024.08.08