1. 래퍼클래스란?래퍼클래스는 기본 자료형을 컬렉션 프레임워크 등에 사용할 수 있도록 객체로 만들어주는 클래스입니다. 따라서 자료형의 개수만큼의 클래스가 있습니다. 래퍼클래스는 기본자료형만으로는 할 수 없는 다양한 메서드 기능을 지원합니다. 그리고 기본 자료형은 null이 불가능하지만 래퍼클래스는 null이 가능합니다. 다만 단순연산에는 오히려 메모리 증가만 발생할 수 있기 때문에 좋지않습니다. 2. 코드 예제아래 코드를 통해 래퍼클래스를 확인해보겠습니다. import java.util.Scanner;import java.util.*;public class Solution { public static void main(String[] args) { // int 타입 int ..
1. 컬렉션(Collection)이란?자바에서 컬렉션(Collection) 은 자료구조를 객체화해서 데이터를 효율적으로 저장, 검색, 관리할 수 있게 해주는 프레임워크입니다.데이터를 배열처럼 모아두고 조작할 수 있지만 배열과 달리 동적으로 변경하는 것도 가능합니다.다만 컬렉션은 기본자료형에서는 사용이 불가능하고 객체로 만들어서 사용해야합니다. 2. 장단점1) 장점컬렉션은 동적으로 변경하는 것이 가능하기 때문에 배열보다 유연하게 사용가능합니다. 또한 컬렉션의 종류에는 List, Set, Map, Queue등 다양한 자료구조가 있으며 add, remove,contains, sort 등 API도 많기 때문에 여러가지 상황에 맞춰서 사용이 가능합니다. 또한 제네릭과 함께 사용하기 때문에 타입 안정성도 있습니다...
1. 공통점StringBuilder 클래스와 StringBuffer 클래스는 모두 가변 문자열 클래스입니다.가변 구조이기 때문에 내부적으로 버퍼를 사용하여 문자열을 저장합니다. 즉, 새로운 문자열을 만들지않고 버퍼안에서 값을 수정하는 것입니다. 따라서 문자열을 합치거나 수정할때 불변 문자열처럼 새로운 객체를 생성하지않기 때문에 메모리 효율적입니다. 이러한 점 때문에 문자열을 자주 변경할 경우에 많이 사용합니다. 그리고 두개의 클래스는 거의 대부분의 메서드가 동일합니다. 주 사용 메서드는 아래와 같습니다.append(String str) : 주어진 문자열(str)을 현재 StringBuilder 객체의 끝에 추가합니다.insert(int offset, String str) : 주어진 문자열(str)을 지..
좋은 객체지향 설계를 위해 사용되는 다섯 가지 원칙을 SOLID라고 합니다. SOLID는 각 원칙의 첫 글자를 따서 만들어진 약어입니다. 이 원칙들은 소프트웨어의 유지보수성, 재사용성, 확장성을 향상시키는 데 도움이 되는 지침을 제공합니다.1. 단일 책임 원칙 (Single Responsibility Principle - SRP)하나의 클래스는 하나의 책임만 가져야 합니다. 즉, 클래스는 변경의 이유가 하나여야 합니다. 이는 클래스가 특정한 기능이나 역할에 집중되도록 하여 코드의 응집성을 높이고, 변경 사항이 발생할 때 해당 클래스만 수정하면 되도록 합니다. 즉 변경사항이 발생할 때 파급효과가 적다면 단일책임원칙을 잘 따른것으로 볼 수 있습니다. 아래는 예시코드입니다. SRP 위반 예시) class R..
자바에서 Scanner 클래스는 입력 받을 직접 입력을 받기 위한 클래스입니다.이 클래스는 데이터를 직접 입력받아 테스트를 하고자할 때 사용할 수 있습니다.1. 문자열 타입import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str1 = sc.next(); // next는 스페이스를 비롯한 공백 단위로 끊어서 문자열을 받음 String str2 = sc.next(); System.out.println("str1: " + str1); System.out.print..
자바에서 메소드(Method)는 클래스 내에서 특정 작업을 수행하는 코드 블록입니다. 메소드는 객체지향 프로그래밍에서 기능을 캡슐화하고 코드의 재사용성을 높이는 중요한 요소입니다. 1. 자바 메소드의 구조메소드는 일련의 문장들로 이루어진 코드 블록입니다. 메소드는 다음과 같은 구조를 가지고 있습니다.[접근 제어자] [기타 제어자] 반환타입 메소드이름([매개변수 목록]) { // 메소드의 실행 코드 return 반환값; // 반환타입이 void가 아닌 경우}1. 접근 제어자: 메소드에 접근할 수 있는 범위를 지정합니다. 일반적으로 public, private, protected, default 중 하나를 사용합니다.2. 기타 제어자: 메소드의 특성을 추가적으로 제어하기 위한 키워드입니다. 예를 ..
제어문에는 조건문, 반복문 등이 있습니다.1.조건문1) if-else문if-else문은 조건의 참과 거짓을 판단하여 실행문을 실행할지 말지를 결정하는 제어문입니다.boolean result = true;int a = 10, b = 20;int c = 15;// if : 괄호 안의 값이 true면 다음 명령 실행// 조건문 다음에 실행해야할 문장이 하나라면 {}를 사용하지 않아도 됨if (result) System.out.println("참"); //출력: 참if (!result) System.out.println("거짓");// 실행할 명령이 한 줄 이상일 경우 블록 사용if (c >= a && c 여러줄인 경우 실행블록을 넣어야 함if(!result) System.out.println("참이다");..
자바에서 타입추론은 JAVA 10에서 도입되었습니다. 파이썬이나 자바스크립트처럼 타입을 지정하지 않고 변수를 선언합니다. 타입추론은 항상 사용할 수 있는 것은 아니고 특정상황에서만 사용가능합니다.그리고 지역변수로만 사용가능하며 클래스의 필드로도 사용할 수 없습니다. // var를 사용해서 변수를 선언하고 초기화var intNum = 1;var doubleNum = 3.14;var charLet = 'A';var StringWord = "안녕하세요";// 선언만 할 수는 없음 -> 컴파일러가 타입을 추론할 수 없기 때문에// null로 초기화 할 수도 없음//var notInit;//var nullVar = null;// 자료형을 변경하는 것이 불가//intNum = 1.23; // 정수값에서 실수값으로 ..
자바에서 배열은 특정 타입의 데이터를 고정된 개수만큼 묶어서 사용합니다.1. 선언과 초기화 // 사용할 자료형 뒤에 []를 붙여 선언char[] guk = {'가', '나', '다', '라', '마'};// length : 배열의 길이 반환int length = guk.length;// [] 안에 인덱스 정수를 넣어 접근// 0부터 시작char first = guk[0];//String first_string = guk[0]; //에러 발생 -> 타입이 다름char last = guk[guk.length - 1];// 초기화하지 않고 선언 -> 타입[] 변수명 = new 타입[] -> new 타입[]안의 값은 요소의 개수// 요소에 null이 가능하면 요소가 null이 되고 null을 허용하지 ..
1. length()length는 문자열의 길이를 측정하는 메서드입니다.int i1 = "".length(); // 0int i2 = "헬로".length(); //2int i3 = "Hello".length(); //5int i4 = "안녕하세요".length(); //5 2. isEmpty(), isBlank()이 두개의 메서드는 문자열이 비어있는지 확인하는 메서드입니다. 두 메서드의 차이는 isEmpty는 공백도 문자열로 인정한다는 것이며 isBlank는 공백을 문자열로 인정하지 않는다는 것입니다. //문자열이 비어있는지 여부String str1 = "";String str2 = " \t\n";int i5 = str1.length(); //0int i6 = str2.length(); //3 -> 공..