๐™น๐šŠ๐šŸ๐šŠ

ํ˜ผ์ž ๋„์ ์—ฌ๋ณด๋Š”... ์ž๋ฐ” ๊ณต๋ถ€ (1)

ํ•ด๋ฒ„๋‹ˆ 2023. 10. 5. 12:10
๋ฐ˜์‘ํ˜•

ํ˜ผ์ž ๋„์ ์ด๋ฉด์„œ ํ•˜๋Š” java ๊ธฐ์ดˆ ๊ณต๋ถ€

 

 

์ปดํŒŒ์ผ

์ž๋ฐ” ์†Œ์Šค ์ฝ”๋“œ๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ฒˆ์—ญ๋œ๋‹ค.

๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” 2์ง„์ˆ˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„๋˜๊ณ , ์ด๊ฒƒ์ด JVM(Java Virtual Machine)์—์„œ ์‹คํ–‰๋œ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ธฐ๊ณ„์–ด๋กœ ๋ฐ”๋กœ ๋ฒˆ์—ญํ•˜์ง€๋Š” ์•Š๊ณ ,

์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ์ž๋ฐ” ์†Œ์Šค(.java)๋ฅผ ํด๋ž˜์Šค ํŒŒ์ผ(.class)๋กœ ๋ณ€ํ™˜ํ•˜๊ณ ,

JVM์ด ํด๋ž˜์Šค ํŒŒ์ผ์„ ํ•ด๋‹น ์šด์˜์ฒด์ œ์˜ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜์„ ํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 

 

 

 

 


์›์‹œ ๋ฐ์ดํ„ฐํ˜•(Primitve type)๊ณผ ํด๋ž˜์Šค ๋ฐ์ดํ„ฐํ˜•์˜ ์ฐจ์ด

์›์‹œ ๋ฐ์ดํ„ฐ ํƒ€์ž… : int → null ํ—ˆ์šฉ โŒ

ํด๋ž˜์Šค ํƒ€์ž… : Integer → null ํ—ˆ์šฉ โญ•

 

(null์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ์–ธํ–ˆ์ง€๋งŒ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.)

 

์›์‹œํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜์ง€๋งŒ (int, char, double, boolean)

ํด๋ž˜์Šคํ˜•์€ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•œ๋‹ค. (String, Integer, ArrayList, LinkedList)

 

 

 

https://kingpodo.tistory.com/54

 

๊ธฐ๋ณธํ˜• ํƒ€์ž…(Primitive type)

์‹ค์ œ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์œผ๋กœ, Stack ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ๋‹ค.

byte, short, int, long, float, double, char, boolean

 

 

 

 

 

 


new ์—ฐ์‚ฐ์ž

new๋Š” ํด๋ž˜์Šค ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด)๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค.

new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด Heap์˜์—ญ์— ๋ฐ์ดํ„ฐ ์ €์žฅํ•  ๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›๊ณ , 

๊ทธ ๊ณต๊ฐ„์˜ ์ฐธ์กฐ๊ฐ’์„ ๊ฐ์ฒด์—๊ฒŒ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ฃผ๊ณ ,

์ด์–ด์„œ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋œ๋‹ค.

https://devlogofchris.tistory.com/35

 

https://yoo11052.tistory.com/52

 

[Java] new ์—ฐ์‚ฐ์ž๋ž€

Java๋ฅผ ํ•˜๋‹ค๊ฐ€ ์ œ์ผ ๋จผ์ € new ์—ฐ์‚ฐ์ž๋ฅผ ์ ‘ํ•˜๋Š”๊ฒŒ ์•„๋งˆ ๋ฐฐ์—ด์„ ๊ณต๋ถ€ํ•  ๋•Œ ์ผํ…๋ฐ, ๋‚˜๋„ ์ฒ˜์Œ์— new ์—ฐ์‚ฐ์ž๊ฐ€ ๋ฌด์Šจ ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ๋ชจ๋ฅธ์ฑ„ ๊ณต๋ถ€๋ฅผ ํ•ด์˜ค๋‹ค๊ฐ€ new ์—ฐ์‚ฐ์ž์˜ ์—ญํ• ์ด ๊ฝค๋‚˜ ์ค‘์š”ํ•˜๋‹ค

yoo11052.tistory.com

 

 

 

 

 

 

 

 


๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ(Static, Stack, Heap)

 

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ตฌ์„ฑ๊ณผ ํŠน์ง•์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

ํ•˜๋‚˜์˜ JAVA ํŒŒ์ผ์€ ํฌ๊ฒŒ ํ•„๋“œ(field), ์ƒ์„ฑ์ž(constructor), ๋ฉ”์†Œ๋“œ(method)๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

// Student ํด๋ž˜์Šค ์ •์˜
public class Student {
	// ํ•„๋“œ(๋ฉค๋ฒ„ ๋ณ€์ˆ˜) ์ •์˜
    private String name;
    private int age;
    
    // ์ƒ์„ฑ์ž(constructor) ์ •์˜
    public Student(String name, int age){
    	this.name = name;
        this.age = age;
    }
    
    // ๋ฉ”์„œ๋“œ(method) ์ •์˜
    public void displayInfo(){
    	System.out.println("์ด๋ฆ„: " + name);
        System.out.println("๋‚˜์ด: " + age);
    }
    
    public static void main(String[] args){
    	// Student ๊ฐ์ฒด ์ƒ์„ฑ
        Student student1 = new Student("Alice", 20);
        Student student2 = new Student("Bob", 22);
        
        // ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
        student1.displayInfo();
        student2.displayInfo();
    }
    

}

 

https://m.blog.naver.com/heartflow89/220954420688

 

[JAVA/์ž๋ฐ”] ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ(static, stack, heap)

 ์ด๋ฒˆ ๊ธ€์€ ์ž๋ฐ”(JAVA)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ž…์žฅ์—์„œ ์•Œ์•„์•ผ ํ•  ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ๋ฐ ํŠน์ง•์— ๋Œ€ํ•ด์„œ ์•Œ์•„...

blog.naver.com

 

 

 

Static

์œ„ ์†Œ์Šค์ฝ”๋“œ์—์„œ ํ•„๋“œ ๋ถ€๋ถ„์— ์ •์˜๋œ ๋ณ€์ˆ˜์™€ ์ •์  ๋ฉค๋ฒ„๋ณ€์ˆ˜(static์ด ๋ถ™์€ ์ž๋ฃŒํ˜•)๋Š” Static ์˜์—ญ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

์ด ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘๋ถ€ํ„ฐ ์ข…๋ฃŒ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ๊ฒŒ ๋œ๋‹ค. 

(์–ด๋””์„œ๋“  ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค)

 

 

 

Stack

์ง€์—ญ๋ณ€์ˆ˜, ๋‚ด๊ฐ€ ๋ณดํ†ต ๋ณ€์ˆ˜ ์„ ์–ธํ•˜๋Š” ๊ฒƒ

public class StakcArea{
	public static void main(String[] args){
    	int a = 10;
        a = 1004;
    	System.out.println(a); // 1004 (LIFO๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค.)
    	
        for(int i=0; i<10; i++){
        }
        // for๋ฌธ ์ข…๋ฃŒ์‹œ์— Stack ์˜์—ญ์—์„œ ํ•ด์ œ๋จ 
        System.out.println(i); // ์ปดํŒŒ์ผ ์—๋Ÿฌ 
    }
}

 

 

Heap

์ฐธ์กฐํ˜•์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ–๋Š” ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค), ๋ฐฐ์—ด ๋“ฑ

"ํด๋ž˜์Šค ๋ณ€์ˆ˜ = new ํด๋ž˜์Šค();"

๋ณ€์ˆ˜๋Š” Stack ์˜์—ญ์˜ ๊ณต๊ฐ„์— ์กด์žฌํ•˜๊ณ , 

์ด ์˜์—ญ์—์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ Heap ์˜์—ญ์˜ ์ฐธ์กฐ๊ฐ’์„ new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๋ฆฌํ„ด๋ฐ›๋Š”๋‹ค. 

 

 

 

 

 

 

 


๋ฐฐ์—ด ๋ณต์‚ฌ

๊นŠ์€ ๋ณต์‚ฌ(Deep Copy) : ์‹ค์ œ ๊ฐ’์„ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ

์–•์€ ๋ณต์‚ฌ(Shallow Copy) : ์ฃผ์†Œ ๊ฐ’์„ ๋ณต์‚ฌํ•œ๋‹ค๋Š” ๊ฒƒ

 

 

 

 

 

 

 

 


class

class Test {
	int a; // ๋ฉค๋ฒ„ ๋ณ€์ˆ˜, heap์— ํ• ๋‹น
	String b;
	float c;
}

์—ฌ๊ธฐ์„œ ๋ณ€์ˆ˜ a, b, c๋Š” heap ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ๋‹ค.

Java์—์„œ ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” heap ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๊ณ ,

๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹น๋œ๋‹ค.

 

 

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

Test t1;

๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด์ค€๋‹ค.

 

t1 = new Test();

ํด๋ž˜์Šค์™€ ์ด๋ฆ„์ด ๋˜‘๊ฐ™์€ ๊ฑธ ์ƒ์„ฑ์ž๋ผ๊ณ  ํ•œ๋‹ค. 

์ด๋Ÿฐ ์ƒ์„ฑ์ž๋ฅผ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ผ๊ณ  ํ•œ๋‹ค.

 

๊ธฐ๋ณธ ์ƒ์„ฑ์ž

๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์ง€ ์•Š๊ณ , ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋Š” ์•„๋ฌด ๋™์ž‘๋„ ํ•˜์ง€ ์•Š๊ณ , ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ์—ญํ• ์„ ํ•œ๋‹ค.

 

 

์—ฌ๊ธฐ์„œ t1์€ (๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ) Test ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜์ด๋‹ค.

์ฆ‰ t1์€ stack ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ์ด ๋˜๊ณ ,

a, b, c๋Š” heap ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ์ด ๋œ๋‹ค.

 

 

 

โœจ ์ •๋ฆฌ

new๋Š” heap์˜์—ญ์— ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด์„œ ์กด์žฌํ•œ๋‹ค.

์ƒ์„ฑ์ž๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์ค€๋‹ค.

์œ„ ์ƒ์„ฑ์ž๋Š” ํด๋ž˜์Šค์™€ ์ด๋ฆ„์ด ๊ฐ™๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ƒ์„ฑ์ž๋Š” ๋งˆ์Œ๋Œ€๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๊ณ , ๊ฐ์ฒด ์ƒ์„ฑ์‹œ์—๋งŒ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

 

 

 

 

 

 


Object ํด๋ž˜์Šค

https://kadosholy.tistory.com/107

 

[Java] ์ž๋ฐ” - Objectํด๋ž˜์Šค์™€ ๋ฉ”์†Œ๋“œ, equals(), toString(), getClass()

์ž๋ฐ” - Objectํด๋ž˜์Šค์™€ ๋ฉ”์†Œ๋“œ, equals(), toString(), getClass() Objectํด๋ž˜์Šค๋Š” ์ž๋ฐ”์—์„œ ๋ชจ๋“  ํด๋ž˜์Šค๋“ค์˜ ์ตœ์ƒ์œ„ ์กฐ์ƒ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž๋ฐ”์—์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๋”ฐ๋กœ ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„ ๊ธฐ

kadosholy.tistory.com

 

์ •์˜

์ž๋ฐ”์—์„œ ๋ชจ๋“  ํด๋ž˜์Šค๋“ค์˜ ์ตœ์ƒ์œ„ ์กฐ์ƒ ํด๋ž˜์Šค์ด๋‹ค.

java.lang ํŒจํ‚ค์ง€์— ์†ํ•œ ํด๋ž˜์Šค์ด๋‹ค.

๋”ฐ๋ผ์„œ, ์ž๋ฐ”์—์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๋ณ„๋‹ค๋ฅธ ์ •์˜๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ Object ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ฒŒ ๋˜๋ฉฐ Object ํด๋ž˜์Šค์— ์†ํ•œ ๋ฉ”์†Œ๋“œ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ข…๋ฅ˜

 

 

 

 

 

 

 

 


toString()

class Member {
    private String name;
    private String phone;
    private String address;
    
    public Member(String name, String phone, String address) {
    	this.name = name;
        this.phone = phone;
        this.address = address;
    }
    
    @Override
    public String toString() {
    	return "Member [name: " + name + ", phone: " + phone + ", address:" + address + "]";
    }
}

public class Main {
	public static void main(String args[]) {
    	Member m1 = new Member("minhyun", "010-1111-1111", "๋Œ€ํ•œ๋ฏผ๊ตญ");
        System.out.println(m1.toString());
        // Member [name: minhyun, phone: 010-1111-1111, address: ๋Œ€ํ•œ๋ฏผ๊ตญ]
    }
}

 

โ‘  ์ด ๊ฐ์ฒด์˜ ํด๋ž˜์Šค ํƒ€์ž…

โ‘ก ํž™์— ํ• ๋‹น๋ฐ›์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ

์ด ๋‘ ๊ฐ€์ง€๊ฐ€ ์ค‘์š”ํ•œ ์ •๋ณด์ธ๋ฐ, ์ด ์ •๋ณด๋“ค์„ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ์—ฎ์–ด์„œ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค.

์ฆ‰, toString()์€ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋‚˜ ๊ฐ’๋“ค์„ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค์–ด ๋ฆฌํ„ดํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค.

 

 

package addr;

public class Main {
	public static void main(String[] args) {
		Member m1 = new Member("min", "010-1111-1111", "๋Œ€ํ•œ๋ฏผ๊ตญ");
		Member m2 = new Member("hyun", "010-2222-2222", "ํ•œ๊ตญ");

		System.out.println(m1.toString()); // addr.Member@6f2b958e
		System.out.println(m2.toString()); // addr.Member@5e91993f
	}
}

์œ„์™€ ๊ฐ™์ด ํŒจํ‚ค์ง€๋ช….ํด๋ž˜์Šค๋ช…@์ฐธ์กฐ๊ฐ’ ์ด ๋‚˜์˜จ๋‹ค. (๊ธฐ๋ณธ ์„ค์ •)

 

 

 

 

 

 

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•