[Day15] Java 15 [8/29]

 

1.  ์ ‘๊ทผ์ง€์ •์ž

1) ์˜๋ฏธ๊ฐ€ ๋‹ค๋ฅด๋‹ค

- ํด๋ž˜์Šค ์•ž ์ ‘๊ทผ์ง€์ •์ž

- ๋ฉค๋ฒ„ ์•ž ์ ‘๊ทผ์ง€์ •์ž

 

2) ํด๋ž˜์Šค ์•ž ์ ‘๊ทผ์ง€์ •์ž

- public : ํŒจํ‚ค์ง€ ๋‚ด/์™ธ๋ถ€ ์ฐธ์กฐ, ์ƒ์† ๊ฐ€๋Šฅ

- default : ํŒจํ‚ค์ง€ ๋‚ด๋ถ€ ์—์„œ๋งŒ ์ฐธ์กฐ ,์ƒ์† ๊ฐ€๋Šฅ

 

(๋น„ํ™œ์„ฑํ™”)

[๋…๋ฆฝ์ ์ธ ํด๋ž˜์Šค๋กœ ์„ ์–ธํ•  ๋• ์‚ฌ์šฉ ๋ชปํ•จ / ์ค‘์ฒฉ ํด๋ž˜์Šค(๋‚ด๋ถ€ ํด๋ž˜์Šค)๋กœ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ]

- protected :  ํŒจํ‚ค์ง€ ๋‚ด๋ถ€์—์„œ ์ฐธ์กฐ, ์ƒ์† ๊ฐ€๋Šฅ / ํŒจํ‚ค์ง€ ์™ธ๋ถ€๋Š” ์ƒ์†๋งŒ ๊ฐ€๋Šฅ

- private : ๊ฐ™์€ ํŒŒ์ผ ๋‚ด์—์„œ๋งŒ ์ฐธ์กฐ, ์ƒ์† ๊ฐ€๋Šฅ

 

 

* ๊ธฐํƒ€์ œ์–ด์ž :

- abstract : ์ถ”์ƒํด๋ž˜์Šค ์„ ์–ธ

- final : ์ตœ์ข…ํด๋ž˜์Šค ์„ ์–ธ

 

(๋น„ํ™œ์„ฑํ™”)

- static : ์ค‘์ฒฉํด๋ž˜์Šค ์„ ์–ธ, ์ •์  ํด๋ž˜์Šค

2.  ํด๋ž˜์Šค

- ํ•„๋“œ๋Š” ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜์–ด์žˆ๋‹ค.

- ์ธ์Šคํ„ด์Šค๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฐธ์กฐ๋ณ€์ˆ˜์˜ ํƒ€์ž…์€ ์ธ์Šคํ„ด์Šค์˜ ํƒ€์ž…๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.  

		Tv t1 = new Tv();		
		test( t1 );
		
		System.out.println(t1.color);   // red
		System.out.println(t1.channel); // 10

	} // main

	private static void test(Tv t) {
		 // t1 ->  Tv t  ๊ฐ์ฒด==์ฐธ์กฐ๋ณ€์ˆ˜์˜ ์ž๋ฃŒํ˜•
		t.color = "red";
		t.channel = 10;		
	}

์ฐธ์กฐ ๊ด€๊ณ„ ์ž˜ ์ดํ•ดํ•˜๊ธฐ

 

3.  ํด๋ž˜์Šค ๋ณต์‚ฌ (copy) / ๋ณต์ œ (clone)

1) ํด๋ž˜์Šค ๋ณต์‚ฌ (copy)

- ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ฐธ์กฐํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ

Tv t1 = new Tv();
Tv t2 = t1;

 

2) ํด๋ž˜์Šค ๋ณต์ œ (clone)

- ๋‘๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฒƒ

Tv t2 = new Tv();
t2.color = t1.color;
t2.channel = t1.channel;

4.  Call By Reference (Swap)

public class Ex04 {

	public static void main(String[] args) {
		Point p = new Point();
		p.x= 10;
		p.y= 20;
		
		swap( p );  // ๋‘ x,y ํ•„๋“œ ๊ฐ’์„ ๊ตํ™˜    Call By Reference
		
		System.out.println(  p.x +"/" + p.y);

	} // main

	private static void swap(Point p) {  // ํด๋ž˜์Šค ๋ณต์‚ฌ๋œ ๊ฐœ๋…. 
		
		int temp = p.x;
		p.x= p.y;
		p.y = temp;
		
	}

} // class


// ํด๋ž˜์Šค ์„ ์–ธ  
class Point{
	
    // ํ•„๋“œ  x,y  ์ขŒํ‘œ ์„ ์–ธ
	int x;
	int y;	
}
Class Test {
//๋ฉ”์„œ๋“œ
Public void disp( int x ) {
	//๊ธฐ๋ณธํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜
	}
Public void disp( int [] m) {
	//์ฐธ์กฐํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜
	// ์ฐธ์กฐ ์ฃผ์†Œ๊ฐ’, ์ธ์Šคํ„ด์Šค์˜ ์ฃผ์†Œ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ (ํด๋ž˜์Šค ๋ณต์‚ฌ = ๊ฐ™์€ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•จ)
	}
}

5. ๋ฉค๋ฒ„ ๋ณ€์ˆ˜

1) ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ : int i

2) ํด๋ž˜์Šค ๋ณ€์ˆ˜(=static ๋ณ€์ˆ˜) : static int i 

* ํด๋ž˜์Šค ๋‚ด ๋ฉ”์„œ๋“œ ๋‚ด ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜(๋ฐ˜๋“œ์‹œ ์ดˆ๊ธฐํ™”)์ž„ (ํ•„๋“œ X)

 

1) ์Šคํƒ(Call Stack  == execution Stack) ์˜์—ญ

2) ํž™(Heap) ์˜์—ญ

3) ๋ฉ”์„œ๋“œ(Method Area) ์˜์—ญ - ํด๋ž˜์Šค ๋ณ€์ˆ˜ ์ด ์˜์—ญ์— ์ƒ์„ฑ๋œ๋‹ค. (๋ฉ”์„œ๋“œ ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ ๋ฒˆ๋งŒ ์˜ฌ๋ผ๊ฐ)

6.  ๋‚˜๋จธ์ง€

1)

Person p = null;

NullPointerException

- Stack์˜์—ญ์— P๋ผ๋Š” ๊ฐ์ฒด๊ฐ€ null๋กœ ์ดˆ๊ธฐํ™” -> ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด)๊ฐ€ ์ƒ์„ฑ์•ˆ๋จ

- P๋ผ๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋Š”๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅ

 

2) 

ํด๋ž˜์Šค ๋ฐฐ์—ด ์„ ์–ธํ›„ ๊ฐ ๊ฐ์ฒด๋„ ์ƒ์„ฑํ•ด์ค˜์•ผ ๊ฐ’ ์ ‘๊ทผ๊ฐ€๋Šฅ

 


 9. ์•„๋ž˜ ์ฝ”๋”ฉ์—์„œ ์ž˜๋ชป๋œ ๋ถ€๋ถ„์„ ์ฐพ์•„ ์ฝ”๋”ฉ ์ˆ˜์ •ํ•˜์„ธ์š”.

 public class Test{

 

          public static void main(String[] args) {

                    int result =  test();

                    System.out.println(  result  );

 

          } // main

           

          public  int test() {

                    return 100;

          }

 

} // class   

-> Public static int test()

์„ค๋ช… : cannot make a static reference to the non-static method~

static ๋ถ™์—ฌ์ค˜์•ผํ•จ , static ์•ˆ๋ถ™์˜€๋‹ค๋ฉด ๊ฐ์ฒด ์ƒ์„ฑ ํ›„ ๊ฐ์ฒด๋ช….ํ•„๋“œ๋ช… or  ๊ฐ์ฒด๋ช….๋ฉ”์„œ๋“œ๋ช…์œผ๋กœ ํ˜ธ์ถœ

Ex02 obj = new Ex02();

obj.test();

  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ๋„ค์ด๋ฒ„ ๋ฐด๋“œ์— ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜ค์Šคํ† ๋ฆฌ ๊ณต์œ ํ•˜๊ธฐ