프로그래밍 언어/JAVA
-
[JAVA] Scanner 와 BufferedReader프로그래밍 언어/JAVA 2023. 1. 26. 11:07
사용자(키보드)에 입력을 받기 위해 Scanner 클래스를 사용한다. 하지만 알고리즘을 풀다보면 시간 초과가 발생하는 경험을 하게 된다. 나는 아직 해보기 전인데, 간단한 문제 풀고 다른 사람의 답변을 보니 Scanner 보다 BufferedReader를 더 많이 사용하더라. 그래서 정리해볼까 한다. 일단) Scanner와 BufferedReader 클래스는 둘 다 사용자 입력을 받을 수 있는 기능을 제공한다. 두 클래스가 가지고 있는 가장 큰 차이점은 속도이다. import java.util.Scanner; public class Input { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String inpu..
-
[JAVA] toString, (String), String.valueOf() 문자열 형변환 살펴보기프로그래밍 언어/JAVA 2022. 11. 17. 10:41
형변환,, 매번 내게 질문을 준다. 한 번 제대로 정리해두면 헷갈리지 않을 것 같아 이번 기회로 정리해보려고 한다. 컨트롤러에서 파라미터로 넘어온 값을 Map 형태로 저장한 paramMap과 sesstion에서 값을 가져오려고 한다. 가져온 값들 2개는 둘다 Object 형태이다. 근데 loginId는 (String)으로 형변환을 하고 action은 String.valuOf 로 형변환을 했다. 이 둘의 차이점은 무엇일까?? //세션에서 가져온 값은 Object형태로 저장된다. String loginId =(String)session.getAttribute("loginId"); //paramMap의 value 값 형태는 Object이다. String action = String.valueOf(paramMa..
-
[ch14 Stream] 스트림 생성과 연산, Optional<T>프로그래밍 언어/JAVA 2022. 11. 1. 18:07
📑 스트림(Stream) 이란? 지금까지 많은 수의 데이터를 다룰 때, 컬렉션이나 배열에 데이터를 담고 원하는 결과를 얻기 위해 for문과 Iterator를 이용해 코드를 작성해왔다. 그러나 이런 방식으로 작성된 코드는 너무 길고 알아보기 어렵다. 또 문제는 데이터 소스마다 다른 방식으로 다뤄야한다. 예를 들어 List를 정렬할때는 Collection.sort()를 사용해야하고, 배열을 정렬할 때는 Arrays.sort()를 사용해야한다. 이런 문제점들을 해결하기 위해 만든 것이 '스트림(stream)'이다. 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았다. 데이터 소스를 추상화하였다는 것은, 데이터 소스가 무엇이던 간에 같은 방식으로 다룰 수 있게 되었다는 ..
-
[JAVA] 열거형(enum)이란?프로그래밍 언어/JAVA 2022. 10. 24. 23:16
📑 열거형이란? 열거형은 여러 상수를 선언해야 할 때, 편리하게 선언할 수 있는 방법이다. 일반적으로 상수를 선언할 때 다음과 같이 하는데, 이처럼 상수가 많을 때는 코드가 불필요하게 길어진다. class Card{ static final int CLOVER=0; static final int HEART=1; static final int DIAMOND=2; static final int SPADE=3; static final int TWO = 0; static final int THREE = 1; static final int FOUR = 2; final int kind; final int num; Card(int kind, int num) { this.kind = kind; this.num = num..
-
[JAVA] TreeSet과 이진 탐색 트리프로그래밍 언어/JAVA 2022. 10. 15. 14:54
📑 TreeSet이란? TreeSet은 이진 탐색 트리(binary search tree)라는 자료구조의 형태로 데이터를 저장하는 컬렉션 클래스이다. 이진 탐색 트리는 정렬, 검색, 범위검색에 높은 성능을 보이는 자료구조이며 TreeSet은 이진 탐색 트리의 성능을 향상시킨 '레드-블랙-트리'로 구현되어 있다. Set 인터페이스를 구현했으므로 중복된 데이터의 저장을 허용하지 않으며 정렬된 위치에 저장하므로 저장순서를 유지하지도 않는다. 이진 트리는 링크드 리스트처럼 여러 개의 노드가 서로 연결된 구조로, 각 노드에 최대 2개의 노드를 연결할 수 있으며 '루트'라고 불리는 하나의 노드에서부터 시작해 계속 확장해나갈 수 있다. class TreeNode { TreeNode left; //왼쪽 자식 노드 Ob..
-
[JAVA] Object 클래스의 equals()와 hashCode() 재정의프로그래밍 언어/JAVA 2022. 10. 15. 01:15
자바 면접 질문에 equals와 hashcode의 차이점에 대한 문항이 있었다. 그때 hashCode에 대해 글로만 읽어봤었는데 자바 책 공부를 하다 equals와 hashCode를 목적에 맞게 같이 오버라이딩하는 것을 보고 다시 정확히 정리하기 위해 포스팅을 작성한다. 📑 Object 클래스의 메서드 - equals() 매개변수로 객체의 참조변수를 받아서 비교하여 그 결과를 boolean 값으로 알려주는 역할을 한다. public boolean equals(Object obj) { return (this==obj); } 위의 코드는 Object 클래스의 정의되어 있는 equals 메서드의 실제 내용이다. 위 코드에서 알 수 있듯이 두 객체의 같고 다름을 참조변수의 값으로 판단한다. 그렇기 때문에 서로 ..
-
[Servlet] HttpServletRequest, HttpServletResponse 파헤치기프로그래밍 언어/JAVA 2022. 10. 11. 15:48
HttpServletRequest, HttpServletResponse에 대해 알아보기 전 Servlet에 대해 알아보려면 아래 링크 참조! https://wonisdaily.tistory.com/117 [Web] 서블릿(Servlet)이란? (+서블릿 컨테이너, 생명주기) 📑 서블릿(Servlet)이란? 서블릿이란 Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 웹을 만들 때 다양한 요청(Request)와 응답(Response)이 있기 마련이고 이 요 wonisdaily.tistory.com 📑 서블릿 환경 구현 1. 스프링부트에서 서블릿을 직접 등록해서 사용하려면 @ServletComponentScan 어노테이션을 ServletApplication에..