String은 클래스다. 따라서 String 변수에는 String 인스턴스의 참조값만 들어갈 수 있다. String - 비교:String 클래스는 == 비교가 아니라 항상 equals() 비교를 해야한다.동일성(Identity) : == 연산을 제공한다. 연산자를 사용해서 두 객체의 참조가 동일한 객체를 가리키고 있는지 확인동등성(Equality) : equals() java 메서드를 사용하여 두 객체가 논리적으로 같은지 확인new String()과 달리 문자열을 사용하는 경우 자바에선 메모리 최적화를 위해 문자열 풀을 사용한다.그로인해 동일한 문자를 사용하는 경우 문자열 풀에서 만든 인스턴스를 참조(공유)하므로 == 비교에 성공한다.따라서 혼선을 막기위해 모든 비교는 equals() 동등성 비교로 ..
전체 글
프로그래머로 거듭나는 발자취기본형과 참조형의 공유: 자바의 데이터 타입을 가장 크게 보면 기본형(Primitive Type)과 참조형(Reference Type)으로 나눌 수 있다.기본형: 하나의 값을 여러 변수에서 절대로 공유하지 않는다.참조형: 하나의 객체를 참조값을 통해 여러 변수에서 공유할 수 있다. 공유 참조와 사이드 이펙트:사이드 이펙트(Side Effect)는 프로그래밍에서 어떤 계산이 주된 계산 외에 추가적인 부수 효과를 일으키는 것 불변 객체1. 자바에서 객체의 공유 참조는 막을 수 없다.2. 불변 객체를 도입하여 값의 변경을 막는다.3. 불변 객체이므로 참조하는 인스턴스의 값을 변경하려면 새로운 인스턴스를 생성해서 할당해야한다. withXXXX:"with"는 관례처럼 사용되는데, 원본 객체의 상태가 그대로 ..
java.lang: 자바가 기본으로 제공하는 라이브러리중 가장 기본이 되는 패키지이다. java.lang 패키지의 대표적인 클래스들Obejct: 모든 자바 객체의 부모 클래스String: 문자열Integer, Long, Double: 래퍼 타입, 기본형 데이터 타입을 객체로 만든 것Class: 클래스 메타 정보System: 시스템과 관련된 기본 기능들을 제공 Object 클래스: 클래스에 상속 받을 부모 클래스가 없으면 묵시적으로 Object 클래스를 상속 받는다.공통 기능 제공다형성의 기본 구현 Object 클래스가 제공하는 기능객체의 정보를 제공하는 toString()객체의 같음을 비교하는 equals()객체의 클래스 정보를 제공하는 getClass()기타 등등 Object를 활용한 다형성의 한계Ob..
객체 지향 프로그래밍은 프로그램을 유연하고 변경 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 다형성의 본질클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다 OCP(Open-Closed Principle) 원칙Open for extension: 새로운 기능의 추가나 변경 사항이 생겼을 때, 기존 코드는 확잘할 수 있어야 한다.Closed for modification: 기존의 코드는 수정되지 않아야 한다. 전략패턴(Stragy Patter):전략 패턴은 알고리즘 클라이언트 코드의 변경 없이 쉽게 교체할 수 있다. 출처 - 김영한의 실전 자바 기본편
추상 클래스: 부모 클래스는 제공하지만, 실제 생성되면 안되는 클래스 추상 메서드추상 메서드는 선언할 때 메서드 앞에 추상이라는 의미의 abstract 키워들르 붙여주면 된다.추상 메서드가 하나라도 있는 클래스는 추상 클래스로 선언해야 한다.추상 메서드는 상속 받는 자식 클래스가 반드시 오버라이딩 해서 사용해야 한다. 순수 추상 메서드: 모든 메서드가 추상 메서드인 순수 추상 클래스는 코드를 실행할 바디가 전혀 없다.인스턴스를 생성할 수 없다.상속시 자식은 모든 메서드를 오버라이딩 해야 하낟.주로 다형성을 위해 사용된다. 인터페이스:자바는 순수 추상 클래스를 더 편리하게 사용할 수 있는 인터페이스라는 기능을 제공한다인터페이스의 메서드는 모두 public, abstract 이다.메서드에 public abs..