언어/Java
-
[Java] 추상클래스언어/Java 2021. 1. 9. 20:28
객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상 클래스라고 합니다. 추상 클래스와 실체 클래스는 상속의 관계를 가지고 있습니다. 추상 클래스가 부모, 실체 클래스가 자식으로 구현되어 실체 클래스는 추상 클래스의 ㅁ든 특성을 물려받고 추가적인 특성을 갖습니다.용도필드와 메소드의 이름 통일실체 클래스를 설계하는 사람이 여러 사람일 경우, 실체 클래스마다 필드와 메소드가 제각기 다른 이름을 가질 수 있습니다. 예를 들어 소유자의 이름을 저장하는 필드를 Telephone 클래스에서는 owner라 하고 Smartphone 클래스에서는 user라 할 수 있습니다. 또한 전원을 켜는 메소드를 turnOn()이나 powerOn()으로 지을 수도 ..
-
[Java] 다형성과 타입 변환언어/Java 2021. 1. 9. 17:44
다형성(Polymorphism)다형성은 동일한 방법으로 메소드를 실행하지만 실행 결과는 다양하게 나오도록 하는 성질입니다. 예를 들어 자동차가 타이어를 사용하는 방법은 동일하지만 어떤 타이어를 사용하느냐에 따라 성능이 달라질 수 있습니다.다형성을 구현하려면 메소드 재정의와 타입 변환이 필요합니다.자동 타입 변환자동 타입 변환은 클래스, 필드, 매개 변수에서 발생합니다.클래스클래스의 변환은 상속 관계에 있는 클래스 사이에서도 발생합니다. 자식은 부모 타입으로 자동 타입 변환이 가능합니다.자동 타입 변환[부모 타입] 변수 = [자식타입]; public class Car { } public class Volvo extends Car { } // 1 Car volvo = new Volvo(); // 2 Volv..
-
[Java] method언어/Java 2021. 1. 1. 20:25
메소드의 매개 변수에 ... 의미메소드에서 매개 변수가 얼마나 들어올 지 모를 때, ...으로 표현합니다.public void test(int... i) { i[0] // 1 } public void test1() { test(1); test(new int[] {1,2,3}); }return type이 void에서 return;의 의미return type이 void 에서 return을 사용할 수 있는데 이 의미는 어떤 값을 반환하는 것이 아니라 해당 메소드를 바로 종료하는 의미입니다.public void test() { int i = 0; while (true) { if (i == 5) return; // i가 5인 경우, 해당 메소드를 빠져나감 i++; } }오버로딩클래스 내 같은 이름의 메소드를 여러..
-
[Java] enum언어/Java 2021. 1. 1. 19:51
enum(열거) 타입은 소스 파일을 생성하고 해당 파일에 작성을 진행합니다. 소스 파일이나 enum 타입 이름은 관례적으로 단어의 첫 글자는 대문자로 지정하고 enum의 상수는 전부 대문자로 연결하고 여러 단어는 언더바(_)로 연결합니다. enum(열거) 타입은 아래와 같이 선언합니다.package com.company; public enum Member { LOGIN_SUCCESS, LOGIN_FAILED // 세미콜론 생략가능 } enum 타입은 참조타입이기 때문에 null을 할당할 수 있습니다.Member success = Member.LOGIN_SUCCESS; Member failed = null; 위 설명과 같이 enum 상수는 각각이 객체로 생성이라서 힙 영역에 생성이 되고 메소드 영역에서 생..
-
[Java] 배열(Array)과 리스트(List)언어/Java 2020. 12. 28. 20:37
배열index(식별자)와 값으로 구성배열은 크기를 정의하고 변경할 수 없음초기 정의된 크기대로 연속된 메모리 공간을 가짐논리적 저장 순서와 물리적 저장 순서가 일치장점메모리 공간이 연속적이여서 관리가 편리함인덱스를 사용해 검색이 빠름단점초기 크기 지정(컴파일) 이후, 변경이 되지 않음만약 데이터가 삭제된다면 빈 공간으로 남아있게 되어 낭비가 생김예시int[] i = {1, 2, 3}; // 초기 선언 int[] i; i = new int[] {1, 2, 3}; // i = {1, 2, 3} 은 컴파일 에러 발생 int[] i = new int[3]; // 초기값 0으로 5 크기의 배열 생성 i[0] = 1; i[1] = 2; int i[]; // C언어 스타일리스트동적으로 크기 할당이 가능장점포인터가 다..
-
[Java] 참조 타입과 참조 변수언어/Java 2020. 12. 27. 20:44
기본 타입과 참조 타입자바는 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 분류됩니다. 데이터 타입기본 타입참조 타입정수 타입 배열 타입byte열거 타입char클래스short인터페이스int long 실수 타입 float double 논리 타입 boolean 기본 타입은 실제 값을 변수에 저장하지만 참조 타입은 메모리의 주소값을 변수 안에 저장합니다.기본 타입 변수int a = 10; 참조 타입 변수String n = "abcd"; 메모리에서 이 변수들이 갖는 값을 그림으로 표현하면 아래와 같습니다.메모리 사용 영역JVM은 운영체제에서 할당 받은 메모리 영역을 아래와 같이 구분해서 사용합니다.메소드 영역메소드 영역은 JVM이 시작할 때 생성되고 모든 스레드가 공유..
-
[Java] 증감 연산자언어/Java 2020. 12. 27. 17:59
증감 연산자는 변수의 값을 증가(++)나 감소(--) 하는 연산자입니다. 해당 연산자는 ++num이나 num++ 와 같이 사용되는데 차이는 아래와 같습니다. 연산자설명++ (또는 --)피연산자다른 연산을 시작하기 전에 피연산자의 값을 증가 또는 감소피연산자++ (또는 --)다른 연산을 수행한 후에 피연산자의 값을 증가 또는 감소 연산식에서 증감 연산자만 사용하면 증감 연산자의 위치는 어디든 상관이 없습니다.++i; i++; // 모두 i = i + 1;로 동일 하지만 다른 연산자와 함께 사용되면 위치에 따라 결과가 다르므로 주의해야 합니다.var x = 1; var y = 1; var r = ++x + 10; var r1 = y++ + 10; // 12 // 11 위 연산 과정은 아래와 같습니다.++x ..
-
[Java] 타입 선언언어/Java 2020. 12. 26. 20:12
정수 타입타입메모리크기범위byte1 byte8 bit-2⁷ ~ (2⁷ - 1)-128 ~ 127short2 byte16 bit-2¹⁵ ~ (2¹⁵ - 1)-32,768 ~ 32,767char2 byte16 bit0 ~ (2¹⁶ - 1)0 ~ 65535 (유니코드)int4 byte32 bit-2³¹ ~ (2³¹ - 1)-2,147,483,648 ~ 2,147,483,647long8 byte64 bit-2⁶³ ~ (2⁶³ - 1)-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807int2진수0b 또는 0B로 시작하고 0과 1로 구성0b1011 → 110b10100 → 208진수0으로 시작하고 0 ~ 7로 구성013 → 110206 → 13410진수소수점이 없는 0..
-
[Java] 타입 변환언어/Java 2020. 12. 26. 20:12
자동 타입 변환자바에서는 값의 허용 범위가 작은 타입에서 큰 타입으로 저장될 때 자동으로 타입이 변환됩니다.허용 범위 순서byte int long var3 = 100000000L; float var4 = var3; // 1.0E8f double var5 = var3; //1.0E8 char var6 = 'A'; int var7 = var6; // 65 byte var8 = 65; char var9 = var8; // char는 음수를 허용하지 않으므로 컴파일 에러강제 타입 변환허용 범위가 큰 타입에서 작은 타입으로 변환하고자 할 때엔 강제로 지정을..