본문 바로가기

생각정리/Java

(6)
자바 버전 선택에 대한 이유 자바 버전에 선택에 있어 고려할 부분을 두 가지로 나눠보면 실무작업과 학습으로 나눌 수 있을 것이다.학습용도에서는 버전이 자신이 학습할 기술에 맞게 버전을 선택하고 지원기간도 별도로 고려 대상에 넣지 않는다.하지만, 개발을 통해 운영이 필요할 경우에 자바 버전을 선택하는 데에는 많은 것을 고려해야 하는데, 그중 가장 중요하다고 생각하는 것은 서비스의 지원 유무일 것이다.많이 사용하는 버전들을 보면 LTS(Long Term Support)라고 붙은 장기간 지원을 해주는 버전을 많이 사용하고 있다.Java 8 (Java1.8)Lambda의 기능이 추가되고 가장 많은 가장 긴 지원기간을 가지고 있고 안정성과 신뢰성이 높아 오랜 기간 동안 사용되고 있다. 주요 기능Lambda Expressions : 함수형 프..
[JAVA] 문자열 사용 String, StringBuffer, StringBuilder 차이점 String String와 래퍼 클래스들은 객체를 생성 한 뒤 상태를 변경할 수 없다. String 객체는 생성되고 변경하기 위해서는 새로운 String 객체를 생성한다. Stirng str = "test"; // 선언 str += " start"; // 문자열 변경 str = str.concat(" start");과 동일 // 기존의 test를 가져와 start를 합쳐 새로운 test start 문자열을 만들어 str에 선언해주는 것과 같다. StringBuffer 멀티스레드 환경에서 안정적으로 사용할 수 있는 가변형 문자열 처리를 위한 클래스. 컬랙션과 마찬가지로 수정을 염두하고 만들어진 문자열 관련 클래스 StringBuilde..
[JAVA] 스레드 스레드(Thread) 프로세스에서 실제로 작업을 수행하는 주체를 말한다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스라고 한다. 스레드의 실행은 매번 다르게 나올 수 있다. 스레드의 생성 방법 Thread 클래스를 상속 Runnable 인터페이스를 구현 main 메서드 안에서 람다식을 이용해서 구현 스레드를 통해 작업하고 싶은 내용을 run() 메서드에 작성해 사용한다. (람다식의 경우 바로 사용) // Thread 클래스를 상속 public class ThreadWithClass extends Thread{ public void run() { System.out.println(Thread.currentThread() +..
[JAVA] 업캐스팅, 다운캐스팅 캐스팅(Casting) 타입을 변환하는 것을 말하면 형변환이라고도 한다. 기본형 타입을 서로 형변환 하는 것과 기본형과 래퍼클래스 간의 형변환을 말할 수 있다. 업캐스팅(Upcasting) 자식 클래스의 객체가 부모 클래스 타입으로 형변환 하는 것 부모 클래스로 형변환이 되어 자식 클래스에만 있는 멤버는 사용할 수 없다. 업캐스팅을 하여도 오버라이딩 된 메서드는 자식 클래스의 메서드로 실행된다. 서로 다른 자식 클래스들을 하나의 부모 클래스로 묶어 사용하기에 용이하다. 다운캐스팅(Downcasting) 업캐스팅된 클래스를 다시 원래의 타입으로 형변환 하는 것 형 변환할 때 자식클래스의 캐스팅 연산자는 생략이 불가능하다. (괄호로 표시하는 것) 형제 클래스(같은 클래스를 상속받는 클래스) 끼리 서로 캐스팅..
[JAVA] Wrapper 클래스 래퍼 클래스 (Wrapper class) 기본 타입의 데이터를 객체로 취급해서 사용해야 하는 경우에 해당 타입의 데이터를 포장해 주는 클래스 참조형 변수로 사용될 때를 말한다. 기본 타입 래퍼 클래스 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 박싱과 언박싱 박싱 - 기본 타입에서 래퍼 클래스로 변환 언박싱 - 래퍼 클래스를 기본 타입으로 변환 박싱, 언박싱을 사용하지 않고도 자동으로 연산도 가능하다. Integer num1 = new Integer(1); // 박싱 Integer num2 = Integer.valueOf(2); // 박싱 int int1 = num1.i..
[JAVA] Scanner 와 BufferedReader 차이 Scanner와 BufferedReader 차이 프로그래머스에서 문제를 풀면 입력을 받고 출력을 하는 데 있어 따로 신경을 안 써도 되지만 백준에서 문제를 풀면서 직접 데이터를 입력받고 출력을 하는 데 있어 성능에 차이가 있고 이 차이로 인해서 문제를 틀릴 수 도 있어 중요하게 생각을 안 할 수가 없게 되어 사용하는 입력 클래스를 비교해 보기로 했다. Scanner 하나의 입력값이 입력되면 즉시 바로 전달을 한다. 대신 입력 받을 때 원하는 형태의 자료값으로 정해 입력값을 받을 수 있어 직관적이고 사용값을 고정할 수 있다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner..