[Java] Record 클래스 란?
·
Backend/Java
Intro자바를 배울 당시 대부분 강의들이 Java 8, 11 버전으로 되어 있어서 데이터를 이동시킬 때 RequestDto와 ResponseDto 클래스를 만들어 사용하는 방법들을 배웠었는데, 2년 사이에 자바 버전 점유율이 많이 바껴서 알아가며 작업할 겸 Java 17로 하던 중 Record 클래스를 알고 난 뒤 부터 굳이 DTO 클래스를 만들어서 @Getter, @Setter, @Allargument 등 을 추가할 필요없이 Record 클래스로 만들어서 관리를 하게 되었는데 'Record의 기능이 이게 끝인가?' 라는 생각에 알아볼려고 한다.Record 클래스란?등장 배경Java 14에서 preview 기능으로 시작하여 Java 16때 정식으로 도입된 Record는 데이터 운반 클래스를 보다 명확하..
[Java] Scanner와 BufferedReader
·
Backend/Java
1. Scanner 클래스:Scanner 클래스는 간단한 텍스트 스캐닝을 위한 메소드를 제공이 클래스는 공백을 기본 구분자로 사용하여 입력된 토큰을 분리Scanner 클래스는 다양한 데이터 타입을 처리할 수 있습니다. 예를 들어, nextInt(), nextDouble(), nextLong() 등의 메소드를 제공하여 특정 타입의 데이터를 직접 읽어들일 수 있습니다.하지만, Scanner 클래스는 내부적으로 정규 표현식을 사용하기 때문에, 대용량 데이터를 처리하는데는 비효율적일 수 있습니다.2. BufferedReader 클래스:BufferedReader 클래스는 문자 입력 스트림에서 문자를 버퍼링함으로써 문자, 배열, 라인을 효율적으로 읽을 수 있도록 합니다.이 클래스는 기본적으로 문자열 데이터만 읽을 ..
[Java] Scanner 클래스 next() 와 nextLine()
·
Backend/Java
Java에서 Scanner 클래스는 'java.util' 패키지의 일부이며 콘솔, 파일 또는 문자열과 같은 다양한 소스에서 입력을 얻는 데 사용되며, 기본 데이터 유형과 문자열을 구문 분석하고 처리하는 방법을 제공합니다.Java에서 Scanner 클래스의 메소드는 아래와 같은 종류들을 주로 사용하고있는데, 3번부터 8번까지의 메소드는 next() 메소드와 함께 사용하여 입력된 문자열을 해당 타입으로 변환하는 역할을 합니다.예를 들어, nextInt() 메소드는 next() 메소드로 입력된 문자열을 int로 변환하여 값을 반환합니다. 이와 같은 방식으로 다양한 데이터 유형을 처리할 수 있습니다.(char 타입은 별도의 메소드가 없으므로, next() 메소드로 문자열을 입력받고,charAt() 메소드를 사용..
[Java] 클래스, 추상클래스, 인터페이스
·
Backend/Java
No.질문 리스트1.클래스(Class)란 무엇인가?2.객체(Object)란 무엇인가?3.인스턴스(Instance)란 무엇인가?4.추상클래스와 인터페이스 개념 및 공통점과 차이점 비교5.인터페이스를 이용한 다형성을 예시클래스(Class)란 무엇인가?클래스를 프로그래밍적 언어로 표현하자면 어떠한 객체의 변수 , 메소드의 집합이라고 표현할수있으며, 현실세계에 빗대어 말하자면 동일한 속성과 행위를 수행하는 객체의 집합객체(Object)란 무엇인가?클래스를 통해서 정의된 내용으로 실제로 데이터가 들어있는 독립적인 단위인스턴스(Instance)란 무엇인가?실제 메모리에 할당되어있는 것추상클래스와 인터페이스 개념 및 공통점과 차이점 비교 추상클래스인터페이스개요하나 이상의 추상 메소드를 포함한 클래스모든 메소드가 추상..
[Java] 반복문 for문을 사용한 별 피라미드 찍기 ver.2
·
Backend/Java
Intro프로그래밍을 배우기 시작하면 조건문과 반복문을 배우게 되는데, 반복문 입문 문제 중에서 최종 난이도는 별 찍기라고 생각힌다.별 찍기란 빈칸을 몇칸을 어떻게 할지 뛰우느냐에 따라서 정삼각형, 역삼각형, 피라미드, 다이아몬드 모양으로 출력할 수 있는데 처음 프로그래밍을 배우는 입장에서는 생각보다 어려워하는 사람이 많은거 같다.기본기본 삼각형삼각형 패턴 중 가장 간단한 형태로, 첫 줄에는 별이 하나, 두 번째 줄에는 별이 두 개가 출력됩니다.public static void printTriangle(int rows) { for (int i = 1; i 역삼각형역삼각형 패턴은 기본 삼각형의 반대 형태로, 첫 줄에는 별이 n개, 마지막 줄에는 별이 하나 출력됩니다.public static void ..
[Java] 약수 알고리즘 최적화 하기
·
Backend/Java
조별 스터디에서 백준 문제를 풀고 [Bronze III] 약수 구하기 - 2501 문제를 코드리뷰를 하는 중에 숙제를 받게되었다.문제 내용은 정수 N의 약수를 구한 뒤 M번째 수를 출력하는 약수구하는 문제이다.단순하게 N만큼 반복문을 돌려 나머지가 0이면 배열에 저장하는 식으로 아래와 같이 코드를 구현하였다. int N = {구할려고하는 약수}; List divisors = new ArrayList(); for (int i = 1; i 강사님꼐서 약수를 구할때 Math.sqrt()와 sort(Comparator.naturalOrder()) 이 두가지를 사용하면 더 빠르게 약수들을 구할 수 있다고 말씀하셔서 생각해보니 나머지가 0일때 몫또한 약수라는걸 깨닫게 되어 다시 코드를 작성하였다. int N = {..
[Java] Statement와 PrepareStatement 차이
·
Backend/Java
항목StatementPreparedStatementSQL 쿼리 형태정적 (Static)동적 (Dynamic)SQL 인젝션 공격취약방어 가능성능반복적인 쿼리 실행에 비효율적반복적인 쿼리 실행에 효율적사용법쿼리 전체를 문자열로 전달쿼리 템플릿을 미리 설정하고,필요한 값들을 나중에 삽입바인딩 변수사용하지 않음사용 가능쿼리 최적화데이터베이스에 매번 쿼리를 보낼 때마다쿼리 최적화를 수행쿼리 템플릿이 미리 컴파일되고 최적화되어,동일한 쿼리에 대해 높은 성능을 제공캐시 사용 유무캐시를 사용하지 않아,동일한 쿼리를 반복 실행할 때마다 컴파일캐시를 사용하여, 동일한 쿼리를 반복 실행할 때컴파일 과정을 생략하고 성능 향상 아래와 같이 PreparedStatement를 사용하다가 SQL syntax 에러가 발생하여 한참을 ..