JAVA 10

자료 구조 (List, Set, Map)의 정리와 쓰임새

Java에서는 데이터를 보다 효율적으로 데이터를 추가, 삭제, 검색할 수 있도록 인터페이스와 구현 클래스를 java.util 패키지로 제공하고 있습니다. 이것들을 컬렉션 프레임워크라고 하며, 그중에서도 중요한 인터페이스로는 List, Set, Map이 있습니다. ListList는 배열과 마찬가지로 객체를 인덱싱 합니다. 배열과 다른 점은 크기의 용량이 자동으로 늘어나거나 삭제되는 부분입니다. 그리고, 오브젝트를 각 인덱스에 보존할 때는, 직접 보존하는 것이 아니라, 보존하는 오브젝트가 저장되어 있는 주소의 번지를 보존합니다. 따라서 null도 저장하고 중복되는 데이터를 허용하고 저장할 수 있습니다. 다음은 List 인터페이스를 구현하는 클래스입니다.・ArrayList : 순서가 지정된 목록에 사용되는 데..

JAVA 2024.05.07

String.valueOf() 와 Integer.toString() 의 차이

String.valueOf() 메소드와 Integer.toString() 메소드는 모두 정수 값을 문자열로 변환하는 데 사용되지만, 작동 방식과 사용 목적에 약간의 차이가 있습니다. String.valueOf()String.valueOf() 메소드는 java.lang.String 클래스의 정적 메소드입니다. 이 메소드는 입력으로 받은 매개변수(정수, 실수, 객체 등 다양한 타입)의 문자열 표현을 반환합니다.int, long, float, double, char, boolean 및 참조 타입 등 거의 모든 타입을 처리할 수 있으멀로 범용적으로 사용될 수 있습니다. 특히, 참조 타입의 경우 null일 때 "null" 문자열을 반환하는 안전한 방식으로 작동합니다.예: String.valueOf(123)은 "1..

JAVA 2024.05.01

String, StringBuffer, StringBuilder의 차이점

String장점・불변성(Immutability): 한 번 생성된 String 객체의 값은 변경할 수 없어 보안적으로 안전하고, 생성된 문자열이 공유되거나 재사용될 수 있습니다.・쓰레드 안전(Thread Safe): 불변성으로 인해 여러 쓰레드에서 동시에 사용해도 문제가 발생하지 않습니다.단점・성능: 문자열을 변경할 때마다 새로운 String 객체가 생성되어, 연산이 많을 경우 성능 저하를 일으킬 수 있습니다. StringBuffer장점・가변성(Mutability): StringBuffer는 가변적이어서 문자열을 변경하거나 추가할 때 기존 객체를 재사용할 수 있어 메모리를 효율적으로 사용합니다.・쓰레드 안전: StringBuffer의 모든 메소드는 동기화되어 있어, 멀티쓰레드 환경에서 안전하게 사용할 수 ..

JAVA 2024.04.24

Stream

Stream이란 Java8부터 지원하는 Stream은 다양한 데이터 소스(컬렉션, 배열 등)의 요소들을 하나씩 참조하며 반복적인 처리를 가능케 하여 표준화된 방법으로 다룰 수 있게 해준다. 이러한 Stream을 이용한다면 불필요한 for문과 그 안에서 이루어지는 if문등의 분기 처리를 쓰지 않고도 깔끔하고 직관적인 코드로 변형할 수 있다. Stream의 특징 Stream은 원본데이터로부터 데이터를 읽기만 할 뿐, 원본 데이터 자체를 변경하지 않는다. Stream은 일회용이며 한 번 사용하면 닫혀서 재사용이 불가능하다. 필요하다면 정렬된 결과를 컬렉션이나 배열에 담아 반환할 수 있다. Stream은 최종 연산 전까지 중간연산이 수행되지 않는 지연된 연산을 수행한다. Stream은 작업을 내부 반복으로 처리..

JAVA 2022.07.25

람다식(Lambda Expression)

람다식이란 람다식(Lambda Expression)이란 함수를 하나의 식(expression)으로 간단하게 표현한 것이다. 함수를 람다식으로 표현하면 메소드의 이름이 생략 가능하기 때문에 람다식은 익명 함수(Anonymous Function)의 한 종류라고 볼 수 있다. 람다식의 특징 람다식 내에서 사용되는 지역변수는 final이 붙지 않아도 상수로 간주된다. 람다식으로 선언된 변수명은 다른 변수명과 중복될 수 없다. 람다식의 장단점 장점 코드를 간결하게 만들 수 있다. 식에 개발자의 의도가 명확히 드러나 가독성이 높아진다. 함수를 만드는 과정없이 한 번에 처리할 수 있어 생산성이 높아진다. 병렬 프로그래밍이 용이하다. 단점 람다를 사용하면서 만든 익명 함수는 재사용이 불가능하다. 디버깅이 어렵다. 람다..

JAVA 2022.07.17

enum

enum이란 enum이란 enumerated type 즉 열거 타입을 의미한다. 프로그래밍을 짜다 보면 데이터 중에 몇 가지 한정된 값을 갖는 경우가 흔히 있다. 예를 들어 계절, 요일 등이 있으며, 계절에는 봄, 여름, 가을, 겨울 그리고 요일에는 월, 화, 수, 목, 금, 토, 일 이라는 한정된 값을 가지게 된다. 이러한 한정된 상수를 정의할 시 final static과 같은 방식으로 정의를 많이 하였지만 이러한 방법으로 상수를 정의해서 프로그램을 짜게 되면 다양한 문제점이 발생된다. public class Season { public static final int SPRING = 0; public static final int SUMMER = 1; public static final int AUTU..

JAVA 2022.01.16

JAVA 실행과정 & JVM

JAVA 실행 과정 JAVA 언어로 프로그래밍된 파일을 JAVA컴파일러가 가상 기계어 파일인 JAVA클래스 파일로 만들어 이를 JVM이 실행을 하게 된다. 다시 말해 사용자가 작성한 .java파일이 JAVA컴파일러를 거쳐서 중간 코드인 .class(Java Byte Code)로 변환되며 이를 JVM이 실행하게 된다. ○ 컴파일러 프로그래밍 언어로 작성된 파일을 컴퓨터가 바로 이해할 수 있도록 번역(컴파일)을 하는 프로그램이다. JAVA 프로그래밍 언어를 컴파일할 시에는 javac라는 컴파일러를 통하여 .java파일을 .class파일로 컴파일을 수행하게 된다. ○ .class(Java Byte Code) JVM이 이해할 수 있는 언어로 변환된 자바 소스 코드를 의미한다. Java Byte Code는 JVM..

JAVA 2022.01.09

예외 처리

예외 처리 일반 예외의 경우는 소스 파일을 컴파일할 때 컴파일 에러를 발생시켜 개발자가 강제적으로 예외 처리 코드를 작성하도록 요구한다. 하지만 실행 예외의 경우는 컴파일러가 체크해주지 않기 때문에 개발자의 경험을 바탕으로 예외 처리 코드를 작성해야 한다. 예외 처리 코드 ○try-catch-finally 블록 생성자 내부와 메소드 내부에서 작성되어 일반 예외와 실행 예외가 발생할 경우 예외 처리를 할 수 있도록 해준다. try { //1.예외 발생가능 코드 } catch(예외클래스 e) { //2.예외 처리 } finally { //3.항상 실행 } try-catch-finally 블록은 상기와 같이 작성한다. try구문에서는 예외 발생 가능성이 있는 코드를 작성하며 catch 구문에서는 예외가 발생했..

JAVA 2022.01.05

예외

예외(Exception) 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 에러와 오류는 하기의 표와 같은 차이점과 공통점이 있다. 에러(Error) 예외(Exception) 차이점 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것 프로그램 자체에서 오류가 발생하는 것 공통점 에러(Error)나 예외(Exception)가 발생하면 곧바로 프로그램이 종료됨 에러나 예외가 발생할 시 곧바로 프로그램이 종료되지만 예외 같은 경우는 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 또한 무슨 시스템이든 에러가 발생을 하여 불능이 되어 버리면 곤란한 상황을 야기하며 수많은 유저가 사용하는 시스템일 경우 불능이 되는 ..

JAVA 2022.01.01

final & static

final final은 사전적으로 마지막을 뜻하므로 더 이상의 변형은 없다는 의미로 말할 수 있다. 이러한 final은 클래스, 메서드, 변수 등 모든 요소의 앞의 제한자로 사용되며 주로 보안적인 의도에 의하여 변형을 막을 시 final을 이용하여 선언하게 된다. ○ final 변수 : 변수를 상수화 시키는 것을 말하며, 값을 저장하고 다음에 다시 바꾸지 않을 때 사용한다. final int num = 10; num = 5 //error발생 ○final 메소드 : 메소드를 final로 선언할 시 메소드가 속해있는 클래스는 상속이 가능하지만 해당 메소드의 오버라이딩이 불가능해 진다. class Parent { public final void example() { ... } } public class Chi..

JAVA 2021.12.31