Java
-
자바 클래스와, 객체와, 인스턴스Java 2023. 4. 11. 15:41
클래스는 객체를 생성하기 위한 설계도 또는 틀이다. 객체는 이러한 클래스를 바탕으로 생성된 구체적인 실체이다. 클래스는 객체를 만들기 위한 속성(변수)와 기능(메서드)을 정의한다. 객체는 이러한 속성과 기능을 가진 구체적인 인스턴스로서, 메모리에 할당된다. 예를 들어 Person 이라는 클래스가 존재한다. 이는 설계도 또는 틀이다. Person 클래스에는 속성(이름, 나이)과 기능(걷기, 말하기) 등을 정의한다. 이때 Person 클래스를 이용하여 kim 이라는 이름을 가진 20살 사람이며, 걷기와 말하기 등을 할 수 있는 구체적인 인스턴스를 생성할 수 있다. 즉, kim은 Person 클래스의 인스턴스인 것이다.
-
자바 기본 데이터 유형과, 래퍼 클래스Java 2023. 4. 11. 14:29
Java는 순수한 객체지향 언어가 아니다. 왜냐하면 기본 데이터 유형을 제공하기 때문이다. 하지만 기본 데이터 유형을 래퍼 클래스를 이용해 객체로 변환시킬 수 있다. 아래 코드는 그 예제이다. // int 타입의 기본 타입 값 int intValue = 10; // Integer 클래스의 인스턴스로 변환 Integer integerValue = Integer.valueOf(intValue); // Double 클래스의 인스턴스로 변환 double doubleValue = 3.14; Double doubleObject = Double.valueOf(doubleValue); 반대로 래퍼 클래스를 기본 데이터 유형으로 변환시킬 수 있다. 아래는 예제 코드이다. // Integer 클래스의 인스턴스 Intege..
-
Optional 그리고 NPE(Null Pointer Exception) 방지Java 2023. 3. 17. 15:46
Optional은 Null로 넘어온 값을 어떠한 값으로 처리해줘서 NPE가 일어나는 것을 방지해준다. public void delete(Integer id){ SpringBoard springBoard = boardRepository.findById(id) .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 글입니다.")); boardRepository.delete(springBoard); } 위 코드는 게시글 삭제 기능을 구현한 것이다.
-
builder 패턴Java 2023. 3. 16. 13:05
builder 패턴을 사용해야 하는 이유 1. 의도하지 않는 데이터 변경을 예방할 수 있음. 2. 필요한 데이터만 생성, 변경 가능 3. 가독성이 좋음 게시글 등록에서의 builder 패턴 // Post 클래스 private String title; private String content; @Builder public Post(String title, String content){ //클래스 생성자, Builder 패턴 적용 this.title = title; this.content = content; } // ServiceTest 클래스 //given Post request = Post.builder() .title("제목") .content("컨텐츠") .build(); //wben boardRep..
-
length, length(), size() 차이Java 2023. 1. 30. 14:54
1. length - arrays(int[], double[], String[]) - length는 배열의 길이를 알고자 할때 사용된다. int n = 19; int[] arr = new int[n]; int tmp = arr.length; // tmp = 19 2. length() - String related Object(String, StringBuilder etc) - **length()**는 문자열의 길이를 알고자 할때 사용된다. 3. size() - Collection Object(ArrayList, Set etc) - **size()**는 컬렉션프레임워크 타입의 길이를 알고자 할때 사용된다.
-
List.of()Java 2023. 1. 30. 12:51
List.of()는 배열들(Arrays)을 List로 변환할 때 사용한다. @Test @DisplayName("글 여려개 조회") void getList(){ //given boardRepository.saveAll(List.of( SpringBoard.builder() .title("제목3") .content("내용3") .build(), SpringBoard.builder() .title("제목2") .content("내용2") .build(), SpringBoard.builder() .title("제목") .content("내용") .build() )); //when List list = boardService.getList(); //then assertEquals(3, list.size()); }..
-
stream()Java 2023. 1. 30. 12:39
스트림(Stream) : 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것 - 자바 1.8 이전에는 다양한 컬렉션 클래스들이 서로 사용방이 달라서 표준화가 제대로 이뤄지지 않았었는데 자바 1.8이 등장하면서 표준화가 완벽하게 이뤄짐. 자바8부터 Stream 을 사용 할 수 있습니다. 기존에 자바 컬렉션이나 배열의 원소를 가공할떄, for문, foreach 등으로 원소 하나씩 골라내여 가공을 하였다면, Stream 을 이용하여 람다함수 형식으로 간결하고 깔끔하게 요소들의 처리가 가능합니다. 배열의 원소를 가공하는데 있어 map, filter, sorted 등 이 있습니다. map은 요소들을 특정조건에 해당하는 값으로 변환해 줍니다. 요소들을 대,소문자 변형 등 의 작업을 하고 싶을떄 사용 가능 합니다..
-
람다(lambda)Java 2023. 1. 30. 12:35
익명함수 (매개변수1,...) -> {함수;} // 람다식 X public int sum(int a, int b) { return a + b; } // 람다식 O (int a, int b) -> {return a + b;} 엄청 간편하지 않은가? 위와같이 함수의 이름 없이 람다식으로 구현한 함수를 일명 익명함수 라고 하기도 한다. 만약 어떤 변수에 a 와 b의 합을 구하고 싶다면 다음과 같이 하면 된다. 다른 예시 public SpringBoard get(Long id){ // SpringBoard springBoard = boardRepository.findById(id); //Optional로 반환해줘야 하기 때문에 오류 발생. SpringBoard springBoard = boardRepositor..