.class ํ์ผ์ ๋ค๊ณ ์์ ์คํํ ๋
- static ์ฐพ์
- main ์ฐพ์ ์คํ
๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ โ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
๋ฉ๋ชจ๋ฆฌ : ์ ์ฅ ์์ญ, ์์ญ์ ๋ํ ์ฃผ์(๋ฒ์ง)๊ฐ ์์
๋
ผ๋ฆฌ์ ์ผ๋ก ์์ญ์ ๊ตฌ๋ถํด์ ์ฌ์ฉํจ
Static : ์์์ ๋ถํฐ ๋ฉ๋ชจ๋ฆฌ์ ๋์
package ex04; /** * JVM์ด ์์ํ ๋ * 1. static ์ฐพ์ -> age, main * 2. main ์ฐพ์์ ์คํ */ class Person1{ static int age = 20; char gender = '์ฌ'; // ์์ ์๋ฃํ(primitive data type) // ์ปค์คํ ์๋ฃํ(๋ด๊ฐ ๋ง๋ ์๋ฃํ) } public class MemEx01 { public static void main(String[] args) { System.out.println(Person1.age); } }
ํน์ง : ์ ์ ํ ๋น
main์ด ์คํ๋๊ธฐ ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ธ
์๋ช
์ฃผ๊ธฐ๊ฐ ๊ฐ์ฅ ๊ธบ
ํด๋์ค๋ช
.๋ณ์๋ช
: static ๊ณต๊ฐ์ ์ด๋์๋ ์ฐพ์ ์ ์์
ํด๋์ค์ ์์ผ๋ฉด ํด๋์ค๋ช
์ ์๋ต ๊ฐ๋ฅํจ
๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฌ์ฉํจ
Heap : ๋์ ์ผ๋ก ์ํ ๋ ๋์
package ex04; class Person2{ int age = 10; char gender = '๋จ'; } public class MemEx02 { public static void main(String[] args) { System.out.println("1๋ ์ง๋จ"); System.out.println("2๋ ์ง๋จ"); System.out.println("3๋ ์ง๋จ"); Person2 p2 = new Person2(); // ํ์ ๋ช + ๋ณ์ = new ํด๋์ค๋ช ; System.out.println(p2.age); System.out.println(p2.gender); System.out.println("๋ฉ์ธ ์ข ๋ฃ"); } }
์ก์ธ์ค :
ํน์ง : ๋์ ํ ๋น
๋ด๊ฐ ์ํ ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋์
static ๋ณด๋ค ์๋ช
์ฃผ๊ธฐ๊ฐ ์งง์
heap ์ฐพ๋ ๋ฐฉ๋ฒ
์ฌ๋ฌ๋ฒ ๋์ธ ์ ์์ > ๊ฐ๋ฅดํค๋ ๋ณ์๊ฐ ํ์ํจ
ํ์ ๋ช + ๋ณ์ = new ํด๋์ค๋ช (); // ํด๋์ค ์์ ์๋ ๋ด์ฉ์ ๋ฉ๋ชจ๋ฆฌ์ ๋์
Stack : ๋ฉ์๋๊ฐ ์คํ๋ ๋ ๋์
package ex04; public class ScopeEx01 { int n1 = 1; static int n2 =2; static void m1(){ int n1 = 10; System.out.println("m1 : " + n1); // n1 = 10 } void m2(){ System.out.println("m2 : " + n1); // n1 = 1 } //main ์์์ ์ static์ n2 ๋ณ์์ n1 ๋ฉ์๋ ์ด๋ฆ๋ง ๋ก๋๋์ด ์์ public static void main(String[] args) { System.out.println("1"); m1(); System.out.println("2"); } }
Stack : ์์ ์ ์ฅ์ ์ํด ๋ง๋ค์ด์ง
Queue : ์์๋๋ก ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํด ๋ง๋ค์ด์ง
(๋ฐ์ดํฐ ์ ์ฅx)
Scope : ํด๋น ๋ณ์์ ์ฌ์ฉ ๋ฒ์
์๋ก์ stack์ ์ ๊ทผ์ด ์๋จ
์ ๊น ๋ด๋ค ์ฌ๋ผ์ง๋๊น ์ธ๋ถ์์ ์ฐพ์ ์ ์์
return์ผ๋ก ์ ๋ฌ ๋ฐ์์ผ ํจ/main ๋ณ์๊ฐ ๋จ
์๋ช
์ฃผ๊ธฐ : static < heap< statick
1. ํด๋์ค ๋ก๋(๋ฉ๋ชจ๋ฆฌ์ ํด๋์ค๊ฐ ๋ธ)
- static ์ฐพ๊ธฐ
ํด๋์ค ๋ณ๋ก ์์ญ์ด ๋๋จ
์๋๋ ํ๋ก์ ํธ ์์ ์๋ ๋ชจ๋ static์ด ๋ธ
- main์ ์ฐพ์ ์คํ
main์ ๊ทผ๊ฑฐ
static : ์คํ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ ์์
public : ์ธ๋ถ์ ์๋ JVM์ด ์ ๊ทผ ๊ฐ๋ฅ
- main๋ฉ์๋๊ฐ ์ด๋ฆฌ๋ฉด main Queue๊ฐ ์คํ
put : ๋ผ์ธ๋ค์ด ๋ด๊น
pop : ๋๋์ ๋ฉ๋ชจ๋ฆฌ์์ CPU๋ก ๊ฐ์ ๋ชจ๋ํฐ์ ์ถ๋ ฅ๋จ
์ ์ฅ๋๋ ๊ณต๊ฐ์ด ๋ค๋ฆ
package ex04; public class ScopeEx01 { int n1 = 1; static int n2 =2; static void m1(){ int n1 = 10; System.out.println("m1 : " + n1); // n1 = 10 } void m2(){ System.out.println("m2 : " + n1); // n1 = 1 } //main ์์์ ์ static์ n2 ๋ณ์์ n1 ๋ฉ์๋ ์ด๋ฆ๋ง ๋ก๋๋์ด ์์ public static void main(String[] args) { System.out.println("1"); m1(); System.out.println("2"); ScopeEx01 sc = new ScopeEx01(); sc.m2(); } }
๋ฉ์๋ ๋ด๋ถ์ ๋ณ์ : ์ง์ญ๋ณ์ / ์๋ช
์ฃผ๊ธฐ๊ฐ ๊ฐ์ฅ ์งง์
๋ฉ์๋๋ ์ด๋ฆ๋ง ๋ธ
์ฐธ์กฐ๋ณ์ : ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์์ / *๋ฅผ ๋ถ์
heap์ด๋ static์ ๋ค ์ฐพ์ ์ ์์
๊ฐ์ scope์ ์๋ data ์ ๋ฆฌ
static (n2 =2, m1(), main)
์ด๋์์๋ ์ง ์ ๊ทผ ๊ฐ๋ฅ
heap ( n1=1, m2())
static์ด ์ ์ ํ ๋ชจ๋ ๊ฒ
heap๋ผ๋ฆฌ๋ ๊ฐ์ scope์ฌ์ ์ ๊ทผ์ด ๊ฐ๋ฅ
๋ฉ์๋์ ์คํ์ heap
stack (n5=10)
๋ฉ์๋์ ๋ด๋ถ๊ฐ ์ ์ฅ๋ง ๋จ
์ธ๋ถ ์ ๊ทผ ๋ถ๊ฐ๋ฅ
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ๊ณผ ์ฐพ์ ์คํํ๋ ์์น๊ฐ ๋ค๋ฆ
Share article