본문 바로가기

JAVA/Java2021-2

(41)
Class 클래스(클래스 이름이 Class) Class 클래스 : 컴파일하면 자바의 클래스와 인터페이스는 .class파일이 생성되는데 이 파일에 대한 정보를 가지고 있다. Class는 컴파일된 class파일을 로드하여 객체를 동적으로 로드하고 정보를 가져오는 메서드를 가지고있다 동적로딩 : 컴파일 시에 데이터 타입이 binding 되는 것이 아닌, 실행(runtime)중에 데이터 타입을 binding 하는 방법 : 프로그래밍 시에는 문자열 변수로 처리했다가, 런타임시에는 원하는 클래스를 로딩하여 binding할 수 있는 장저 : 컴파일 시에 타입이 정해지지 않으므로 동적 로딩시 오류가 발생하면 프로그램의 심각한 장애가 발생할 수 있다. ex1) Class.forName("클래스이름"); package Basic_Grammar.chap4.ch04Cl..
String 클래스(String, StringBuilder, StringBuffer 클래스), text block(java13부터제공) 1. String : 한 번 생성된 String은 불변한다. (immutable) 그래서 스트링 변수를 재정의하면 메모리 낭비가 발생할 수 있다. -선언 방법1. new String("문자열"); : 위의 경우 Heap 메모리에 인스턴스로 생성된다. ex1) String str1=new String("abc"); 방법2. "문자열"; ex) String str2="abc"; : 위의 경우 상수 풀(constant pool)에 생성된다. package Basic_Grammar.chap4.ch03String; public class StringTest01 { public static void main(String[] args) { String str1=new String("abc"); String str2=..
Object 클래스 (모든 클래스의 최상위 클래스) toString, equals, hashcode, clone() 메서드 모든 클래스는 Object 클래스를 상속 받는다. class 모든클래스 extends Object{} 라고 컴파일러가 자동으로 붙여준다. java.lang 패키지 : 프로그래밍 시 import 하지 않아도 자동으로 import 된다. ex) String, Integer, System 종류 -toString() -equals() -hashCode() ex1) equals() package Basic_Grammar.chap4.ch02Object; public class EqualsTest { public static void main(String[] args) { Student stu1=new Student(100,"Lee"); Student stu2=new Student(100,"Lee"); Student..
ArrayList와 주요 메서드 처음에 생성하면, default로 10개를 만들고 add() 메서드를 이용하여 요소를 추가하면 그 때 공간을 늘린다. package Basic_Grammar.chap2.ch23.ArrayList; import java.util.ArrayList; public class ArrayListTest01 { public static void main(String[] args) { ArrayList library=new ArrayList(); library.add(new Book("태백산맥1","조정래")); library.add(new Book("태백산맥2","조정래")); library.add(new Book("태백산맥3","조정래")); library.add(new Book("태백산맥4","조정래")); l..
2차원배열 선언, 초기화, 중첩 for문 타입[][] 변수명=new 타입[행갯수][열갯수] ex) package Basic_Grammar.array; public class ArrayTest03_이차원배열 { public static void main(String[] args) { int[][] arr={{1,2,3},{11,12,13,14}}; // new int[i][j] i는 행의 길이(3) j는 열의 길이(4) int i, j; for (i = 0; i< arr.length ; i++) { for ( j = 0; j < arr[i].length; j++) { System.out.println(arr[i][j]); } } } } 실행결과
배열 복사(System.arrayCopy 주소값이 복사된다) System.arrayCopy(src,srcPos,dest,destPos,length) src : 배열 dest : 복사할 배열 srcPos : 복사시작할 index destPos : 복사시작할 index length : 복사할 길이 package Basic_Grammar.array; import Basic_Grammar.array.practice01.book.Book; public class ArrayTest02_copy { public static void main(String[] args) { // System.arrayCopy(src,srcPos,dest,destPos,length) Book[] library=new Book[5]; library[0]=new Book("태백산맥1","조정래"); ..
객체 배열 선언과 구현, 실습(Book 클래스 생성) 객체 배열을 선언하면 클래스타입[] 변수명=new 클래스타입[방갯수]; ex)Book[] library=new Book[5]; -> 이렇게 선언하면 객체의 방에 null값이 담기도록 선언된다. 즉, 기본 자료형 배열의 경우, 선언과 동시에 배열의 크기만큼 메모리가 할당된다. 하지만, 객체 배열의 경우엔 요소가 되는 객체의 주소가 들어갈(4바이트, 8바이트) 메모리만 할당되고(null), 각 요소 객체는 생성하여 저장 package Basic_Grammar.array.practice01.book; public class BookTest { public static void main(String[] args) { Book[] library=new Book[5]; library[0]=new Book("태백산맥..
array (for, 향상된for) 실습1 [] package Basic_Grammar.array; public class ArrayTest02_practice { public static void main(String[] args) { int[] arr1=new int[5]; int total=0; for (int i = 0,num=0; i 결과 10이 출력된다. package Basic_Grammar.array; public class ArrayTest02_practice2 { public static void main(String[] args) { char[] alphabets=new char[26]; char ch='A'; for (int i = 0; i < alphabets.length; i++) { alphabets[i]=ch++; } fo..