인터페이스 인터페이스란? 자바에서는 클래스를 통한 다중 상속은 지원하지 않지만 인터페이스를 통해 다중 상속을 지원한다. 인터페이스는 일종의 추상클래스로 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화의 정도가 더 높아 추상메서드와 상수만을 가질 수 있다. 인터페이스를 정의하는 방법 클래스의 작성하는 방법과 같으며 class대신 interface를 사용한다. 클래스와 달리 모든 멤버는 public static final이어야 한다. 모든 메서드는 public abstract이어야 하며 생략 가능하다. 단 static메서드와 default메서드는 예외이다(JDK 1.8부터) interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개.. 연산자 산술 연산자 산술 연산자는 사칙 연산자와 나머지 연산자가 있으며 연산자의 우선순위는 곱셈(*), 나눗셈(/),나머지(%)가 덧셈(+) 뺄셈(-) 연산자보다 높다. public static void main(String[] args) { int a = 10; int b = 4; float c = 4.0; System.out.println("a + b = " + (a + b)); //14 System.out.println("a - b = " + (a - b)); //6 System.out.println("a % b = " + (a % b)); //40 System.out.println("a * b = " + (a * b)); //2 System.out.println("a / b = " + (a / b)); .. 패키지 package 패키지는 서로 관련이 있는 클래스와 인터페이스의 묶음이다. 패키지 사용의 장점 서로 관련 있는 클래스나 인터페이스를 디렉토리로 묶어 효율적인 관리가 가능하다. 패키지마다 독립적인 이름 공간을 가지기 때문에 다른 패키지에 있는 동일한 클래스의 이름과 충돌하지 않는다. 패키지별로 접근제어를 할 수 있다. 패키지 명명 규칙 대,소문자를 모두 사용 가능하지만 클래스명과 구분하기 위해 소문자만 사용한다. 모든 클래스는 반드시 하나이상의 패키지에 포함되어야 한다. 패키지를 선언하지 않고도 문제가 없었던 이유는 이름없는 패키지 때문 java로 시작하면 안 된다. import 클래스를 다른 파일에서 사용하기 위해 패키지명이 포함된 클래스의 풀네임을 사용해야 한다. 그러나 이는 매우 불편하기 때문에 imp.. 데이터타입, 변수, 배열 변수의 타입 값의 범위 프리미티브 타입 자바에서는 자료형은 크게 기본형(primitive type)과 참조형(reference type)으로 나눌 수 있으며 그중에서 기본형은 실제의 값을 저장하고 연산에 사용되며 8개의 타입이 존재합니다. 레퍼런스 타입 참조형은 실제로 값이 저장되어있는 주소를 저장 값으로 클래스, 인터페이스, 배열, enum등이 있습니다. public static void main(String[] args) { String str = new String("Hello"); } str이라는 변수명의 String 클래스가 있고 new 키워드를 통해 객체를 인스턴스화 하였습니다. 이때 str의 변수에는 힙 영역에 저장된 객체의 주소 값이 저장됩니다.. 리터럴 리터럴은 변수나 상수에 저장되는 값.. 상속 상속이란? 상속이란 기존의 클래스를 재사용하여 새로운 클래스를 만드는 것으로 객체지향 프로그래밍에서 중요한 특징 중 하나입니다. 상속을 해주는 클래스를 부모 클래스나 상위 클래스라고 하고 상속받는 클래스를 자식 클래스, 하위 클래스라고 합니다. 상속의 특징 코드의 재사용성을 높이고 중복 코드를 줄여 생산성이 좋아집니다. 자식 클래스는 부모클래스의 모든 멤버를 상속받는다. 생성자와 초기화블럭은 상속되지 않으며 멤버만 상속된다. 다중 상속을 지원하지 않는다. public class Parent { String name; int age; public Parent(String name, int age) { this.name = name; this.age = age; } //getter setter 생략 publ.. JVM이란? JVM이란 무엇인가? JVM은 Java Virtual Machine의 약자로 자바 바이트 코드를 OS에 맞게 해석하여 실행하게 해주는 역할을 합니다. 즉 사용자의 OS에 종속적이지 않고 어떤 OS를 사용하든지 JVM이 설치되어 있다면 프로그램의 변경 없이 실행이 가능합니다. JVM의 구성 JVM은 다음과 같이 구성됩니다. 자바 인터프리터(interpreter) 컴파일러에 의해 변경된 바이트코드를 읽고 해석하는 역할 클래스 로더(class loader) 동적으로 클래스를 로딩해주는 역할 JIT 컴파일러(Just-In-Time compiler) 컴파일러에 의해 생성된 바이트 코드를 런타임에 기계어로 변환하는 역할 가비지 컬렉터(garbage collector) 사용하지 않는 메모리를 자동으로 회수하여 자원관.. 클래스 클래스란 '객체를 정의해 놓은 것' 또는 '객체의 틀 또는 설계도'라고 정의하며 클래스에 선언하고 정의한 대로 객체를 생성하는 데 사용합니다. 객체와 인스턴스 객체는 실제로 존재하는 사물이나 개념을 의미하며 클래스에 정의된 내용을 기반으로 객체를 생성합니다. 이 과정을 인스턴스화라하며 메모리에 할당된 객체를 인스턴스라고 합니다. 클래스를 정의하는 방법 클래스를 선언할때는 class 키워드를 사용하여 정의하며 아래와 같이 선언합니다. 접근제어자 class 클래스이름 { //필드, 메소드 등등 }접근 제어자를 통해 외부에서 클래스에 접근할 수 있는지 제어를 할 수 있고 클래스의 이름은 파스칼 표기법을 따라 첫 문자는 대문자로 시작한다. 그리고 클래스 내부에 필드와 메소드등을 정의.. null과 undefined의 차이 null과 undefined 이 두 타입의 값은 자바스크립트를 사용할 때 조심히 사용해야 하는 값들이다. 둘 다 변수에 값이 없음을 나타내는데 둘의 의미는 다르다. null null은 자바스크립트의 primitive 값 중 하나로 null 또는 빈 값을 표현한다. 클로저를 이해하려면 자바스크립트의 렉시컬 스코프를 이해해야 하는데 자바스크립트는 컴파일 단계에서 소스코드 문자열을 분석하여 의미를 부여하는 렉싱이라는 작업을 하게 되고 이때 스코프가 된다. //정의된 적도 없고 초기화된 적도 없음 foo; // ReferenceError: foo is not defined //foo는 존재하지만, 값과 타입이 없다. let foo = null; console.log(foo); // null console.lo.. 이전 1 ··· 4 5 6 7 8 9 10 ··· 12 다음