[Java] 불변 객체
·
TIL/Java
기본형, 그리고 참조형의 공유자바의 데이터 타입은 크게 기본형과 참조형으로 나눌 수 있다기본형 : 변수의 실제 물리 메모리에 데이터를 저장하게 된다참조형 : 변수의 실제 물리 메모리에는 객체의 참조값을 저장하게 된다모든 변수의 값을 변수에 대입할 때는 해당 변수가 갖고 있는 값을 복사해서 대입하게 된다기본형int a = 10;int b = a;기본형은 실제 물리 메모리에 데이터를 직접 저장하게 된다다른 변수에서 값을 넘겨받을 때는 해당 변수 ( a ) 가 갖고 있는 값 ( 현재는 10의 이진코드 )을 복사해서 대입하게 된다따라서 a, b가 갖고 있는 10은 값만 같을 뿐이지 같은 10으로 볼 수는 없다참조형public Class Bird(){ private String name;}// 간단히 위와 ..
[Spring] SOLID 원칙
·
TIL/Spring
좋은 객체 지향 설계의 5가지 원칙 ( SOLID )좋은 객체 지향 설계를 위해서는 5가지 원칙을 지켜야 한다SRP ( Single Responsibility Principle ) 단일책임원칙하나의 클래스는 하나의 "책임"만 가져야 한다사실 하나의 책임이라는 것은 굉장히 모호하다. 그 책임의 크기가 매우 클 수도 있고, 작을 수도 있다SRP를 잘 지켰는지 여부를 따지는 중요한 기준은 "변경"이다. 해당 클래스에서 변경이 일어날 때, 다른 클래스에 파급 효과가 적다면 SRP를 잘 따른 것으로 생각할 수 있다OCP ( Open - Closed Principle ) 개방폐쇄원칙객체 지향 설계에서 핵심이 된다"확장"에는 개방되어 있지만, "변경"에는 폐쇄되어있어야 한다어떻게 가능할까? 확장하려면 기존의 클래스를..
[Spring] 객체 지향 설계와 스프링
·
TIL/Spring
스프링이란?스프링은 여러 기술의 모음집이다.스프링 프레임워크, 스프링 부트, 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 배치, 스프링 클라우드, 스프링 Rest Docs 를 모두 묶어서 스프링이라고 부른다.스프링 프레임워크스프링의 핵심스프링 DI 컨테이너, AOP, 스프링 MVC, 트랜잭션 관리 등과 같은 스프링의 핵심 기술들을 갖고 있다.스프링 부트현재 스프링 프로젝트의 기본스프링 프레임워크의 경우 설정 방법이 매우 복잡하기 때문에 사용하기 까다로운 부분이 존재한다. 따라서 "스프링 프레임워크를 간편하게 사용하기 위한 프레임워크" 가 등장웹 서버를 내장하고 있다스프링과 외부 라이브러리의 의존 관계 자동 설정스프링은 왜 만들어졌을까?스프링이 왜 만들어졌는지, 왜 이런 기술들을 제공하는지 알기..
[Java] equals()
·
TIL/Java
동일성과 동등성자바는 두 객체가 같다는 표현을 2가지를 통해서 할 수 있다.동일성 ( == ) : 물리적인 참조 값이 동일한가? 즉 동일한 인스턴스를 참조하고 있는가?동등성 ( equals() ) : 두 객체의 논리적인 값이 동일한가? ( 객체가 갖고 있는 정보가 동일하다 )public class User { private Long id; public User(Long id) { this.id = id; }}public class EqualsMain { public static void main(String[] args) { User user1 = new User(1L); User user2 = new User(1L); System...
[Java] toString()
·
TIL/Java
toString() 메서드Object 클래스가 제공하는 메서드 중 하나이다객체의 정보를 문자열 형태로 제공해준다디버깅과 로깅에 유용하게 사용되는 메서드이다public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode());}Object 클래스에 선언되어 있는 toString의 내용이다클래스의 정보와 이름@16진수해시코드 형태로 제공한다public class ToStringMain { public static void main(String[] args) { Object obj = new Object(); String objString = obj.toString(); ..
[Java] Object 클래스
·
TIL/Java
java.lang 패키지java.lang 패키지는 자바가 기본으로 제공하는 라이브러리이다자바를 사용할 때 가장 기본이 되는 클래스들을 포함하고 있는 패키지이다기본 제공 패키지이기 때문에 클래스 작성시 import를 해주지 않아도 사용할 수 있다대표 패키지Object StringInterger, Long, DoubleClassSystemObject 클래스자바에서 모든 클래스의 최상위 부모는 항상 Object 클래스가 된다즉 모든 객체는 Object를 상속받고 있다는 것으로 클래스를 작성할 때 명시적으로 상속을 받지 않으면 바로 Object 클래스를 자동으로 상속받게 된다만약 명시적으로 상속을 받게 되면? 상속한 부모 클래스를 타고 올라가보면 결국 Object 클래스가 존재한다public class Pare..