Coding 공부/Java41 [Java_Summary] 외부클래스의 내부 클래스, 클래스 메서드의 내부 클래스, 익명 내부 클래스로 인터페이스 인스턴스 생성, try-catch, 문자열 비교, 객체 레퍼런스, 객체 인스턴스, JDK 표준 자바 패키.. 1. 외부 클래스의 내부 클래스, 클래스 메서드의 내부 클래스 예제 main메서드의 40~51줄을 보면 내부 클래스 선언을 실습한다. 내부 클래스가 static이냐 아니냐에 따라 객체 생성방법이 다르므로 혼동하지 않도록 조심하자. 2. 필요한 모듈만 설정하는 방법 최상위 디렉토리의 src 디렉토리에 module-info.java에 들어가서 9번째 줄을 입력한다. (requres java.desktop;) 모든 모듈을 불러오면 프로그램이 무거워지기 때문에, swing이나 javax 등만 사용하기 위해 설정. 3. 익명 내부 클래스로 인터페이스 객체 생성하는 예제(GUI 실무영역 예제) 맛보기로 예제를 만들어본거라 각 코드를 이해할 필요는 없다. (나중에 계속 사용할 코드들) 3. try-catch문 arg.. Coding 공부/Java 2024. 2. 21. [Java_summary] var, interface, 여러 인터페이스 구현, 상속 받으면서 인터페이스 구현, 인터페이스 구현 업캐스팅, 내부 클래스(중첩 클래스), 익명 내부 클래스, 인터페이스 인스턴스화 1. var 키워드 자바에서 var 키워드는 자바 10부터 도입되었습니다. 이 키워드는 지역 변수의 타입 추론을 가능하게 해주어, 프로그래머가 변수의 타입을 명시적으로 선언하지 않아도 컴파일러가 변수의 타입을 유추할 수 있게 해줍니다. 이는 코드를 더 간결하게 만들고, 특히 제네릭 타입이 긴 경우에 코드의 가독성을 향상시킵니다. var를 사용할 때 주의할 점은 다음과 같습니다: 지역 변수에만 사용 가능: var는 메소드 내에서 지역 변수를 선언할 때만 사용할 수 있습니다. 클래스 멤버 변수, 메소드 파라미터, 리턴 타입에는 사용할 수 없습니다. 초기화 필수: var로 선언된 변수는 반드시 선언과 동시에 초기화되어야 합니다. 이를 통해 컴파일러가 변수 타입을 추론할 수 있습니다. 널(null)로 초기화 불.. Coding 공부/Java 2024. 2. 20. [Java_tips] 일반 클래스/static클래스/non-static클래스(inner class), 오버라이딩 할 때 접근성 고려 1. 일반 클래스 / static클래스 / non-static클래스(inner class) 차이점 자바에서 static class와 일반 class의 차이점을 이해하는 것은 클래스의 사용법과 접근성에 중요한 영향을 줍니다. 자바에서의 static 클래스는 주로 중첩 클래스(다른 클래스 내부에 위치한 클래스)에 사용되는 개념입니다. 자바에서 최상위 레벨의 클래스는 static으로 선언될 수 없으며, static 키워드는 중첩 클래스에만 적용됩니다. 일반 클래스 (Non-static class) 일반 클래스는 자바의 가장 기본적인 구성 요소로, 이를 통해 객체를 생성할 수 있습니다. 이러한 클래스의 인스턴스를 생성하기 위해서는 new 키워드를 사용해야 합니다. 인스턴스 멤버(필드, 메소드 등)는 객체가 생성.. Coding 공부/Java 2024. 2. 16. [Java_Summary] 어노테이션(Annotation), 추상메소드(abstract method), 인터페이스(Interface) 1. 어노테이션 (Annotation) 생략해도 코드 구현에는 문제가 되지 않는다.(골뱅이로 시작하는.. 주석 비슷한 무언가!) 어노테이션(Annotation)은 Java 5부터 도입된 기능으로, 코드에 메타데이터(metadata)를 추가할 수 있게 해주는 메커니즘입니다. 어노테이션은 컴파일 타임에 처리될 수도 있고, 런타임에 리플렉션을 통해 처리될 수도 있습니다. 어노테이션은 주로 컴파일러에게 코드 작성 방법에 대한 정보를 제공하거나, 컴파일 시 코드를 자동으로 생성하도록 지시하거나, 런타임에 특정 기능을 수행하도록 하는 데 사용됩니다. @Override는 자바에서 사용되는 내장 어노테이션 중 하나로, 메서드 선언 앞에 사용됩니다. 이 어노테이션은 해당 메서드가 상위 클래스의 메서드를 오버라이드(재정의.. Coding 공부/Java 2024. 2. 15. [Java_Summarry] 상속, 업캐스팅, instanceof, 오버라이딩, 다형성, 동적 바인딩 1. 클래스를 다른 패키지에서 사용하고 싶을 때, default, private 클래스는 다른 패키지에서 사용할 수 없다. import해서 사용할 수도 없다. final class는 다른 클래스에서 상속받아 사용할 수 없다. final method는 다른 클래스에서 오버라이딩하여 재정의할 수 없다. default 클래스를 다른 패키지에서 사용하고 싶다면, 접근 제한자를 public으로 변경하거나 코드 구조를 재조정하는 것이 가장 바람직한 해결책이다. static은 클래스 최상위 레벨에선 사용할 수 없고, 멤버 변수나 메서드에서만 사용할 수 있다.(static과 final 키워드 사용할 수 있는지 여부가 헷갈리니 주의하자!, 의미는 전혀 다름!!) 2. 업캐스팅(upcasting) 서브 클래스의 객체는 슈.. Coding 공부/Java 2024. 2. 14. [Java_Example] 스케줄 관리 프로그램 주석을 확인해주세요. private 멤버 변수를 가지고 있는 Day클래스와 그 값을 접근해 반복문을 실행하는 MonthSchedule클래스 MonthSchedule클래스의 작동은 input(), view(), finish(), run()으로 모듈화하여 만들었다. Coding 공부/Java 2024. 2. 13. [Java_Summary] Singleton(synchronized), 상속, enum 1. Singleton 복습 및 synchronized synchronized 키워드는 멀티스레드 환경에서 메소드가 한 번에 하나의 스레드에 의해서만 실행될 수 있도록 보장합니다. 즉, 한 스레드가 getInstance() 메소드를 실행하고 있는 동안 다른 스레드는 해당 메소드의 실행이 완료될 때까지 대기해야 합니다. 이는 동시성 문제를 방지하는 데 필요하며, 특히 싱글턴 패턴의 인스턴스 생성과 같이 상태를 변경하는 연산에서 중요합니다. 싱글턴 패턴에서 synchronized 키워드를 사용하면, 여러 스레드가 동시에 getInstance() 메소드에 접근할 때 인스턴스가 중복으로 생성되는 것을 방지할 수 있습니다. 첫 번째 스레드가 인스턴스를 생성하고 있는 동안 다른 스레드는 대기하게 되고, 첫 번째 스.. Coding 공부/Java 2024. 2. 13. [Java_Summary] 단축키, final, static final, Singleton, Scanner, package import 1. 단축키 (이클립스 단축키) sysout + 'Ctrl'키 + 'space'키 누르면 System.out.println();이 자동 완성된다. 'Ctrl'키 + '/'키 누르면 선택한 줄이 모두 주석 처리된다. 'Alt'키 + 'Shift'키+마우스 왼클릭하면 여러줄 선택가능하고 선택한 줄을 한번에 앞으로 당기거나 수정할 수 있다. 'Alt'키 + 'Shift'키 + 's'키 +'r'키->select all -> generate하면 멤버변수(속성 값)에 대한 get, set함수가 자동 생성된다. 2. final final int a = 5; 초기값을 반드시 준다. 프로그램 내에서 a값을 바꾸려고 할 경우 오류가 난다. 상수의 개념으로도 사용할 수 있다. 예시) PI, 예금 금리 등 바뀌면 안되는 변수.. Coding 공부/Java 2024. 2. 7. [Java_Summary] 접근 지정자, 패키지, private, static, 객체 멤버 메서드, Factorial, Power 1. 패키지 관련 있는 클래스 파일을 저장하는 디렉터리 자바 응용프로그램은 하나 이상의 패키지로 구성 기본적으로 패키지 외부에는 접근하는 것을 거부한다. (한 패키지가 같은 가족이라고 생각하기) 2. 접근 지정자 접근 지정자(access modifier)를 사용하여 변수나 메서드의 사용 권한을 설정할 수 있다. 다음과 같은 접근 제어자를 사용하여 사용 권한을 설정할 수 있다. private default protected public 접근 제어자는 private < default < protected < public 순으로 보다 많은 접근을 허용한다. public 멤버 : 패키지에 관계 없이 모든 클래스에게 접근 허용 protected 멤버 : 같은 패키지 내의 다른 모든 클래스에게 접근 허용 , 상속 .. Coding 공부/Java 2024. 2. 6. [Java_Summary] 클래스(2) 생성자의 오버로딩, 객체의 깊은 복사와 얕은 복사, this, 객체의 메소드, 메소드 오버로딩, 가비지 1. 생성자(Constructor) 오버로딩 10번째 줄 Aircon()과 16번째 줄 Aircon(String company, String color, int price)를 보면 똑같은 생성자이지만 매개변수 숫자가 다르다. 이런 것을 오버로딩이라고 한다. 오버로딩 : 같은 메서드 이름을 여러개 정의한다. >>오버로딩을 하는 이유 : 코드가 길어지거나 다른사람과 일을 협력해서 할 때, 헷갈리지 않고 생산성이 높아지기 때문이다. (ex. print함수 : 인자에 문자열, 정수형, 소수형 등 다양한 자료형을 넣어도 출력이 된다.) 2. 객체의 깊은 복사와 얕은 복사 객체를 생성할 때마다 Stack영역에서 해당 객체를 가리키는 aircon, aircon1, aircon2이 생성되고, Heap영역에는 해당 클래.. Coding 공부/Java 2024. 2. 2. [Java_Summary] 메소드에서 배열, 예제 1. 메소드에서 배열 리턴 배열 공간 전체가 아니라 배열에 대한 레퍼런스만 리턴된다. 리턴 타입을 선언할 때, []안에 배열의 크기를 지정하지 않는다. 2. (앞서 만든)팀 할당하는 예제를 메서드로 만들기 >>4번째 줄에서 매개변수로 String[][] team를 사용한다면, String[][] team = main.team이랑 같은 의미이다. 주소값을 참조하므로 메서드 내에서 값을 바꾸면 main메서드의 String[][]team도 수정된다. 3. 메소드에서의 지역 변수 for(int i =0;....){} 에서 i같이 지역변수는 다른 메서드에서 수정하거나 불러올수 없고 해당 메서드가 끝나면 사라지는 휘발성이 있는 변수이다. 깊은 복사와 얕은 복사? 메소드에서 매개변수로 배열을 받을 경우 그 매개변수는.. Coding 공부/Java 2024. 2. 1. [Java_Summary] 2차원 배열 1. 2차원 배열 2차원 배열은 [ ] (대괄호)를 두 번 사용하여 선언하며 첫 번째 대괄호에는 세로 크기, 두 번째 대괄호에는 가로 크기를 지정합니다. 일반적으로 2차원 공간은 가로x세로로 표기하지만 배열로 만들 때는 세로x가로로 표기합니다. stack영역에는 배열의 포인터(주소)값을 가진다. heap영역에 생성된 배열을 가르킨다. Heap영역에는 세로줄 배열 하나, 가로줄 배열들이 생성된다. ex) 3x4배열은 세로줄 1개, 가로줄3개 총 4개 생성된다. ★ 가로줄 배열의 요소 갯수는 정해져 있지 않고 바꿀 수 있다. (C언어에서는 불가능함) int numArr[3][4] = { // 세로 크기 3, 가로 크기 4, 3, 5인 int형 2차원 배열 선언 { 11, 22, 33, 44 }, { 55, .. Coding 공부/Java 2024. 1. 30. 이전 1 2 3 4 다음 728x90 반응형