본문 바로가기

728x90

Java

[JAVA] 깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy) /*깊은 복사와 얕은 복사*/ 얕은 복사 (Shallow Copy)는 주소 값을 스택 영역에 복사한다. 깊은 복사 (Deep Copy)는 실제 값을 힙 영역에 복사한다. /* 얕은 복사 */ Person person = new Person("Person1",20); Person newPerson = person; newPerson.setName("NewPerson"); newPerson.setAge(1); System.out.println(person); // NewPerson, 1 System.out.println(newPerson); // NewPerson, 1 newPerson의 객체는 스택에 쌓인다. 하지만 newPerson은 person과 같은 메모리 주소 값을 참조한다. 따라서 newPerso.. 더보기
[Java] equals 와 hashCode - 객체 일 경우 /* equals와 hashCode*/ Java의 모든 객체는 equals와 hashCode 함수를 상속받고 있다. /* equals*/ equals는 두 객체가 동등한지 비교한다. String s1 = "Hello"; String s2 = "Hello"; System.out.println(s1 == s2); //false 메모리 주소 비교 System.out.println(s1.equals(s2)); //true 값 비교 /*equals - 객체일 경우*/ Person person1 = new Person("Person1",20); //Person(String name,int age) Person person2 = new Person("Person1",20); System.out.println(pers.. 더보기
[Java] Predicate 인터페이스 /* Predicate 인터페이스 */ 함수형 프로그래밍을 구현하기 위해 jdk 1.8에 나왔다. /* Predicate 의 test() */ boolean test(T t); test() 메서드는 제너릭 타입 T t로 특정 작업(함수형 프로그래밍, 람다식)을 수행한다. /* 예제1 */ Predicate predicate = (input) -> input > 100; predicate.test(10); //false predicate.test(200); //true 위의 예제를 보면 함수형 프로그래밍을 만들면 test 메서드를 따로 정의할 필요가 없다. (이미 정의가 되어있다) 따라서 다음과 같은 식도 가능하다 /* 예제2 */ public void deleteById(int id){ // Todo는.. 더보기
[Spring Boot] JPARepository 페이징 처리 및 Thymealeaf 호출 (+querydsl) JPArepository 페이징이랑 데이터베이스의 기록리스트를 불러오고, 개수로 나눠서 페이지를 구분하는 것을 의미합니다. Repository에서 extends JPARepository를 한다면 다음과 같이 페이징 처리가 가능합니다 Page findByName(String name, Pageable pageable); Service에서 findByName을 호출해 보겠습니다. Page productPage = productRepository.findByName("펜",PageRequest.of(0,2)); PageRequest.of(0,2)를 살펴보겠습니다. 0 -> 페이지 번호 2 -> 페이지당 데이터 개수로 0번째 페이지(첫 페이지)에서 "펜"이라는 이름을 가진 Product 2개를 불러오는 방식입니.. 더보기

728x90