hashCode() 와 equals() 메서드
2023. 1. 4. 15:26
Java
equals() 매개변수로 객체의 참조변수를 받아 비교해 그 결과를 boolean으로 알려준다. 기본적으로 2개의 객체가 동일한 지 검사하기 위해 사용한다. Person p1 = new Person(7); Person p2 = new Person(13); p1.equals(p2) 이 결과는 false다. 객체를 생성할 때 메모리의 비어있는 공간을 찾아 생성하기 때문에 서로 다른 두 개의 객체가 같은 주소를 갖는 일은 있을 수 없다. 하지만 p1 = p2 p1.equals(p2) 이 결과는 참이 된다. 두 개 이상의 참조변수가 같은 주소값을 같는 것은 가능하다. (p1, p2가 하나의 주소값을 가지고 있음) 그래서 v2의 주소 값을 v1이 가지게 되어 동일하다는 결과를 갖게 된다. equals 메소드는 O..
JVM
2022. 11. 24. 15:52
Java
JVM이란 java virtual machine java는 OS에 종속적이지 않습니다. 그래서 os위에서 java를 실행하기 위해선 무언가가 필요한데, 자바를 인식하고 실행하게 해주는 가상 컴퓨터가 바로 JVM입니다. java 소스코드(.java 파일)는 CPU가 인식할 수 없어 기계어로 컴파일이 필요합니다. 여기서 java compiler를 통해서 Java bytecode(.class파일)로 변환을 먼저 합니다. java compiler는 jdk를 설치하면 bin에 존재하는 javac.exe를 의미합니다. 그래서 javac 명령어를 통해 .class파일로 컴파일이 가능하다. javac 파일명.java 하지만 bytecode도 아직 기계어는 아닙니다. 그래서 이때 JVM이 OS가 bytecode를 이해할..
SOLID 객체 지향 설계
2022. 10. 13. 12:39
Java
객체(클래스)에게 데이터를 요구하지 말고 작업(기능)을 요청하라 SOLID란? SRP (단일 책임 원칙), OCP (개방 폐쇄 원칙), LSP (리스코프 치환 원칙), ISP (인터페이스 분리 원칙), DIP (의존 역전 원칙) 이고 이 다섯가지 개념을 의미한다. 단일 책임 원칙 (Single Responsibility Principle) 하나의 클래스는 하나의 책임만 가져야 한다. 클래스는 기능이나 존재 자체에 목적이 있다. 클래스는 그 책임을 완전히 캡슐화해야 한다. 가장 중요한 부분은 유지보수성이다. 수정이 필요한 경우 수정되는 이유는 단 하나 때문이어야 한다. 소프트웨어는 트랜드나 문제, 클라이언트 요구사항 등 다양한 요인이 있을 수 있어 그럴 경우마다 변화에 대응을 해야 한다. 그래서 어떤 변경..
[JAVA] 공부하다 정리하는 기본 개념 2
2022. 8. 18. 09:54
Java
String 클래스 public static void main(String[] args) { String ins1 = "Hello world"; String ins2 = "Hello world"; String ins3 = new String("hello world"); String ins4 = new String("hello world"); } } new 연산자를 이용하지 않고 인스턴스를 만드는 경우 ins1에서 "hellow world" 라는 문자열이 메모리 중에서 상수가 저장되는 영역에 저장된다. 그렇기 때문에 ins2도 hello world 라는 문자열 상수가 이미 만들어져 있기 때문에 ins1이 참조하는 것을 똑같이 참조하는 것이다. new 연산자를 이용해서 인스턴스를 만드는 경우 new 연산자를..
[JAVA] 공부하다 정리하는 기본 개념 1
2022. 7. 14. 22:57
Java
초기화(Initialization) 우리가 학교에 가면 필기구를 꺼내고 강의노트를 준비하는 준비 과정과 같은 의미입니다. 어떤 일을 시작하기 전에 준비를 하듯 작업을 시작하기 위해서 값을 설정하거나 넣는 것을 의미합니다. 우리는 보통 초기화를 컴퓨터에 있는 모든 내용을 다 지워버린다고 생각해서 조금 혼란이 올 수도 있을 것 같습니다. 하지만 프로그래밍에서는 이것만 기억하면 될 것 같습니다. 데이터 객체 혹은 변수를 위해 초기값을 지정해주는 것 이를 테면 다음과 같겠죠 public class Test{ public static void main(String[] args) { int a; System.out.println(a); } } 여기서는 출력을 할 때 오류가 발생합니다. 왜냐하면 객체를 선언했지만, ..