[Java] reference type

์ž„ํ˜œ์ • ยท2021๋…„ 5์›” 15์ผ
0

Java

๋ชฉ๋ก ๋ณด๊ธฐ
6/16
post-thumbnail

๐Ÿ’ก ๋ชจ๋“  java class๋Š” reference type๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค

๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜• : int, long, float,double
์ฐธ์กฐ ์ž๋ฃŒํ˜• : String, Student

์ฐธ์กฐ ์ž๋ฃŒํ˜•

  • ํด๋ž˜์Šค์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‹ค๋ฅด๋‹ค

reference type

  • c์—์„œ ํฌ์ธํ„ฐ ๊ฐœ๋…์ด๋‹ค.
  • ๊ทœ๊ฒฉ์ด ์žˆ๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์–ธ์ œ๋“ ์ง€ ๋ณ€ํ• ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทœ๊ฒฉ๊ทธ๋ฆ‡์ด ์•„๋‹ˆ๊ธฐ๋•Œ๋ฌธ์— stack์ด ์•„๋‹Œ heap์— ์žก๋Š”๋‹ค.
  • stack์— ๊ณต๊ฐ„์„ ์•„์˜ˆ ์•ˆ์žก๋Š”๊ฒƒ์€ ์•„๋‹ˆ๋‹ค (ํ™”์‚ดํ‘œ ๋“ค์–ด๊ฐ)
    ex) String, Class ์ด๋ฆ„ : ํ™”์‚ดํ‘œ๋ฅผ ๋‹ด๋Š”!! , ๊ฐ„์ ‘์ ์œผ๋กœ !!
  • ์–ด๋–ค ๊ฐ์ฒด๋„ ์ฐธ์กฐํ•˜์ง€์•Š๊ณ  ์„ ์–ธ๋งŒ ๋˜์—ˆ๋‹ค๋ฉด -> null ๊ฐ’์ด ํ• ๋‹น๋œ๋‹ค.

object๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธํ˜•์ด์•„๋‹Œ reference type ๋ณ€์ˆ˜ (์ฐธ์กฐ๋ณ€์ˆ˜)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฐ์ฒด๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๋ณ€์ˆ˜์™€, ํ•จ์ˆ˜๋ฅผ ์ ‘๊ทผํ•œ๋‹ค.

class Foo{
	int value;
}

class Poo {
	public static void swapPrimitive(int x, int y) {
		// ๊ธฐ๋ณธํ˜• ํƒ€์ž…์ด๋‹ค. 
		// int x, int y์˜ ์‚ฌ๋ณธ์ด ๋„˜์–ด์˜จ๋‹ค.
		
		int temp=x;
		x=y;
		y=temp;
	}
	
	public static void swapReference(Foo x, Foo y) {
		// ์ฐธ์กฐํ˜• ํƒ€์ž…์ด๋‹ค.
		// ์‚ฌ๋ณธ์ด ์•„๋‹Œ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘ ๊ฐ€๋ฆฌํ‚จ๋‹ค. 
		
		int temp = x.value;
		x.value = y.value;
		y.value = temp;
	}
}

public class Main2 {
	
	public static void main(String[] args) {
		
		int x=10;
		int y=20;
		
		Poo.swapPrimitive(x, y);
		System.out.println(x+","+y); // 10,20 (๋ณ€ํ™” ์—†์Œ)  
		
		Foo f1 = new Foo();
		Foo f2 = new Foo();
		
		f1.value = 10;
		f2.value = 20;
		Poo.swapReference(f1, f2);
		System.out.println(f1.value+","+ f2.value); // 20,10 

	}
}
profile
ํฌ๊ธฐํ•˜์ง€ ์•Š๊ณ  ๋๊นŒ์ง€ ๐Ÿฅ

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด