ํผ์ ๋์ ์ด๋ฉด์ ํ๋ java ๊ธฐ์ด ๊ณต๋ถ
์ปดํ์ผ
์๋ฐ ์์ค ์ฝ๋๋ ๋ฐ์ดํธ ์ฝ๋๋ก ๋ฒ์ญ๋๋ค.
๋ฐ์ดํธ ์ฝ๋๋ 2์ง์ ํํ๋ก ํํ๋๊ณ , ์ด๊ฒ์ด JVM(Java Virtual Machine)์์ ์คํ๋๋ค.
์ปดํ์ผ๋ฌ๊ฐ ๊ธฐ๊ณ์ด๋ก ๋ฐ๋ก ๋ฒ์ญํ์ง๋ ์๊ณ ,
์ฐ๋ฆฌ๊ฐ ์์ฑํ ์๋ฐ ์์ค(.java)๋ฅผ ํด๋์ค ํ์ผ(.class)๋ก ๋ณํํ๊ณ ,
JVM์ด ํด๋์ค ํ์ผ์ ํด๋น ์ด์์ฒด์ ์ ๊ธฐ๊ณ์ด๋ก ๋ณํ์ ํด์ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ฒ์ด๋ค.
์์ ๋ฐ์ดํฐํ(Primitve type)๊ณผ ํด๋์ค ๋ฐ์ดํฐํ์ ์ฐจ์ด
์์ ๋ฐ์ดํฐ ํ์ : int → null ํ์ฉ โ
ํด๋์ค ํ์ : Integer → null ํ์ฉ โญ
(null์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ์ง๋ง ์ค์ ๋ฉ๋ชจ๋ฆฌ์๋ ์กด์ฌํ์ง ์๋๋ค๋ ์๋ฏธ์ด๋ค.)
์์ํ ๋ฐ์ดํฐ ํ์ ์ ์๋ฌธ์๋ก ์์ํ์ง๋ง (int, char, double, boolean)
ํด๋์คํ์ ๋ชจ๋ ๋๋ฌธ์๋ก ์์ํ๋ค. (String, Integer, ArrayList, LinkedList)
๊ธฐ๋ณธํ ํ์ (Primitive type)
์ค์ ๊ฐ์ ์ ์ฅํ๋ ๊ณต๊ฐ์ผ๋ก, Stack ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค.
byte, short, int, long, float, double, char, boolean
new ์ฐ์ฐ์
new๋ ํด๋์ค ํ์ ์ ์ธ์คํด์ค(๊ฐ์ฒด)๋ฅผ ์์ฑํด์ฃผ๋ ์ญํ ์ ๋ด๋นํ๋ค.
new ์ฐ์ฐ์๋ฅผ ํตํด Heap์์ญ์ ๋ฐ์ดํฐ ์ ์ฅํ ๊ณต๊ฐ์ ํ ๋น๋ฐ๊ณ ,
๊ทธ ๊ณต๊ฐ์ ์ฐธ์กฐ๊ฐ์ ๊ฐ์ฒด์๊ฒ ๋ฐํํ์ฌ ์ฃผ๊ณ ,
์ด์ด์ ์์ฑ์๋ฅผ ํธ์ถํ๊ฒ ๋๋ค.
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
}
}
์์ ๊ฐ์ด ํจํค์ง๋ช .ํด๋์ค๋ช @์ฐธ์กฐ๊ฐ ์ด ๋์จ๋ค. (๊ธฐ๋ณธ ์ค์ )
'๐น๐๐๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
jstl.jar ๋ค์ด๋ฐ๊ธฐ (1) | 2023.10.14 |
---|---|
ํผ์ ๋์ ์ฌ๋ณด๋... ์๋ฐ ๊ณต๋ถ (2) (1) | 2023.10.06 |
[Java] String reverse ์๋ฐ ๋ฌธ์์ด ๋ค์ง๊ธฐ - StringBuffer reverse() (0) | 2023.09.19 |
[Java] 2์ฐจ์ ๋ฐฐ์ด์ ์ด ํฌ๊ธฐ๋ฅผ ๋ค๋ฅด๊ฒ ์ง์ ํ๊ธฐ / ๋ฌธ์์ด ๋ง์ง๋ง์ ๋ํ๋ด๋ ๋ฌธ์ null (\n) (0) | 2023.09.14 |
BufferedReader๋ก ๋์ด์ฐ๊ธฐ ์ ๋ ฅ๋ฐ๊ธฐ (0) | 2023.09.13 |