๐Ÿ“•JAVA

[JAVA] ๋ž˜ํผ, Class ํด๋ž˜์Šค

๋น™๋””์šฉ 2024. 4. 23.

1. ๊ธฐ๋ณธํ˜•์˜ ํ•œ๊ณ„

- ๊ธฐ๋ณธํ˜•์€ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋‹จ์ ์„ ์‚ด๋ฆด ์ˆ˜ ์—†๋‹ค(๋ฉ”์„œ๋“œ ์ œ๊ณต ๋ถˆ๊ฐ€๋Šฅ ๋“ฑ...)

- null๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.

1) ๊ธฐ๋ณธํ˜•๊ณผ null

- ๊ธฐ๋ณธํ˜•์€ ํ•ญ์ƒ ๊ฐ’์„ ๊ฐ€์ ธ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ(null)์˜ ์ƒํƒœ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์—†๋‹ค.

- ๋ž˜ํผ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด ํ•ด๊ฒฐ๊ฐ€๋Šฅ(int๋Œ€์‹  ์•„๋ž˜์—์„œ ๋งŒ๋“  MyInteger ์‚ฌ์šฉ)

- null๊ฐ’์„ ์ž˜๋ชป ๋ฐ˜ํ™˜ํ•˜๋ฉด NullPointerException์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

2. ๋ž˜ํผ ํด๋ž˜์Šค

- ํŠน์ • ๊ธฐ๋ณธํ˜•์„ ๊ฐ์‹ธ์„œ ๊ฐ์ฒด๋กœ ๋งŒ๋“œ๋Š” ํด๋ž˜์Šค๋ฅผ ๋ž˜ํผ ํด๋ž˜์Šค๋ผ๊ณ  ํ•œ๋‹ค.

//..์ƒ๋žต
private final int value;

//๋ž˜ํผ ํด๋ž˜์Šค
public MyInteger(int value) {
	this.value = value;
}

public int compareTo(int target) {
	if (value < target) {
    	return -1;
	}else {
    	return 0
	}
}

- MyInteger๋Š” int value๋ผ๋Š” ๋‹จ์ˆœ๊ฐ„ ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ด ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋„๋ก ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•จ

- compareTo()๋งค์†Œ๋“œ๋Š” ํด๋ž˜์Šค ๋‚ด๋ถ€๋กœ ์บก์Šํ™”

- MyInteger๋ฅผ ํ†ตํ•ด int๋ฅผ ๊ฐ์ฒด๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋จ

1) ์ž๋ฐ” ๋ž˜ํผ ํด๋ž˜์Šค

* ์ž๋ฐ”๋Š” ๊ธฐ๋ณธํ˜•์— ๋Œ€์‘ํ•˜๋Š” ๋ž˜ํผ ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค. 

- byte → Byte

- short → Short

- int → Integer

- long → Long

- float →Float

-  double → Double

- char → Character

- boolean → Boolean

- ๋ถˆ๋ณ€์ด๋ฉฐ equals๋กœ ๋น„๊ตํ•ด์•ผํ•œ๋‹ค.

2) ๋ž˜ํผ ํด๋ž˜์Šค ์ƒ์„ฑ - ๋ฐ•์‹ฑ(Boxing)

- ๊ธฐ๋ณธํ˜•์„ ๋ž˜ํผ ํด๋ž˜์Šค๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ

//Boxing
Integer integerObj = Integer.valueOf();

3) ์–ธ๋ฐ•์‹ฑ(Unboxing)

- ๋ž˜ํผ ํด๋ž˜์Šค์— ๋“ค์–ด์žˆ๋Š” ๊ธฐ๋ณธํ˜• ๊ฐ’์„ ๋‹ค์‹œ ๊บผ๋‚ด๋Š” ๋ฉ”์„œ๋“œ

//Unboxing
int value = integerObj.intValue();

4) ์˜คํ†  ๋ฐ•์‹ฑ, ์˜คํ†  ์–ธ๋ฐ•

- ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด ๊ธฐ๋ณธํ˜•์„ ๋ž˜ํผ ํด๋ž˜์Šค๋กœ, ๋ž˜ํผํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ณธํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์•ผํ•  ์ผ์ด ์ž์ฃผ ๋ฐœ์ƒ

- ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์ด ์˜คํ†  ๋ฐ•์‹ฑ, ์˜คํ†  ์–ธ๋ฐ•์‹ฑ

- ์˜๋„๊ฐ€ ๋ช…ํ™•ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅ

Integer boxedValue = value; //์˜คํ†  ๋ฐ•์‹ฑ
// ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ Integer.getValueOf(value); ์ถ”๊ฐ€

int unboxedValue = boxedValue; //์˜คํ†  ์–ธ๋ฐ•์‹ฑ
// ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ boxedValue.intValue(); ์ถ”๊ฐ€

3. ์ฃผ์š” ๋ฉ”์„œ๋“œ

Integer.valueOf(10); //์ˆซ์ž, ๋ž˜ํผ ๊ฐ์ฒด ๋ณ€ํ™˜
Integer.valueOf("10"); //๋ฌธ์ž์—ด, ๋ž˜ํผ ๊ฐ์ฒด ๋ณ€ํ™˜
Integer.parseInt("10"); //๋ฌธ์ž์—ด ์ „์šฉ, ๊ธฐ๋ณธํ˜• ๋ณ€ํ™˜

value.compareTo(10); //value๊ฐ’๊ณ  ๋„˜์–ด์˜จ ๊ฐ’ ๋น„๊ต

Integer.sum(10, 20); //๋”ํ•˜๊ธฐ , 30
Integer.max(10, 20); //์ตœ๋Œ€๊ฐ’ , 20
Integer.min(10, 20); //์ตœ์†Œ๊ฐ’ , 10

 

1) ๋ž˜ํผ ํด๋ž˜์Šค์™€ ์„ฑ๋Šฅ

๋ž˜ํผ ํด๋ž˜์Šค๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋˜์ง€ ๊ธฐ๋ณธํ˜•์„ ์•„์ง๋„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ? ์„ฑ๋Šฅ ์ฐจ์ด ๋•Œ๋ฌธ 

- ๊ธฐ๋ณธํ˜•์€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ทธ ํฌ๊ธฐ๋งŒํผ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜์ง€๋งŒ, ๋ž˜ํผ ํด๋ž˜์Šค๋Š” ๊ธฐ๋ณธํ˜• ๊ฐ’ + ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋งŒํผ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ๋” ๋–จ์–ด์ง„๋‹ค.

- ๊ทธ๋Ÿฌ๋‚˜ ์ฐจ์ด๊ฐ€ ๊ฑฐ์˜ ์‹ฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ๋” ๋‚˜์€ ๊ฒƒ์„ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค.

 

4. Class ํด๋ž˜์Šค

- ํด๋ž˜์Šค์˜ ์ •๋ณด๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

- Class ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ƒํ–‰ ์ค‘์ธ ์ž๋ฐ” ๋‚ด์— ํ•„์š”ํ•œ ํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ์ •๋ณด๋ฅผ ์กฐํšŒ ๋ฐ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

1) ์ฃผ์š” ๊ธฐ๋Šฅ

- ํƒ€์ž… ์ •๋ณด ์–ป๊ธฐ : ํด๋ž˜์Šค์˜ ์ด๋ฆ„, ์Šˆํผํด๋ž˜์Šค, ์ธํ„ฐ ํŽ˜์ด์Šค, ์ ‘๊ทผ ์ œํ•œ์ž ๋“ฑ๊ณผ ๊ฐ™์€ ์ •๋ณด ์กฐํšŒ ๊ฐ€๋Šฅ

- ๋ฆฌํ”Œ๋ ‰์…˜ : ํด๋ž˜์Šค์— ์ •์˜๋œ ๋ฉ”์†Œ๋“œ, ํ•„๋“œ, ์ƒ์„ฑ์ž ๋“ฑ์„ ์กฐํšŒํ•˜๊ณ , ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๋“ฑ์˜ ์ž‘์—… ๊ฐ€๋Šฅ

- ๋™์  ๋กœ๋”ฉ ์ƒ์„ฑ : Class.forName() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—… ๊ฐ€๋Šฅ

- ์• ๋…ธํ…Œ์ด์…˜ ์ฒ˜๋ฆฌ : ํด๋ž˜์Šค์— ์ ์šฉ๋œ ์• ๋…ธํ…Œ์ด์…˜์„ ์กฐํšŒํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณต

5. System Class ํด๋ž˜์Šค

- ํ‘œ์ค€ ์ž…๋ ฅ, ์ถœ๋ ฅ, ์˜ค๋ฅ˜ ์ŠคํŠธ๋ฆผ : System.in, System.out, System.err

- ์‹œ๊ฐ„ ์ธก์ • : System.currentTimeMilis() ๋“ฑ...

- ํ™˜๊ฒฝ ๋ณ€์ˆ˜ : System.getenv() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด OS์—์„œ ์„ค์ •ํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

- ์‹œ์Šคํ…œ ์†์„ฑ : System.getProperties๋ฅผ ํ†ตํ•ด ์ž๋ฐ”์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„ค์ • ๊ฐ’์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

- ์‹œ์Šคํ…œ ์ข…๋ฃŒ : System.exit(int status) ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜๊ณ  OS์— ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌ(์‚ฌ์šฉ ๊ถŒ์žฅ X)

- ๋ฐฐ์—ด ๊ณ ์† ๋ณต์‚ฌ : System.arraycopy๋Š” ์‹œ์Šคํ…œ ๋ ˆ๋ฒจ์—์„œ ์ตœ์ ํ™”๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

6. Math, Random ํด๋ž˜์Šค

1) Math ํด๋ž˜์Šค

- Math๋Š” ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ๋Š” Class. ์›Œ๋‚™ ๋งŽ์œผ๋‹ˆ ์‹ค์ œ ์‚ฌ์šฉํ•  ๋• API ๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋ณด๊ธธ ๊ถŒ์žฅ

 

Math (Java Platform SE 8 )

Returns the value of the first argument raised to the power of the second argument. Special cases: If the second argument is positive or negative zero, then the result is 1.0. If the second argument is 1.0, then the result is the same as the first argument

docs.oracle.com

2) Random ํด๋ž˜์Šค

random.nextInt(); // int ๋ฒ”์œ„ ๋‚ด์—์„œ ์กฐํšŒ
random.nextDouble(); //0.0d ~ 1.0d
random.nextBoolean(); //true or false ์กฐํšŒ
random.nextInt(10); //0~9๊นŒ์ง€ ์กฐํšŒ

1) Seed

- ๋žœ๋ค์„ ๋งŒ๋“ค ๋•Œ ์‹œ๋“œ๊ฐ€ ๊ฐ™์œผ๋ฉด ์‹คํ–‰๊ฒฐ๊ณผ๊ฐ€ ๋˜‘๊ฐ™๋‹ค.

Random random = new Random(1); //seed๊ฐ€ 1

 

 

 

- ์ฐธ๊ณ  : ๊น€์˜ํ•œ์˜ ์‹ค์ „ ์ž๋ฐ” - ์ค‘๊ธ‰ 1ํŽธ

๋Œ“๊ธ€