☕ Java
캡슐화
캡슐화는 한 개체를 다른 개체로부터 보호하는 것. 클래스는 특정 클래스의 데이터를 직접적으로 바꿀 수 없다. 상태 = 데이터를 바꾸고 싶다면 해당 클래스에서 수행하는 동작 = 메서드를 통해야 한다. 캡슐화의 기본 원칙 중 하나. getter와 setter를 사용하는 이유도 된다. getter와 setter를 사용하는 이유 데이터를 직접적으로 바꾸지 않고 메서드를 이용해서 변경하게 되면 말도 안되는 값을 데이터에 넣지 못하도록 논리를 정할 수 있게 되고 잘못 된 값으로 데이터가 변경되는 일을 막을 수 있다. 특정 데이터를 걸러 내주는 역할도 캡슐화의 역할 중 하나. 다양한 연산 값을 그냥 변경하는 것이 아닌 연산을 수행해서 값을 넣어야 할 때, 이런 비즈니스 로직도 클래스 안에 캡슐화 할 수 있다. 비즈니..
String과 StringBuffer / StringBuilder 차이점
String String은 StringBuffer와 StringBuilder와의 큰 차이점은 한번 값이 할당되면 그 할당된 공간의 크기가 변하지 않는 불변(immutable)의 속성을 갖고 있다. hello로 선언한 String이 hello world로 값을 변경하게 되면 기존 주소에 있던 hello는 GC에 의해 제거되고 새로운 인스턴스인 hello world 주소를 가리키게 된다. 변하지 않는 문자열을 읽어 들일 때 String을 사용하면 좋다. StringBuffer/StringBuilder의 공통점 반면 StringBuffer와 StringBuilder는 가변(mutable) 성을 가진다. 문자열 연산 등으로 기존 객체의 공간이 부족할 경우 버퍼 크기를 늘리면서 유연하게 동작한다. 클래스가 제공하..
JRE와 JDK
JRE (Java Runtime Environment) JRE = JVM + Lbraries + Other components 말 그대로 자바를 실행할 수 있는 환경. 어떤 자바 프로그램이든 기본적으로 내장되어야 하는 클래스가 있다.예를 들면 System.out.println(). S.o.p는 Libraries에 들어있다. JDK (Java Development Kit) JDK = JRE + Compilers + Debuggers JDK는 자바 프로그램을 개발하고, 컴파일하고, 실행까지 필요한 것들이 모아진 것이다. 프로그램을 실행만 하는 사용자라면 JRE가 필요하고 프로그램을 개발하는 개발자라면 JDK가 필요하다.