프로그래밍/JAVA 10

[Java] 중첩 선언과 익명 객체

이것이 자바다 도서 정리 목차 중첩 클래스 인스턴스 멤버 클래스 정적 멤버 클래스 로컬 클래스 바깥 멤버 접근 중첩 인터페이스 익명 객체 중첩 클래스 클래스가 여러 클래스와 관계를 맺는 경우엔 독립적으로 선언하는 좋다. 그러나 특정 클래스만 관계를 맺을 경우, 중첩 클래스로 선언하는 것이 유지보수에 도움이 되는 경우가 많다. 중첩 클래스 클래스 내부에 선언한 클래스 클래스 멤버를 쉽게 사용할 수 있다. 외부엔 중첩 관계 클래스를 감추어, 코드의 복잡성을 줄일 수 있다. 멤버 클래스 : 클래스의 멤버로서 선언되는 중첩 클래스 로컬 클래스 : 메소드 내부에 선언되는 중첩 클래스 인스턴스 멤버 클래스 [public] class A { [public || private] class B{ } } 위와 같이 클래스..

[Java] 인터페이스

이것이 자바다(개정판) 기반 정리 목차 인터페이스 역할 인터페이스와 구현 클래스 선언 상수 필드 추상 메소드 디폴트 메소드 정적 메소드 private 메소드 다중 인터페이스 구현 인터페이스 상속 타입 변환 다형성 객체 타입 확인 봉인된 인터페이스 인터페이스 역할 인터페이스 사전적인 의미로 두 장치를 연결하는 접속기를 말한다. 자바에선, 서로 다른 두 객체를 연결하는 역할을 한다. 인터페이스 구현 객체 객체 A - 메소드 호출 -> 자동 타입 변환 어떤 객체를 대입하느냐에 따라 메소드 실행 결과가 다르게 나오는 것이다. ex) public interface Vehicle { void run(); } public class Driver { void drive(Vehicle vehicle) { vehicle...

[Java] 상속

이것이 자바다(개정판) 기반 정리 목차 상속 개념 부모 생성자 호출 메소드 재정의 final클래스와 final 메소드 protected 접근 제한자 타입 변환 추상 클래스 봉인된 클래스 상속 개념 상속 객체지향 프로그램에서 부모 클래스의 필드와 메소드를 자식 클래스에게 물려주는 것을 말한다. 중복되는 코드를 줄여줘 효율적으로 코드를 작성할 수 있다. public class 자식 클래스 extends 부모클래스 { } 클래스 상속 자바는 다중 상속을 허용하지 않는다. 즉, extends 뒤엔 하나의 부모 클래스만 올 수 있다. 부모 생성자 호출 자식클래스 name = new 자식클래스(); 위의 코드는 자식 객체를 생성한 것으로 보인다. 하지만, 부모 객체가 먼저 생성된 다음 자식 객체가 생성된 것이다. ..

[Java] Static

Static static 키워드는 메모리에 한 번 할당 되고, 프로그램이 종료될 때 해제되는 것을 의미한다. 프로세스 메모리 배치 위의 배치에서 Data 영역에 전역 변수와 정적(static) 변수가 저장된다. 따라서 GC의 관리 영역 밖에 존재하므로 남발하면 퍼포먼스에 악영향을 끼칠 수 있다. 객체가 생성되기 이전에 이미 할당되어 있으므로, 객체 생성 없이 바로 사용할 수 있다. 일반적으로 만든 Class는 Static 영역에 생성되고, new 연산자를 통해 생성한 객체는 Heap 영역에 생성된다. 장점 static 변수의 경우 여러 객체자 하나의 메모리를 참조하도록 할 때 사용하면, 메모리 효율이 높아진다. 단점 static 메소드의 경우 객체 생성 없이 호출이 가능하지만 지양하는 방식이다. stat..

[JAVA] 클래스

이것이 자바다(개정판) 기반 정리 목차 객체 지향 프로그래밍 객체와 클래스 클래스 선언 객체 생성과 클래스 변수 클래스 구성 멤버 필드 선언과 사용 생성자 선언과 호출 메소드 선언과 호출 인스턴스 멤버 정적 멤버 final 필드와 상수 패키지 접근 제한자 Getter와 Setter 싱글톤 패턴 객체 지향 프로그래밍 (Object Oriented Programming, OOP) 개발할 때 부품에 해당하는 객체들을 먼저 만들고, 이 객체들을 하나씩 조립해 완성된 프로그램을 만드는 기법 객체 (Object) 물리적으로 존재하거나 개념적인 것 중, 다른것과 식별 가능한 것 객체는 속성과 동작으로 구성된다. ex) 사람의 속성은 이름, 나이등이 있고, 동작으론 걷기, 뛰기 등이 있다. 자바에선 이를 필드와 메소드..

[JAVA] 참조 타입

이것이 자바다(개정판) 기반 정리 데이터 타입 분류 1. 기본 타입 : https://wldwlddl59.tistory.com/113 2. 참조타입 객체의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입이 있다. 기본타입으로 선언된 변수는 값 자체를 저장하지만, 참조 타입으로 선언된 변수는 객체가 생성된 메모리 번지를 저장한다. ex) // 기본 타입 변수 int age = 25; double price = 100.5; // 참조 타입 변수 String name = "day"; String hobby = "독서"; 스택 영역 참조 타입 변수는 스택영역에 저장되며, 힙 메모리의 주소를 저장한다. 실제 참조 타입 변수가 가리키는 내용은 힙메모리에 저장된다. 메모리 사용 영역 java 명령어로..

[JAVA] 조건문과 반복문

참고도서 이것이 자바가(개정판) Switch Expressions Java 12 이후부터는 switch 문에서 Expressions을 사용할 수 있다. break 문을 없애는 대신, 화살표와 중괄호를 사용해 가독성이 좋아졌다. ex) char score = 'A'; switch(score){ case 'A', 'a' -> { System.out.println("우수"); } case 'B', 'b' ->> { System.out.println("일반"); } default -> { System.out.println("hi"); } } switch(score){ case 'A', 'a' -> System.out.println("우수"); case 'B', 'b' -> System.out.println("일..

[JAVA] 연산자

참고 서적 이것이 자바다(개정판) 부호 연산자 정수 타입 연산의 결과는 int 타입이다. 부호 변경하는 것도 연산이므로 다음과 같이 대입해야 한다. byte a = -b; // 컴파일 에러 int c = -d; 산술 연산자 피연산자가 정수 타입 (byte, shor, char, int)이면 연산의 결과는 int 즉 int 타입으로 자동 변환 후 연산된다. 피연산자가 정수 타입이고 그 중 하나가 long 이면 연산의 결과는 long 피연산자 중 하나가 실수 타입이면 결과는 실수 타입 오버플로우(overflow) 타입이 허용하는 최대값을 벗어나는 것 언더플로우 (underflow) 타입이 허용하는 최소값을 벗어나는 것 언더 || 오버 플로우 발생시 에러가 발생하지 않고, 해당 정수 타입의 최소값 또는 최대값..

[JAVA] 변수와 타입

참고도서 이것이 자바다 변수 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름 컴퓨터 메모리(RAM)은 수많은 번지들로 구성된 데이터 저장 공간 메모리 관리를 위해 변수 사용 변수 선언 데이터타입 변수명; 캐멀 스타일 코드 작성시 여러 단엉를 혼합해 명명하는 경우, 낙타의 등처럼 대소문자를 섞어 작성하는 스타일 자바 소스 파일명은 대문자로 시작하는 것이 관례 ex) HelloWorld.java 변수명은 소문자로 시작하는 것이 관례 ex) helloWorld 변수 초기화 변수에 값을 대입하는 행위 이 때 메모리에 값이 할당된다. 초기화 되지 않은 변수는 메모리에 할당되지 않았기 때문에 변수를 통해 메모리 값을 읽을 수 없다. 데이터 타입 정수 byte, char, short, int, long 실수 ..

[JAVA] JAVA란?

참고도서 이것이 자바다 JAVA 특징 1. 모든 운영체제에서 실행 가능 JVM(Java Virtual Machine) : 운영체제에 종속받지 않고 CPU가 자바를 인식, 실행할 수 있게 하는 가상 컴퓨터다. 2. 객체 지향 프로그래밍 (Object Oriented Programming, OOP) 객체들을 연결해 더 큰 프로그램을 완성할 수 있다. 3. 메모리 자동 정리 JVM의 Garbage collection을 통해 사용하지 않는 메모리가 지동으로 정리된다. 4. 무료 라이브러리 풍부 javac.exe : 자바 소스파일 컴파일 java.exe : 자바 프로그램 실행 바이트코드 파일 javac로 컴파일하면 바이트코드 파일이 생성된다. .java ----- javac -----> .class 소스파일 컴파..