목록Java (22)
To Dare Is To Do!
equals()어떤 두 참조 변수의 값이 같은지 다른지 동등 여부public boolean equals(Object obj) { return (this == obj);}재정의하지 않은 equals() 메서드는 호출한 객체와 전달된 객체의 내용이 같은지 확인하며 == 연산자를 사용해 동일한 참조를 가리키면 true를 반환함equals() 오버라이딩논리적 동등성을 비교하고자 할 때, equals()를 오버라이딩하여 객체의 특정 필드를 기준으로 비교@Overridepublic boolean equals(Object obj) { if (this == obj) return true; if (obj == null || getClass() != obj.getClass()) return false; ..
개요Java 에서 문자열을 다루는 대표적인 클래스로 연산이 많지 않을 때는 위에 나열된 어떤 동기화 방법을 사용하더라도 큰 문제가 발생할 가능성은 적으나 연산 횟수가 많아지거나 멀티스레드 환경에서 Race condition 등의 상황이 자주 발생한다면, 각 동기화 방법의 특징을 이해하고 상황에 맞는 적절한 방법을 사용해야 함String불변 객체로 한 번 생성되면 그 값을 변경할 수 없음더하기 연산을 하여 문자를 이어 붙일 때는 새로운 객체가 생성되어 재 할당됨public class StringExample { public static void main(String[] args) { String str = "Hello"; System.out.println(str.hashCod..

개요같은 모델의 두 핸드폰을 비교할 때 동등하다 혹은 동일하다는 의미에서 모두 같은 핸드폰이라고 할 수 있을까?동일하다 : 같은 고유 식별값을 가지고 있지 않아 동일하다고 할 수 없음동등하다 : 각자의 고유 식별 번호는 다르지만 같은 외형을 가지고 있어 동등하다고 할 수 있음개념동일성(identity)두 객체가 힙 메모리상에서 같은 위치(주소)에 있는지를 의미하며, 해시 코드 값(한 사람 당 하나의 값을 갖게 되는 식별값)을 비교해서 완전히 동일한 것인지 비교 (물리적)두 객체의 해시코드 값을 비교하는 방법으로 ==연산자로 비교했을 때 true라면 동일성이 같은 객체임Number number1 = new Number(1);Number number2 = number1;System.out.println(nu..
Call by value- 메서드를 호출할 때 넘겨줄 변수(인자)를 지정하면, 메서드의 매개변수가 지정한 변수 값의 복사본으로 초기화되는 것- 복사된 인자는 함수 안에서 지역적으로 사용되는 local value 속성을 가짐- 함수내에서의 변경은 메서드를 호출할 때 지정한 변수에 영향을 미치지 않음 Call by reference- 메서드를 호출할 때 넘겨줄 변수를 지정하면, 메서드의 매개변수가 지정한 변수의 래퍼런스로 초기화되는 것- 함수 내에서의 변경은 메서드를 호출할 때 지정한 변수에 영향을 끼침 Java는 Call by value or Call by reference?public class main{ public static void main(String[] args) { ..

추상 클래스란?- 객체 명세의 역할을 맡아 실체 클래스의 공통적인 상태을 모아 규격화- 추상 메서드*를 하나 이상 포함한 클래스추상 메서드: 작동 로직 없이 즉 메서드의 선언부만 작성되어 구현부를 미완성으로 남긴 메서드로 자식 클래스에서 반드시 구현해야 한다. 추상 클래스의 특징- abstract 키워드를 붙여서 정의- 하위 클래스들의 공통점들을 모아 추상화하여 만든 클래스- new 키워드를 사용하여 직접 객체를 생성할 수 없다.- 추상클래스는 추상 메소드 외에 일반클래스와 같이 일반적인 필드, 메서드, 생성자를 가질수 있다.- 상속하는 집한 간 연관 관계가 있다. (is-a 관계)- 접근 제어자를 자유롭게 사용할 수 있다.- 추상클래스는 단일 상속만 지원한다.=> 여러 부모 클래스로부터 상속받을 때 발..