Java 47

[JAVA] 백준 1316번- 그룹 단어 체커

https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Main{ public static void main(String[] args) thr..

ALGORITHM 2022.08.04

[JAVA] 추상 클래스 (특징, 객체 생성 방법)

추상 클래스의 정의 일단 추상 메서드는 메서드의 본체가 완성되지 않은 미완성 메서드를 말한다. abstract void abc(); 추상 메서드를 1개 이상 포함하고 있는 클래스는 반드시 추상 클래스로 정의돼야 한다. 추상 클래스는 class 키워드 앞에 abstract를 붙여 표현한다. abstract class A{ abstract void abc(); void bcd(){ //... } } 추상 클래스의 특징 내부의 미완성 메서드 때문에 객체를 직접 생성할 수 없다. 힙 메모리에 생성되는 객체는 내부 요소가 미완성인 상태로 들어갈 수 없기 때문이다. 하지만 이 추상 클래스를 상속한 자식 클래스를 생성하면 그 자식 클래스로는 객체를 생성할 수 있다. 추상 클래스를 상속하는 자식 클래스는 부모에게 상속..

BACK/JAVA 2022.08.04

[JAVA] 예외 : Checked Exception / UncheckedException

예외와 에러의 차이점 에러: 자바 가상 머신 자체에서 발생하는 오류로, 개발자가 해결할 수 없는 오류 예외 : 연산 오류, 숫자 오류 등과 같이 상황에 따라 개발자가 해결할 수 있는 오류 개발자가 예외 처리하면 프로그램은 종료되지 않고 계속 실행된다. Error 클래스와 Exception 클래스는 모두 Throwble 클래스를 상속하고 있다. Exception은 RuntimeException을 상속한 클래스인 Unchecked Exception, 상속하지 않은 클래스인 Checked Exception으로 분류할 수 있다. Checked Exception 컴파일 전에 예외 발생 문법을 검사하고, 예외 처리를 하지 않으면 문법 오류가 발생해 컴파일 자체가 불가능하다. 반드시 try ~ catch로 예외를 잡..

BACK/JAVA 2022.08.01

[Spring Boot] Pageable로 페이징 구현하기

Pageable으로 페이징처리를 구현한것을 정리해본다. postRepository public interface PostRepository extends JpaRepository { @Query(value = "select p from Post p where p.isPrivate = 0") Page findAll(Pageable pageable); } JpaRepository는 PagingAndSortingRepository를 상속받는다. Pageable 을 매개변수로 받아 Pagination과 Sort를 구현할 수 있다. postController @GetMapping("/postList") public ResponseEntity getPostList(@RequestParam Optional page,..

BACK/SPRING 2022.07.31

[JAVA] 이너 클래스(인스턴스, 정적, 지역)

인스턴스 멤버 이너 클래스 객체 내부에 멤버의 형태로 존재 아우터 클래스의 모든 접근 지정자의 멤버에 접근할 수 있음 객체 생성 class A { class B{ } } A a = new A(); A.B b = a.new B(); 이너 클래스 내부에서 아우터 클래스의 멤버를 참조 -> '아우터 클래스명.this' 정적 멤버 이너 클래스 이너 클래스 앞에 static 키워드가 포함 아우터 클래스의 멤버중 객체 생성 없이 바로 사용할 수 있는 정적 멤버만 정적 이너 클래스 내부에서 사용할 수 있음 객체 생성 class A{ static class B{ } } A.B b = new A.B(); 지역 이너 클래스 클래스의 멤버가 아닌 메서드 내에서 정의되는 클래스 정적 클래스로 지정할 수 없음 객체 생성 cla..

BACK/JAVA 2022.07.28

[JAVA] 이너 인터페이스

인터페이스를 클래스 내부에 정의하는 것을 이너 인터페이스라고 한다. 해당 클래스에 의존적인 기능을 수행할 때 이너 인터페이스를 사용한다. 이너 인터페이스의 중요한 특징은 정적 이너 인터페이스만 존재할 수 있다는 것이다. static 제어자를 생략하면 컴파일러가 자동으로 추가해준다. class A{ // ... static interface B{ void bcd(); } } 인터페이스의 객체를 생성하려면 해당 인터페이스를 상속한 자식 클래스를 생성한 후 생성자를 이용하거나 익명 이너 클래스를 이용해 객체를 생성해야한다. 자체적으로는 객체를 생성할 수 없다. 이 때, 객체의 타입을 '아우터 클래스명.이너 인터페이스명' 과 같이 사용한다. class A{ interface B{ // 이너 인터페이스는 자동으로..

BACK/JAVA 2022.07.28

[JAVA] 인터페이스, 디폴트 메서드

인터페이스란? 인터페이스의 의미는 입출력 방식의 호환성을 의미한다. 내부의 모든 필드가 public static final로 정의되고, static과 default 메서드 이외의 모든 메서드는 public abstract로 정의된 객체지향 프로그래밍 요소이다. interface 키워드를 사용해 선언한다. interface A { public static final int a = 3; public abstract void abc(); } 필드와 메서드 앞에 제어자가 확정되어있고 이는 생략해도 컴파일러가 자동으로 삽입한다. 인터페이스의 상속 클래스가 인터페이스를 상속할 때는 implements 키워드를 사용한다. 클래스에서는 여러 부모 클래스에 동일한 이름의 필드나 메서드가 존재할 때 이를 내려받으면 충돌이..

BACK/JAVA 2022.07.28

[JAVA] charAt(i) -'0' 사용 이유

charAt이란 string 타입으로 받은 문자열을 char 타입으로 한 글자만 받게 해주는 함수이다. 숫자형 문자를 CharAt함수로 추출하면 char형이므로 int 형으로 변환하려하면 아스키코드로 변환된다. 따라서 '0' 또는 48을 빼주어야 의도한대로 계산할 수 있다. String n = "123"; n.charAt(0); // 1 n.charAt(1); // 2 n.charAt(2); // 3 (int)n.charAt(0) + (int)n.charAt(1) // 49 + 50 = 99 '0'(char) => 48 '1'(char) => 49 '2'(char) => 50 여기서 -'0'(48)을 해주면 원하는 숫자가 나온다. n.charAt(0)-'0' = 49-48 = 1 n.charAt(1)-'..

BACK/JAVA 2022.07.27

[JAVA] 백준 17413번- 단어 뒤집기2

https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System..

ALGORITHM 2022.07.21