프로그래밍/JAVA 22

JDK, JRE, JVM, GC.... 이것들은 뭘까?

자바를 설치할 때 보면 2가지로 나뉘어져 있다. 1. JDK : Java Development Kit 2. JRE : Java Runtime Environment JRE는 자바를 실행할 수 있는 환경의 집합이다. JDK가 JRE를 포함하고 있다. JAVA로 개발을 하려면 JDK가 필요하고 JAVA프로그램을 실행시키 위해서는 JRE만 있으면 된다. JVM : Java Virtual Machine GC : Garbage Collector JVM은 자바 프로그램이 수행되는 프로세스를 말하여 메모리 관리를 한다. JVM 내에서 메모리 관리를 해주는 것이 GC (가비지 컬렉터)이다. JAVA는 ios든 window든 어디서든 실행할 수 있다. 이는 자바가 OS에 종속되어있지 않기 때문이다. 종속되지 않고 실행을 ..

인터페이스와 추상클래스

인터페이스 : 실제 코드는 만들지 않더라도 어떤 메서드들이 있어야 하는지를 정의하려고 할 때 사용한다. 인터페이스 내부에 선언된 메서드들은 Body가 있으면 안된다. 인터페이스를 구현하는 클래스를 만들때는 implements라는 예약어를 사용한다. "구현하다"라는 의미이다. 다중 상속은 불가능하지만 다중 구현은 가능하다. 구현할 경우 인터페이스에 정의된 모든 메서드들의 몸통을 만들어주어야만 한다. 클래스 public class MemberManager { } 인터페이스 public interface MemberManager{ } abstract 클래스 public abstract class MemberManager { } abstract 클래스 몸통이 없는 메소드 선언문에는 abstract라는 예약어를 ..

DTO(Data transfer Object)...이제 생성자를 곁들인(ft.this)

DTO 속성들을 갖는 클래스를 만들고 이를 쉽게 전달하기 위해 사용하는 자바 패턴 여러 개의 데이터를 하나의 타입에 넣어서 넘겨줄 수 있다!! DTO을 이용해서 상황에 맞게 생성자를 만들수있다. public class MemberDTO { public String name; public String phone; public String email; public String getName() { return name; } public MemberDTO(String name) { this.name= name; } public MemberDTO(String name, String phone){ this.name = name; this.phone = phone; } } 이렇게 MemberDTO 클래스를 만들고 ..

[자바의 신 9장] 접근 제어자_public, protected,private

public : 누구나 접근할 수 있도록 protected : 같은 패키지 또는 상속받은 경우 package-private : 아무런 접근 제어자를 적어주지 않았을 때, 같은 패키지 내에서만 접근 가능 private : 해당 클래스 내에서만 접근 가능 자바에서는 하나의 소스 파일에 여러 개의 클래스가 선언될 수 있다. 하지만 public으로 선언된 클래스와 그 소스파일의 이름은 꼭 동일해야만 한다.

[자바의신 8장]Pass by Value 와 Pass by Reference

참조 자료형 : 기본 자료형을 제외한 모든 타입 Pass by Value ; 값만 전달한다. 원래 값은 건드리지않고 변수들의 복제본들만 메서드에 넘겨준다. -> 매개변수를 받은 메서드에서 그 값을 지지고 볶든 원래 값은 변하지 않는다. Pass by Reference ; 객체에 대한 참조가 넘어간다. (메서드에서 변경한대로 변경된다. ) 메서드의 매개 변수로 참조 자료형을 넘길 경우에는 메소드 안에서 객체의 상태를 변경한 결과에 영향을 받는다. 모든 기본 자료형은 pass by value 참조 자료형은 pass by reference -> 참조 자료형 자체는 pass by value, 그 안에 것들은 pass by reference

[JAVA의 정석]HashMap

HashMap은 Map을 구현한 클래스이다. 즉, 키와 값을 묶어 하나의 데이터로 저장한다. 해싱을 사용하기에 많은 양의 데이터를 검색하는데 뛰어난 성능을 가진다. 키를 이용해서 저장된 값을 찾아야하므로 컬랙션 내에서 유일해야한다. 코드 : 이런 식으로 map 객체를 만들어 키와 값을 넣어줄수있다. HashMap map = new HashMap(); map.put("myId","1234"); HashMap map2 = new HashMap(); // 메서드 : put(); get(key); // 지정된 key의 값을 반환 특징 : HashMap은 키와 값을 각각 Object로 저장하기 때문에 어떠한 객체도 저장할 수 있다. HashMap은 저장공간보다 값이 추가로 들어오면 저장공간을 약 2배로 늘린다. ..

[JAVA의 신]열거형(enum)_상수의 집합

정의 : 열거형 > 여러 상수를 선언해야 할 때, 편리하게 선언할 수 있는 방법 클래스의 일종으로 관련 있는 상수들의 집합이다. 열거형을 이용하면 코드가 단순해지고 가독성이 높아진다. enum 클래스에도 보통 클래스와 같이 메서드를 선언해서 사용할 수 있다. enum Kind {CLOVER, HEART, DIAMOND, SPADE} 위 코드 처럼 작성해주면 자동적으로 0부터 시작하는 정수값이 할당된다. 이런 식으로 enum 클래스를 만들 수 있다. public enum OverTimeValues { THREE_HOUR, FIVE_HOUR, WEEKEND_FOUR_HOUR; } 사용법 : 열거형에 정의된 상수를 사용하는 방법은 'enum 클래스 이름.상수명'이다. 예 ) OverTimeValues.THRE..

[JAVA의 정석]Ch7_다형성과 추상클래스

1. 다형성 (Polymorphism) 상속 관계에 있을 경우, 조상 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조하도록 하는 것이 가능하다. SmartTv s = new SmartTv(); Tv t = new SmartTv(); 둘 다 같은 타입의 인스턴스 (smartTv)이지만 참조변수의 타입에 따라 사용할 수 있는 멤버의 개수가 달라진다. t와 s로 접근할 수 있는 멤버들이 다르다. 반대로, 자손타입의 참조변수로 조상타입의 인스턴스를 참조하는 것은 불가능하다. 상속관계에 있는 클래스 사이에서는 참조변수도 형변환이 가능하다. 조상타입의 참조변수로는 인스턴스의 멤버들을 모두 사용할 수 없기 때문에, 실제 인스턴스와 같은 타입의 참조변수로 형변환을 해야만 인스턴스의 모든 멤버들을 사용할 수 있다..

[JAVA의 정석]Ch7_객체지향_생성자와 상속

1-1. 생성자요? 생성자는 인스턴스가 생성될 때 호출되는 "인스턴스 초기화 메서드"이다. 생성자는 1. 리턴 값이 없고, 2. 생성자의 이름과 클래스의 이름은 같아야한다. + 생성자도 오버로딩이 가능하다. 생성자는 인스턴스를 생성하는 것이 아니고 단순히 인스턴스 변수들의 초기화에 사용되는 조금 특별한 메서드일 뿐이다. 사실 모든 클래스에는 반드시 하나 이상의 생성자가 정의되어 있어야한다. 지금까지 생성자 없이 인스턴스를 생성할 수 있었던 이유는 기본 생성자(Default constructor) 덕분이다. 기본 생성자는 컴파일러가 제공하는 생성자로 아무것도 하지 않아도 알아서 넣어준다. 이것은 클래스 내에 '생성자가 하나도 없을 때 '뿐이라는 것을 명심-!! 생성자를 이용한다면 인스턴스를 생성하는 동시에..

[JAVA의 정석]Ch6_객체지향_변수와 메서드(+static 블록)

1-1. 변수의 종류 - 인스턴스 변수, 클래스 변수, 지역변수 변수는 클래스 변수, 인스턴스 변수, 지역변수 모두 세 종류가 있다. 클래스 영역이 아닌 곳에서 선언된 변수는 지역변수 멤버 변수 중 static 이 붙은 변수는 클래스 변수 , 붙지 않은 변수는 인스턴스 변수이다. 인스턴스 변수는 인스턴스가 생성될 때 만들어진다. 인스턴스마다 별도의 저장공간을 가지므로 서로 다른 값을 가질 수 있다. 클래스 변수는 클래스가 메모리에 올라갈 때 생성된다. static를 붙이면 만들어지고 모든 인스턴스가 공통된 저장공간(변수)를 공유하게 된다. 인스턴스를 생성하지 않고 언제라도 바로 사용할 수 있다. 1-2. 메서드 메서드는 선언부와 구현부로 나뉜다. 선언부는 '메서드의 이름', '매개변수 선언', '반환타입..