Java/Java 기본 및 이론
-
자바 상속Java/Java 기본 및 이론 2021. 3. 7. 22:55
자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 상속이란 기반이 되는 상위 클래스의 특성을 하위 클래스에게 적용하고, 거기에 더해 필요한 특성을 추가 확장하는 방식을 말한다. 상속의 목적은 기존 기능의 확장과 코드의 재사용이다. 상속의 장점 하위클래스에 상위 클래스를 extend 만 하여도 코드가 자동적으로 재사용된다는 것이며, 확장성을 위해 변경하여야 할 부분의 로직만 overiding을 사용하여 재정의도 가능하다. 상속 시 단점 상속을 사용하여 코드를 재사용하느 경우에는 기존 상위 클래스가 어떻게 작성되었는지 고려해야 한다. 상속의 특성상 상위 클래스와 하위 클래스가 결합상태..
-
[Java] 자바 클래스 와 객체 및 키워드Java/Java 기본 및 이론 2021. 1. 17. 20:05
클래스 정의하는 방법 객체 만드는 방법 (new 키워드 이해하기) 메소드 정의하는 방법 생성자 정의하는 방법 this 키워드 이해하기 클래스란 클래스는 쉽게 설명하면 객체를 만들기 위한 틀 붕어빵은 하나의 객체로 이를 만들기 위한 붕어빵틀은 하나의 클래스로 설명할 수 있다. 이런 클래스는 class라는 키워드로 정의되며 각각 변수(속성)와 메서드(행위)를 가지게 된다. 클래스 요소 필드(field) - 필드는 해당 클래스 객체의 상태 속성을 나타내며, 멤버 변수라고도 불린다. 여기서 초기화하는 것을 필드 초기화 또는 명시적 초기화라고 한다. 인스턴스 변수 - 이름에서 알 수 있듯이 인스턴스가 갖는 변수이다. 그렇기에 인스턴스를 생성할 때 만들어진다. 서로 독립적인 값을 갖으므로 heap 영역에 할당되고 ..
-
[Java] 자바 기본 제어문 - 선택문, 반복문Java/Java 기본 및 이론 2021. 1. 11. 12:45
제어문 Java에서 코드는 위에서 아래 순으로 읽고 실행된다. 모든 일을 순차적으로 실행할 수 있다면 아무런 상관이 없겠지만, 어떤 코드를 반복해야 될 수도 있고 어떤 코드는 건너뛰는 등의 순서를 변경해야 되는 일이 발생한다. 이 때, 제어문을 사용하여 코드 실행 흐름을 제어할 수 있다.이러한 제어문은 선택문(if-then, if-then-else, switch)과, 반복문(for, while, do-while), 분기문(break, continue, return)으로 나뉜다. 선택문(Decision-making Statement) if-then if-then 문은 가장 기본적인 제어문중 하나로 지정한 조건이 만족할 시에 지정한 블록({}) 안에 있는 코드가 실행된다. if(조건식) { // 한 줄일 경..
-
[Java] junit5 설명 및 기본 사용 - junit4 와 5 비교Java/Java 기본 및 이론 2021. 1. 11. 11:55
JUnit 5란 문서에서는 JUnit 5는 크게 세가지 서브 프로젝트의 여러 모듈로 구성이 되어있다고 한다. JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintag -e Junit Platform JVM에서 테스트를 하기 위한 기초적인 역할을 담당 테스트를 하기 위한 TestEngine API 제공 JUnit 4(하위 버전) 기반 테스트 제공 Junit Jupiter JUnit 5에서 테스트 및 확장하기 위한 프로그래밍 모델과 확장 모델의 조합이다. Platform에서 사용하는 TestEngine은 Jupiter를 통해 제공하는 것이다. Jupiter API 는 Junit5 에 새롭게 추가된 API 들을 포함하고 있다. Junit Vintage 하위 버전들(J..
-
[Java] 자바의 연산자Java/Java 기본 및 이론 2021. 1. 7. 15:43
목표 자바가 제공하는 다양한 연산자를 학습하세요. 학습할 것 산술 연산자 비트 연산자 관계 연산자 논리 연산자 instanceof assignment(=) operator 화살표(->) 연산자 3항 연산자 연산자 우선 순위 (optional) Java 13. switch 연산자 산술 연산자 Binary Operator(이항) +, -, *, /, %(Modulo) ArithmeticException 발생 가능 Divide by zero Modulo by zero 비트 연산자 Binary Operator(이항) &(AND) |(OR) ^(XOR) >> (right SHIFT) >> (unsigned right SHIFT) : 비트값을 오른쪽으로 이동한 이후 왼쪽 공간은 모두 0로 채움, C/C++ 에 없음..
-
[Java] 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법Java/Java 기본 및 이론 2021. 1. 3. 19:18
목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다. 학습할 것 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 프리미티브 타입 종류와 값의 범위 그리고 기본 값 타입 할당되는 메모리 크기 기본값 데이터의 표현 범위 논리형 boolean 1 byte false true, false 정수형 byte 1 byte 0 -128 ~ 127 short 2 byte 0 -32,768 ~ 32,767 int(기본) 4 byte 0 -2,147,483,648 ~ 2,147,483,647 -2^{31} ~ 2^{..
-
[Java] 자바 UnsupportedClassVersionError 원인 (javac -target)Java/Java 기본 및 이론 2020. 12. 28. 16:54
1. java.lang.UnsupportedClassVersionError 발생 원인 Unsupported major.minor version 52.0 Java SE 15 = 59 (0x3B hex), Java SE 14 = 58 (0x3A hex), Java SE 13 = 57 (0x39 hex), Java SE 12 = 56 (0x38 hex), Java SE 11 = 55 (0x37 hex), Java SE 10 = 54 (0x36 hex), Java SE 9 = 53 (0x35 hex), Java SE 8 = 52 (0x34 hex), Java SE 7 = 51 (0x33 hex), Java SE 6.0 = 50 (0x32 hex), Java SE 5.0 = 49 (0x31 hex), JDK 1...
-
[JAVA] JVM 구조Java/Java 기본 및 이론 2020. 12. 27. 21:21
JVM은 자바 가상머신으로 자바 바이트코드를 실행 할 수 있는 주체로 JVM 덕분에 CPU나 운영체제(플랫폼)과 독릭접으로 동작 가능하다. JVM은 크게 Class Loader,GC, Runtime Data Area, Excute engine 세가지로 나뉜다 JVM 구성요소 1. Class Loader 컴파일된 자바 바이트코드를 Runtime Data Area 영엑에 로드한다. 자바 컴파일러가 ,java 파일을 컴파일하면 .class 파일 을 만드는데, 이게 바로 바이트코드이고 이걸 데이터영역에 로드하는 것이다. javac 가 바이트코드로 컴파일을 하게 되는데 이건 jdk 에 있는 기능이다. JRE 는 실행환경이기 때문에 컴파일 기능이 없다. 자바 9 이후 부터는 JRE 가 따로 제공되지 않는다. 2. ..