전체 글 (256) 썸네일형 리스트형 Final package p4; public class Main_example { public static void main(String[] args) { BBB b1 = new BBB(10);// 출력 : AAA의 기본 생성자, BBB의 int생성자 // 부모클래스의 기본생성자가 딸려온다! // if) super로 정의해주게되면 AAA의 int생성자, BBB의 int생성자가 출력된다. } } /*final*/ class AAA{ // class에도 final을 붙일 수 있다 // --> 이렇게되면 AAA는 누구에게도 상속해주지 못하는 클래스가 되는거임 // --> 나는 안쓸걸.... int v1; int v2; AAA(){ // 부모클래스의 기본 생성자는 없으면 안돼! 상속받는애가 생성자를 못만든다구 System.. Super package p3; public class Main_super { public static void main(String[] args) { // AAA a = new AAA(); BBB b = new BBB();// --> AAA의 생성자, BBB의 생성자아아ㅏ아 두개다 호출됨! // b.v2 ----> BBB의 변수임!!!.... 이렇게하지마세요~!~! b.test1();// --> 이것은 AAA의 메서드10 b.test2();// --> 이것은 BBB의 메서드20 System.out.println(b.v2);// 20 } } class AAA{ int v1; int v2; AAA (){ System.out.println("AAA의 기본 생성자"); } AAA(int v1){ this.v1 =v1; .. Interface Basic // 상속 + 다형성 + 오버라이딩 ---> 인터페이스! // 코드의 의도 : 결합도를 낮춘다 (너무 많이 의존하지 않도록) // --> 하나의 모듈을 변경할 때 다른 모듈에 미치는 영향을 최소화하고 버그를 줄이는 데 도움이됨 // --> 모듈 간의 강한 결합이 없으면 해당 모듈을 다른 프로젝트에서 더 쉽게 재사용할 수 있음 // --> 각 모듈이 독립적으로 작동하고 목적을 명확하게 수행할 때 코드를 이해하기 쉬워짐 class AAA{ int a1; int a2; void test1() { System.out.println("이것은 test1의 메서드"); } } // 상속 문법 : ~ extends + 상속받을 클래스명 class BBB extends AAA { int b1; int b2; } clas.. Collection Framework // 주요 컬렉션 프레임워크 인터페이스 및 클래스: // List: '순서가 있는' 요소를 저장하는 컬렉션. // 중복된 요소를 허용하며, 인덱스를 통해 요소에 접근할 수 있습니다. // ex) ArrayList, LinkedList, Vector 등 // Set: 중복된 요소를 허용하지 않는 컬렉션. (순서x) // ex) 예를 들어, HashSet, LinkedHashSet, TreeSet 등 // Map: 키-값 쌍을 저장하는 컬렉션. (순서x) // 각 키는 유일해야 하며, 키를 통해 값을 검색합니다. // ex) HashMap, LinkedHashMap, TreeMap 등 // Queue: 큐 자료 구조를 구현하는 컬렉션. // 주로 FIFO(First-In-First-Out) 순서를 따릅니다... List활용 // ArrayList class MyArrayList { public static void main(String[] args) { // ArrayList 생성 ArrayList myList = new ArrayList(); // 요소 추가 myList.add(10); myList.add(20); myList.add(30); // 요소 접근 System.out.println("첫 번째 요소: " + myList.get(0)); // 10 출력 // 요소 수정 myList.set(1, 25); // 요소 삭제 myList.remove(2); // 리스트 크기 System.out.println("리스트 크기: " + myList.size()); // 리스트 순회 for (int i = 0; i < myLis.. List 장단점 비교 // 사용방법 및 결과는 똑같으나, 시행속도가 완전히 다른것을 우리는 알고있지!! // add : 거의 비슷해 (하나하나는 array가 빠른데, 배열길이가 커지면 복사해야되는게 별루) // get : (특정값을 상수로 표현해서 가져오는 거니까) ArrayList가 빠르겠지 // 배열을 다 출력할거야 : (그나마)ArrayList로 해야된다! (linked는 get을 하기위해 반복문을 계~속 돌거잖아? 미친짓임) // remove : linkedList가 빠르겠다 (array는 앞에있는거 지우려면 뒤에값을 앞으로 계~속 밀잖아.) ArrayList arrayList = new ArrayList(); LinkedList linkedList = new LinkedList(); arrayList.add("안녕 .. Linked List 활용 public static void main(String[] args) { // Linked List // 메모리가 필요한 만큼만 딱! 깔끔하게 생긴다 (null인 고리 찾으면 거기서 끝나니까.) // --> 알아서 고리가 착착 연결되니까 배열길이를 복사하는 과정이 필요없단 말임 MyLinkedList list = new MyLinkedList(); // 이게 리스트 선언한건데, 이게 없어지지 않는 이상 연결고리는 계속 돌아간다(= 메모리가 소멸을 안한다구) list.add("안녕1"); list.add("안녕2"); list.add("안녕3"); list.add("안녕4"); list.add("안녕5"); list.add("안녕6"); list.remove(1);// 배열의 2번째를 삭제하겠다 list... Data Structure // 자료구조 (Data Structure) // 자료구조의 선택 --> 각 자료구조는 모두 장/단점이 존재함 // 장단점마다 다 정리돼있음... 잘써보자 // 주요 자료구조 API 인터페이스와 클래스 // 1. List 인터페이스: 순서가 있는 데이터를 저장하며 중복을 허용합니다. // ## 주로 ArrayList는 검색이 많은 경우에 사용 / LinkedList는 잦은 삽입/삭제 시 사용 // ★★ ArrayList: 동적 배열을 구현한 클래스 // - 크기 조절 및 빠른 임의 액세스가 필요한 경우에는 ArrayList가 효율적일 수 있지만, // - 중간에 요소를 자주 추가 또는 삭제해야 하는 경우에는 다른 자료구조(예: LinkedList)를 고려할 필요가 있음!! // // ** 장점 // - .. 이전 1 ··· 16 17 18 19 20 21 22 ··· 32 다음