Java22 [Java] Equals와 HashCode Equals와 HashCode에 대해 좀 더 자세히 공부 할 필요성을 느껴서 정리한다. Equals 두 객체의 동등성(내용)을 비교한다. HashCode 두 객체의 동일성(같은 객체)을 비교한다. public class Human { private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public static void main(String[] args) { Human h1.. 2020. 7. 4. [Java] Primitive Type VS Reference Type 자바에서 타입은 크게 기본형 타입과 참조형 타입이 있다. 기본형 타입(Primitive Type) 기본 자료형은 반드시 사용하기 전에 선언되어야 한다. 비객체 타입이기 때문에 null값을 가질 수 없다. 기본형 타입에 Null을 넣고 싶다면 래퍼 클래스를 활용해야한다. 실제 값을 저장하는 공간으로 스택(Stack) 메모리에 저장된다. 컴파일 시점에 데이터의 표현 범위를 벗어나면 컴파일 에러가 발생한다. boolean, byte, short, int, long, float, double, char 참조형 타입(Reference Type) 기본형 타입을 제외한 타입들이 모두 참조형 타입이다. 기본적으로 java.lang.Object를 상속받으면 참조형이 된다. 빈 객체를 의미하는 Null이 존재한다. 값이 .. 2020. 7. 1. [Java] 자바 8은 왜 쓸까? 나는 단순하게 람다식을 사용 할 수 있어서? 라고 밖에 생각이 들지 않는다. 그래서 갑자기 궁금해졌다..! 자바 1.8을 검색했을 때 가장 많이 나오는 단어가 함수형 프로그래밍 이었다. 함수형 프로그래밍?? 자바를 주로하는 나에게 객체지향 프로그래밍도아닌 함수형 프로그래밍은 낯선 단어이다. 객체지향 프로그래밍 vs 함수형 프로그래밍 객체지향은 명령형프로그래밍이고, 함수형은 선언형 프로그래밍이다. 두 프로그래밍 방식의 가장 큰 차이점은 문제해결의 관점이다. 객체지향 : 데이터를 어떻게 처리할 지에 대해 명령을 통해 풀어 나간다. 함수형 : 선언적 함수를 통해 무엇을 풀어나갈지 결정한다. 흠.. 아직 그래도 어렵다. 함수형 프로그래밍 대입문이 없어 변수에 값이 할당되면 그 이후 절대 변하지않는다. = sid.. 2020. 6. 17. [Java] 자바의 리플렉션 자바에 대한 공부를 하던중 리플렉션이라는 개념이 있었다. 막상 예제를 보니 이미 사내 소스코드에 그렇게 쓰는 부분이 있음을 바로 알 수 있었다. Java Reflection API 구체적인 클래스 타입을 알지 못해도, 해당 클래스의 메소드, 타입, 변수들을 접근할 수 있도록 해주는 자바 API 구체적인 클래스 타입을 알지 못하면 메소드를 실행 할 수 없다. 리플렉션이 가능한 이유는? 자바의 클래스 파일은 바이트 코드로 컴파일되어 Method 영역에 적재되어있다. 그래서 이 영역에서 클래스에 대한 정보를 가져올 수 있다. ClassName Class Modifiers (public, private, synchronized 등) Package Info Implemented Interfaces Consturc.. 2020. 6. 12. [Java] 자바 직렬화, serialVersionUID 직렬화란? 글에 이어 부족한 부분을 추가하려한다. serialVersionUID 클래스를 역직렬화 할 때, 멤버 변수가 새로 추가 되었다면 예외가 발생한다. java.io.InvalidClassException local class incompatible: stream classdesc serialVersionUID = -8896802588094338594, local class serialVersionUID = 7127171927132876450 serialVersionUID의 정보가 일치하지 않기 때문에 발생한 것이다. serialVersionUID 값을 설정하지도 않았는데 왜 이런 에러가 발생할까? SUID 는 필수 값은 아니다. 호환 가능한 클래스는 SUID값이 고정되어 있다. SUID가 선언되어.. 2020. 6. 7. [Java] Atomic Type vs Synchronized 스프링 REST API 기본 예제를 보고있었는데 AtomicLong 이라는 타입으로 변수를 선언해 놓은 부분이 있었다. private final AtomicLong counter = new AtomicLong(); 이게 뭘까?? Atomic 변수 원자성을 보장하는 변수 멀티쓰레드 환경에서 동기화 문제를 synchronized 키워드를 사용하여 락을 거는데, 해당 키워드 없이 동기화 문제를 해결하기 위해 고안된 방법이다. 동기화 문제 해결방법 synchronized Atomic volatile Atomic VS synchronized 차이점 synchronized 특정 Thread가 해당 블럭 전체를 lock 하기 때문에, 다른 Thread는 아무런 작업을 하지 못하고 기다리는 상황 발생 -> 자원의 낭비.. 2020. 1. 31. 이전 1 2 3 4 다음