JAVA/DAY 13 _ 23.09.04 (15) 썸네일형 리스트형 재귀함수 // 재귀 호출을 사용할 때는 항상 종료 조건을 명확하게 정의해야 함 --> 종료 조건을 제대로 정의하지 않으면 무한 재귀에 빠져서 프로그램이 정상적으로 동작하지 않을 수 있음 public int doProcess() { System.out.println("안녕!"); // doProcess(); // (주석 떼면) 무한반복! 안녕출력, 다시 doProcess돌아가서 안녕출력..... exception!!! return 1; } package p4; public class Main { public static void main(String[] args) { new Test().doProcess(); new Test().doProcess(10); System.out.println("==여기부터=="); i.. Annotation // @.... // 코드에 주석을 달거나 메타데이터를 부여하여 컴파일러, 개발 도구, 런타임 환경 등에게 특별한 정보를 전달할 수 있음 // 내가 쓸일은 없을거야. package p3; public class Main { public static void main(String[] args) { TTT t1 = new TTT(); // t1 --> private으로 선언된 인스턴스밖에 없으니 접근할게 없음! ㅠ.. t1.setV1(10);// setter를 통해 값을 넣을 수 있다. System.out.println(t1.getV1());// 10 } } class TTT{ private int v1; // setter public void setV1(int v1) {// 바깥에서 값을 입력해야하니까 파.. folder package com.ja.stm; import java.util.Date; import com.ja.stm.b.QQQ; import com.ja.stm.dto.Student; // import com.ja.stm.dto.Student;// 2) 저~~ 폴더에있는 Student 클래스를 가져오게되면 public class Main { public static void main(String[] args) { Test t1 = new Test();// 같은 패키지에 있는 class는 내가 아는 방법 그대로 사용하면됨 t1.test(); // Student s1 = new Student();--> 다른 패키지에 있는 class는 방법이 달라 //com.ja.stm.dto.Student s1 = new com... Single Tone Pattern // System a = new System(); --> 이걸 쓰지 못한다는 이야기 // System 클래스의 생성자는 private으로 선언되어 있어 직접 인스턴스를 생성할 수 없음 // 따라서 위와 같이 new 연산자를 사용하여 System 클래스의 인스턴스를 생성하려고 하면 컴파일 오류가 발생! // System 클래스는 정적 메서드와 필드로 구성되어 있으며, 인스턴스 생성 없이도 이를 사용할 수 있음 // (앞의 static같은 느낌?) SomeComponent sc1 = SomeComponent.getInstance(); // 첫번째 instance 호출시에만 instance가 호출되고, 그 후에는 항상 같은 인스턴스를 반환 ★★★ sc1.test(); SomeComponent sc2 = Som.. Final // final : 변경 불가한 메모리 (1회 생성만 가능하다!) // 변수 앞에 쓰는 경우 : 상수를 표현할 때 // 네이버같은 곳에서 다양한 사람들이 거대한 하나의 코드를 수십년간 유지/보수 해야할 경우 // 누군가가 마음대로 코드를 변경하지 못하도록 // 코드의 안정성을 높이고 의도치 않은 변경을 방지할 수 있음 public class P5_final { public static void main(String[] args) { final String ip = "111.1111.111111"; System.out.println(ip); System.out.println(ip); System.out.println(ip); // ip = "111.2222.222222"; // --> 중간에 누군가가 임의.. Static2 public class P4_static2_Again { public static void main(String[] args) { new Q1().test1();// 안녕하세요 : 0 AAAA a = new AAAA(); a.v1 = 20;// 인스턴스 변수 선언 // a.v2 = 30;--> 이렇게 안하기로 했지? AAAA.v2 = 30;// 메서드 변수 선언 new Q1().test1();// 안녕하세요 : 30 System.out.println(AAAA.v2);// 50 new Q1().test1();// 안녕하세요 : 50 } } class AAAA{ int v1; static int v2; int v3; void test1() { System.out.println("안녕"); } static v.. Static // 1. 매소드 오버로딩 --> 내가 사용할 일은 거의 없겠지... // 생성자 오버로딩처럼 -> 메소드명을 똑같이 선언할 수 있다 // 파라메터를 어떻게 선언해주냐에 따라서 다르게 출력되겠지 new AAA().test1();// 안녕0 new AAA().test1(98);// 반가워980 // ----> 이렇게 호출하면 v2는 아직 0이니까!!!!! 98+0 이렇게 나오는구나. System.out.println(AAA.v2);// 0 // 2. static : 클래스 수준에서 공유되는 인스턴스 변수를 선언하는 것, 메소드 영역에 메모리가 생성된다 ★★★ // 클래스의 모든 인스턴스가 이 변수를 공유하므로 한 인스턴스에서 값을 변경하면 // 다른 모든 인스턴스에서도 해당 값을 공유함!!!! // 인스턴.. Star UML // 더블클릭 -> add attribute : 속성 선언 (name, age, score) // 오른쪽 밑 -> properties : 속성의 타입 써주기 // visiblity -> public(+), private(-) 설정할 수 있음 // 더블클릭 -> add operation : 메서드 선언 // 왼쪽 밑 -> direct association : School이 Student를 사용하고 있다 // 왼쪽 밑 -> 1. compostion(-----◆) : School과 Student가 강하게 연결되어 있다 (= 결합도가 높다) // 왼쪽 밑 -> 2. aggregation(----◇) : School과 Student가 약하게 연결되어 있다 (= 결합도가 비교적 낮다) // 왼쪽 밑 -> 3. de.. 이전 1 2 다음