면접을 위한 Java등 기본 정리
고급 언어
高級言語(こうきゅうげんご)
저급 언어
低級言語(ていきゅうげんご)
Java API란?
- 개발에 필요한 기능들을 미리 작성하고 compile 해서
開発に必要な機能を予め作成した後、コンパイル
- 서로 관련된 Class를 Class Libaray로 묶어놓은 Package
お互いに関連があるClassをClass Libraryに纏めた(まとめた)Package
JVM JRE JDK
JDK(Java Development Kit)
- 자바 개발 키트
Java 開発 キット
- JRE, javac 등의 컴파일러, 디버거 등을 포함하는 프로그램
JRE, javacなどのCompiler、Debuggerなどを含めているプログラム。
JRE (Java Runtime Environment)
- 자바 실행 환경
Java 実行(じっこう) 環境
- JVM 동작을 위해 필요한 각종 라이브러리를 담고 있음.
JVM 動作(どうさ)をために必要な各種(かくしゅ)Libraryを含めている。
JVM (Java Virtual Machine)
- 자바 가상 머신
Java仮想マシン
이 JVM 안에는
こんだJVMの中には
- Class Loader System
- Execution Engine
- Garbage Collector
- Runtime Data Area
가 있다.
がある。
Garbage Collector(이하 GC)
GC의 영역
GCの領域
- Young(ヤング)
> Eden(エデン)
> Survivor 0(サバイバー 0)
> Survivor 1(サバイバー 1)
- Old(オールド)
- Permanent (パーマネント)
거의 사용되지 않으며 JDK 8부터는 이 영역이 사라졌음.
あまり使わなくて、JDK8からはこの領域がなくなる。
GC의 종류
GCの種類
- Minor GC(マイナー GC)
- Major GC(メージャー GC)
- Full GC(フル GC)
GC란 무엇인가
GCとは何ですか。
> Java의 Heap 영역에서 쓸모없어진 데이터(더이상 참조하지 않는 데이터)를 지우는 것
JavaのHeapの領域で仕方がないデータを削除すること
GC는 언제 작동하는가
GCはいつ作動するか。
>메모리가 꽉 차면. 단 모든 메모리를 탐색하면 힘들기에, 영역별로 관리한다.
メモリーに十分なスペースがない状況に。
ただ、全てのメモリーのスペースを探索(たんさく)すれば時間の問題があるので、(非効率的なので)
領域別に管理する。
원시 데이터 타입(Primitive Data Type)과 참조 데이터 타입(Reference Data Type)
基本データタイプ と 参照(さんしょう)データタイプ(リファレンスデータタイプ)
Runtime Data Area
- Method Area(Class Area, Static Area) : static 부분이 여기를 담당
staticの部分がこの領域を担当する
- Stack Area
각 Thread마다 하나씩 존재하며, 스레드가 시작될 때 할당됨. 사이즈가 정해져 있음.
それぞれのThreadごとに 一つに存在して、Threadが始まった時、割り当て(わりあて)られる。
サイズが決まっている。
기본 타입 변수는 스택 영역에 직접 값을 가지고 있지만,
Primitive Type Variableは stackの領域に直接に 結果(値、あたい)をもっているのが、
참조 타입 변수는 값이 아니라 힙 영역이나 메서드 영역의 객체주소를 가짐.
Reference Type Variableは (値、あたい)ではなく、Heapの領域とかMethodの領域のアドレスをもっている。
- Heap Area : 사이즈가 가변적임, Garbage Collection의 대상이 되는 영역.
サイズが可変的(かへんてき)。GCの対象になる領域。
인스턴트, 객체, 배열 등을 동적으로 저장. Thread끼리 공유.
インスタント、客体(きゃくたい),配列(はいれつ)などを 動的(どうてき)に貯蔵(ちょぞう)する。
Threadどうしに共有(きょうゆう)。
- Native Method Area : 타 언어(C, C++ 등)를 담당하는 메모리 스텍.
他の言語を担当するメモリーステック。
- PC Register Area: Thread 가 생성될 때마다 생기는 공간.
Threadが作れる時度に、つくれるスペース。
스레드가 실행되는 부분의 주소와 명령을 저장.
実行される部分のアドレスと命令を保存する。
스레드를 돌아가면서 수행할 수 있게 해준다.
Primitive Data Type
정수형(整数型、せいすうがた) byte, short, int, long(1, 2, 4, 8)
실수형(実数型、じっすうがた) float, double(4, 8)
문자형(文字型、もじがた) char(2)
논리형(論理型、ろんりがた) boolean(1)
접근지정자(Access Modifier, Access Controller, Access Specifier)
アクセス指定者(していしゃ)、アクセス制御者(せいぎょしゃ)
- 이걸 통해 멤버 변수나 멤버 메서드의 호출범위를 제한할 수 있음.
- 정보의 은닉성, 캡슐화.
情報隠匿(いんとく)カプセル化(カプセルか)
1. 보안(保安)
2. 효율성(効率性)
3. 캡슐화(Encapsulation)
private : 클래스 내부에서만 작동 가능
クラスの中だけで作動ができるように制限(制限)
(default) : 같은 package 내의 다른 클래스는 사용 가능.
同じパッケージの中での他のクラスでは利用可能。
그러나 다른 패키지나, 상속 관계의 다른 패키지에서는 작동 X.
しかし、他のパッケージや継承(けいしょう)関係の他のパッケージには作動しない。
protected : 다른 패키지에서 작동 X
ほかのパッケージでは作動しない。
public : 모든 클래스, 모든 패키지에서 작동 가능
全てのクラス、全てのパスワードで作動できる。
String : immutable, 문자열 변경 빈번X
immutable
よく変更しないデータについてよく使用。
でも最近はパソコンの性能が良くて、Stringで値をよく変更する時もかなりある。
StringBuffer : mutable, 문자열 변경이 빈번히 발생될 때 StringBuffer를 자주 사용함.
mutable, よく値を変更する場合、StringBufferをよく使う。
동기화에서 안전함.(Thread-Safe)
同期化で安全
StringBuilder : 동기화에서 불안전하나, 속도는 StringBuffer보다 빠름.
同期化で不安全、でも速度はStringBufferより速い。
StringTokenizer: 문자열 분리를 위해 사용. 値を分離(ぶんり)するために使う。
static은 필드나 메서드에 붙일 수 있고,
이를 붙이면 ‘공유해서’ 사용하게 된다.
목적 : 데이터 공유, 유틸성이 있는 메서드나 변수를 만들기 위해서.
staticはフィールドやメソッドに付けることができ、
これを付けると「共有して」使用することになる。
目的 : データ共有、ユーティリティのあるメソッドや変数を作るため。
Final
클래스, 메서드, 변수 등에 사용되며, 사용하면 상수가 된다.
final을 쓰면 오버라이딩이 안되고 클래스에 final을 쓰면 상속이 안된다.
final
クラス、メソッド、変数などに使われ、使用すると定数となる。
finalを使うとオーバーライディングができず、クラスにfinalを使うと継承(けいしょう)ができない。
자료구조
“”“ (많은 양의 데이터를 어떻게 포현할 것인가.)
이것을 자바에서는 Collection을 통해서 구현했다. ”“”
collection은 다양한 타입의 객체를 담을 수 있는 객체.
배열과 비슷하지만 저장공간을 가변적으로 조정할 수 있음.
>List는 순서(index)가 있고 중복을 허용하는 자료구조(컬렉션)
>Set은 순서(index)가 없고, 중복을 허용하지 않는 자료구조(컬렉션을 구현한 클래스)
>Map은 Key-Value 쌍으로 묶어서 표현하는 자료구조(엄밀히 컬렉션은 아님)
key값은 중복허용하지 않으나, value는 중복을 허용합니다.
List, Set, Map
collectionは様々なタイプのオブジェクトを入れることができるオブジェクト。
アレイと似ているが、
ー アレイはスペースが決まっている。
ー アレイリストはスペースが可変的。
そして、アレイは「基本タイプ」、アレイリストは「参照(さんしょう)タイプ」。
keyは重複ができませんが、valueは重複ができます。
제네릭은?
클래스나 인터페이스와 같은 타입을 매개변수로 지정하여 객체를 생성할 때 타입을 지정해주는 것을 말한다.
제네릭을 사용하는 이유는 타입에 안전한 컬렉션을 사용하기 위해서 사용한다.
クラスやインタフェースのようなタイプをパラメータで決めて、オブジェクトを作る時、タイプを決めること。
ジェネリック(Generic)を使用する理由は、タイプに安全なコレクションを使うために利用する。
래퍼 클래스(Wrapper Class)?
Wrapper클래스란 자바의 기본 자료형(primitive type)을 객체의 형식으로 표현하는 것을 말한다.
WrapperクラスはJavaの基本タイプを「オブジェクトの形(リファレンスデータタイプ)」で表現すること。
Boxing, Unboxing, Auto-Boxing, Auto-Unboxing
Boxing : 기본 데이터 자료형을 참조 데이터 자료형(リファレンスデータタイプ)으로 넣는 것
ex) Integer a = 10;
Unboxing : 참조 데이터 자료형(リファレンスデータタイプ)을 기본 데이터 자료형에 넣는 것.
ex) int a = new Integer("100");
Auto-Boxing:
ex)
Auto-Unboxing : 자동으로-.
ex)
int c = 1;
Integer d = new Integer("200");
System.out.println(d + 100); // auto-unboxing
// 오토 박싱
int i = 10;
Integer num = i;
// 오토 언박싱
Integer num = new Integer(10);
int i = num;
token(トークン)이란 무엇인가?
(https://e-words.jp/w/%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3.html)
여러 의미가 있으나, 일반적으로"프로그램 언어에서는 문자열을 구분할 수 있는 단위"라는 의미로 사용됨
プログラム言語では「文字列を区分できる単位」
StringTokenizer tokenizer = new StringTokenizer("Hello. Hi.", " ");
class와 instance의 차이에 대해 설명하세요.
class는 객체를 만들기 위한 틀(template), 또는 설계도(blueprint)이며
객체를 만들어내기 위한 속성(변수)와 행동방식(메서드)를 포함하고 있다.
class는 참조형 데이터 타입이다.
instance는 class를 통해 구체적인 데이터를 전달받아
생성이라는 작업을 통해 메모리에 적재된 결과물을 말한다.
즉 "class는 설계도고, 인스턴스는 그 설계도를 통해 만들어진 결과물"
classは設計図で、インスタンスはその設計図によって作られた結果物
객체지향 프로그래밍(OOP)에 대해 설명하세요.
Object-Oriented Programming으로, 객체를 이용해서 프로그램을 만드는 방식으로
객체를 부품화시켜서
"객체끼리 서로 상호 작용하며 실행되도록 소프트웨어를 만드는 방식"을 말한다.
OOPは「Object同士がお互いに相互作用(そうごさよう)して、実行されるようにソフトウェアを作る方法」
객체(Object)
- 실제 세계에 존재하는 상태와 행동방식을 가진 모든 것
- 모든 객체는 속성과 행동방식으로 표현될 수 있다.
현실세계 | 프로그램세계 |
속성 | 필드(변수) |
행동방식 | 메서드(클래스 안에 정의된 함수) |
은닉(Encapsulation) / 캡슐화
- 클래스 내부 구현을 숨기고 사용자에게는 인터페이스만을 제공해 주는 것
- 데이터를 신뢰성 있게 관리하고 오류를 최소화할 수 있게 된다.
- クラスの中での動くを隠して、ユーザーにはインターフェースのみを提供(提供)すること。
- データをもっと信頼性があるように管理して、エラーの最小化ができる。
例えば、私が風邪薬を飲むとき、その薬がどう作ったりどんな成分があるのかは分かりませんが、
そのくすりを飲むと、私が必要だった効果を得ること。
상속(Inheritance)에 대해 설명하세요.
- 클래스가 다른 클래스의 속성과 행동방식을 물려받아 구현하는 것.
- 상속을 받아 새로 만들어지는 클래스는 자식 클래스(sub class)가 됨
- 멤버들을 상속해주는 클래스를 부모클래스(super class)라고 함.
- 객체지향 프로그래밍에서 코드의 재사용성과 확장성을 높임으로써 프로그램의 유지보수를 더 쉽게 해준다.
- keyword : extends
-クラスが他のクラスの特徴(とくちょう)と行動などをもらって具現(ぐげん)すること。
-OOPでコードの再使用性と拡張性を高めることでプログラムのメンテナンスをより容易にする。
다형성(Polymorphism)
-같은 이름을 가지지만 서로 다르게 동작하는 기능
名前は同じですが違うように動作(どうさ)する機能
- 메서드 오버로딩(method overloading)
메서드(생성자)의 이름은 같지만, 매개변수를 다르게 해서 서로 상황에 따라 다르게 동작하게 만드는 문법. メソッドの名前は同じですが、パラメータを変えて状況によって異なって動作させる文法。
- 메서드 오버라이딩(method overriding)
부모 클래스로부터 물려받은 메소드를 자식 클래스에서 재정의하는 것.
메소드의 이름도 같고 매개변수도 같다.
Super Classから得るメソッドをSub Classで再定義(さいていぎ)すること。
メソッドの名前も同じし、パラメータも同じ。
- 오버로딩과 오버라이딩의 차이
오버로딩
1) 매개변수가 다름 2) 하나의 클래스 내에서 구현
1) パラメータが違う 2) 一つのクラスの中で具現(ぐげん)
오버라이딩
1) 매개변수가 같음 2) 두 개 이상의 클래스에서 구현
1) パラメータが同じ 2) ふたつ以上のクラスの中で具現(ぐげん)
- 다형적 변수
1) 부모 클래스에서 선언된 메소드만 자식 메서드에서 사용할 수 있음
Super Classで宣言(せんげん、declaration)したメソッドだけ、Sub Classで利用ができる。
2) 메소드 호출 시 자식 클래스에 작성된 내용으로 동작함
メソッドのコール(呼び出し、よびだし)をする時、Sub Classで作成した内容に動作する。
3) 부모 다형적 변수 = new 자식();
자식 다형적 변수 = new 부모(); // 컴파일 에러
추상화(Abstraction)
- 추상클래스(Abstract Class)
클래스 내에서 일부 메서드가 구현되지 않고 선언부만 가지고 있는 메서드를 포함한 클래스.
クラスの中で一部のメソッドが具現(ぐげん)できずに,
宣言のパートしかないメソッドが含まっているクラス
구현되지 않은 메서드를 추상메서드라고 부른다.
具現(ぐげん)できないメソッドを抽象メソッドだと呼ぶ。
(추상 클래스는 new 키워드를 사용해서 직접 객체를 생성할 수 없다.)
추상 클래스를 상속받는 클래스는 반드시 추상 클래스의 모든 추상메서드를 오버라이딩 해야 한다.
抽象(ちゅうしょう)クラスを継承(けいしょう)をもらうクラスは必ず抽象クラスをOveridingしなければならない。
(추상 메서드가 없이도 추상 클래스로 선언할 수 있다.)
사용 목적 : 일정한 '틀'을 제공하기 위해서.(一定の「枠組み(わくぐみ)」を提供するために。)
인터페이스(Interface)
- 추상메서드와 상수만이 정의된 것으로 클래스는 아님.
抽象メソッドと常数(constant、じょうすう)だけがあるのでクラスはない。
- 다른 클래스에 의해 구현(implements)된 다음 모든 추상 메서드의 몸체를 정의해주어야 한다.
- 인터페이스는 다중으로 구현(implements)될 수 있으며 interface간에는 상속(extends)할 수 있다.
Interfaceは一つ以上で具現(ぐげん)ができる。Interfaceの間では継承(けいしょう)ができる。
'Computer Language > Others' 카테고리의 다른 글
면접을 위한 Java등 기본 정리2 (0) | 2022.05.11 |
---|---|
기타자료 (0) | 2021.09.07 |