목록til/Java (27)
min's devlog
C와 Java의 차이점? C는 운영체제에 종속적이다. 소스파일을 -> 기계어(1,0)로 된 프로그램으로 컴파일한다. Java는 운영체제에 독립적이다. 또한 두번의 컴파일 과정을 거친다. JDK 폴더 - bin : binary 파일. 이진파일 > 실행파일 > 프로그램 -주로 쓰는 도구 : java.exe, javac.exe, javadoc.exe Hello World! 1. 메모장에 작성한 코드 - 산출물(결과물) > "Hello.java" > Source Code File - 소스파일은 프로그램이 아닌 텍스트 파일이다. - 프로그래밍 코드를 작성 > 프로그램 완성 > CPU에게 명령어 전달! - 어떤 언어로 구성? > 자바(X) > 사람이 쓰는 언어로 구성(인간) - 소스 파일의 명령어의 실행 주체 > ..
제네릭(generic) - 데이터의 타입(data type)을 일반화(generalize) 하는 것 - 클래스나 메소드에서 사용할 데이터 타입을 컴파일 시에 미리 지정하는 것 - 객체의 타입 안정성을 높일 수 있다. - 컴파일 할 때 타입이 미리 정해지므로, 형 변환같은 번거로운 작업을 생략할 수 있다. 사용 class MyArray { T element; void setElement(T element) { this.element = element; } T getElement() { return element; } } - T는 타입변수로, 임의의 참조형을 의미 (다른 문자 사용 가능) - 메소드의 매개변수나 반환값으로도 사용할 수 있다. MyArray myArr = new MyArray(); - 제네릭 ..
다차원 배열 - 배열의 논리적 메모리 구조가 2차원 이상의 형태를 보이는 배열 - 일차원 배열만으로는 표현할 수 있는 것의 한계가 생긴다. private static void m1() { //1차원 배열 int[] nums1 = new int[3]; //2차원 배열(테이블) int[][] nums2 = new int[2][3]; //2(행), 3(열) //3차원 배열 int[][][] nums3 = new int[2][2][3]; //2(면), 2(행), 3(열) //배열 요소 접근(방번호 매기기) //1차원 배열 nums1[0] = 100; nums1[1] = 200; nums1[2] = 300; //2차원 배열 > 차원 2개 > 첨자 2개 nums2[0][0] = 100; nums2[0][1] = 2..
인터페이스(interface) - 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 중간 매개체 역할을 하는 일종의 추상 클래스 - 자바는 인터페이스를 통해 다중 상속을 지원한다. - 클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등 여러 가지 문제가 발생할 수 있어 클래스를 통한 다중 상속은 지원하지 않는다. * 자바에서 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있지만, 인터페이스는 오로지 추상 메소드와 상수만을 포함한다. 인터페이스 선언 접근제어자 interface 인터페이스명 { public static final 타입 상수명 = 값; public abstract 메소드명(매개변수목록); .. } - 클래스를 작성하는 방법과 같지만 inter..
추상 메소드(abstract method) - 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드 - 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기위해 사용한다. - 자신에게 필요한 부분만을 재정의하여 사용하면 코드 중복이 줄어 생산성이 향상되고, 배포 등이 쉬워진다. - 추상 메소드에서 구현부가 작성되어있지 않기 때문에 구현부는 자식 클래스에서 오버라이딩해 사용한다. 추상 클래스(abstract class) - 하나 이상의 추상 메소드를 포함하는 클래스 abstract class Car { public String name; //일반 멤버 변수 public void move() { …} // 일반 메소드 abstract void stop(); //..