1. 인터페이스 정의하는 방법 일종의 추상 클래스 추상메서드와 상수만 멤버로 가질 수 있음,일반 메서드 또는 멤버 변수를 구성원으로 가질 수 없음 interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름 (매개변수목록); } 모든 멤버 변수는 public static final 이어야하며, 생략 가능 모든 메서드는 public abstract 이어야하며, 생략 가능 (static메서드와 default 메서드는 예외 JDK1.8부터) 2. 인터페이스 구현하는 방법 추상 클래스처럼 그 차제로는 인스턴스를 생성할 수 없음 '구현한다' 의미의 implements 사용 class 클래스 이름 implements 인터페이스이름 { // 인..
1. package 키워드 클래스의 묶음, 관련된 클래스끼리 그룹으로 묶어서 관리 서로 다른 패키지에 존재하도록함 -> 다른 개발자의 라이브러리의 클래스 이름 충돌을 막음 하나의 소스파일에는 첫번째 문장으로 단 한번의 패키지 선언만을 허용 모든 클래스는 반드시 하나의 패키지에 속해야함 패키지는 점(.)을 구분자로 하여 계층 구조로 구성할 수 있음 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리임 소스 파일의 첫번째 문장 주로 소문자 패키지 지정하지 않는 경우 unnamed package로 지정됨 컴파일 시 -d 옵션 추가 : 지정된 패키지와 일치하는 디렉토리가 존재하지 않는다면 자동으로 생성 package 패키지명; 2. import 키워드 사용하고자 하는 클래스의 패키지를 미리..
1. 자바 상속의 특징 class Child extends Parent { // ... } 단일 상속만을 허용 -> 클래스 간의 관계가 명확해지고 코드의 신뢰성이 높아짐 C++에서는 다중 상속 허용 다중 상속을 받으면 클래스 간의 관계가 복잡해짐, 다른 클래스로 부터 상속 받은 멤버의 이름이 같은 경우 구분이 불가능함 자손 클래스는 조상의 멤버를 모두 상속 받는다. 생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다 자손클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다 class TVCR extends TV, VCR { // 에러, 하나만 허용됨 // ... } 2. super 키워드 조상 클래스로부터 상속받은 멤버를 참조 상속 받은 멤버와 자신의 클래스에 정의된 멤버의 이름이 같을 때 sup..
1. 클래스 정의하는 방법 class Tv { // class 클래스명 String color; // 변수, 속성 boolean power; void power(); // 메서드, 기능 void channelup(); } 2. 객체 만드는 방법 (new 키워드 이해하기) 클래스(객체를 정의해 놓은 것, 객체를 생성하는 데에 사용) -----인스턴스화-----> 인스턴스(객체) 클래스명 변수명; 변수명 = new 클래스명(); Tv t; t = new Tv(); 3. 메소드 정의하는 방법 int add (int x, int y) { int result = x + y; return result; } 반환타입 메서드이름 (매개변수 선언) { return // 결과를 반환 } 매개변수 선언 : 메서드가 작업을 ..

1. 선택문 1. if 문 if(조건식) { // 조건식이 true 일 때 수행됨 } true 일때 실행할 내용이 한줄인 경우 괄호{}를 생략할 수 있다. if(조건식) { // 조건식이 true 인 경우 } else { // 조건식이 false 인 경우 } if(조건식1){ //조건식1 true 인 경우 } else if (조건식2) { //조건식2 true 인 경우 } else if (조건식3) { //조건식3 true 인 경우 } else { //위 조건이 전부 false 인 경우 } true 인 조건을 만나면 해당 블럭의 내용을 수행 한 후 if-else 문 전체를 빠져 나온다. if (조건식1) { if (조건식2) { // 조건식1 true, 조건식2 true } else { // 조건식1 t..
1. 산술 연산자 + - * / % > 사칙연산, 나머지 연산 연산자의 우선순위에 의해서 연산순서가 결정됨 쉬프트 연산자( 이진수로 표현한 후 각자리를 아래 표와 같이 연산함 x y x|y x&y x^y 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 x ~x 1 0 0 1 8 b ? a : b; } (int a, int b ) -> { return a > b ? a : b; } return 대신 식(expression) 으로 대신 할 수 있음 (int a, int b) -> a > b ? a : b 추론이 가능한 경우는 매개변수 타입도 생략 가능 (a, b) -> a > b ? a : b 매개 변수가 하나인 경우에 괄호 생략 가능 a -> a * a 중괄호 안의 문장이 retur..
프리미티브 타입과 레퍼런스 타입 프리미티브 타입 : 스택 메모리에 바로 실제 값을 저장 null 이 존재하지 않음 레퍼런스 타입 : 힙 메모리에 값이 저장된 곳의 주소 값을 저장, 객체의 주소를 저장 null 이 존재함 8개의 기본형을 제외한 나머지 타입 클래스 이름 = 참조 변수의 타입 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입 종류 범위 기본값 boolean 1byte 논리형 true, false false char 2byte 문자형 '\u0000' ~ '\uffff' '\u0000' byte 1byte 정수형 -128 ~ 127 0 short 2byte 정수형 -32768 ~ 32767 0 int 4byte 정수형 -2147483648 ~ 2147483647 0 long 8b..
Java application의 실행 과정 자바파일 (.java) -> java compiler -> byte code byte code -> JVM -> OS 실행 컴파일 하는 방법 javac HelloWorld.java 바이트코드란 무엇인가 JVM 이 이해할 수 있는 언어 자바 코드(.java)를 자바 컴파일러가 바이트 코드(.class)로 만듦 실행하는 방법 java HelloWorld JVM이란 무엇인가 JVM (Java Virtual Machine) 자바를 실행하기 위한 가상 기계 자바 프로그램 실행 시에 OS 가 프로그램을 이해할 수 있게 해석해 줌 런타임 시에 하드웨어에 맞게 해석함 자바 프로그램이 다양한 OS 위에서 실행 될 수 있게 해줌 -> 자바 프로그램은 OS 맞추어서 따로 개발할 필..