// 폴더 -> 배열 (int에는 숫자만 가능, String에는 문자만 가능)
// 폴더 -> 숫자, 문자 가리지 않고 다 저장 가능한 개념 ==> 객체
// int [] hong = new int[3]; // 배열로는 안됨
int a;
String b;
Person c; // 폴더가 만들어졌는가? X
Person hong = new Person();// Person 설계도에 따라서 객체를 하나 만들어줘. 그리고 c 변수에 담아줘
Person lee = new Person();
// 객체(인스턴스), class
hong.age = 20;
hong.name = "홍길동";
hong.home = "서울";
// 사람을 표현하는 방법은 무한가지.
// 자바는 변수 저장할 때 자료형을 요구
// 객체는 먼저 어떻게 생겼는지 정의되어야 자바가 만들어줄 수 있다. -> 설계도(class)를 먼저 만든다
// *클래스 만들때 주의사항* 클래스 이름이 같으면 충돌이 일어남*
(패키지와 클래스도 같은 패키지 안에 있으면 충돌이 일어남)
// 자바의 변수는 최대 크기가 제한이 되어 있다. 8바이트
// 숫자(int) -> 4바이트
// 숫자 3개짜리 객체 -> 12바이트
// 객체는 크기가 커서 변수에 저장되지 않습니다.
// 변수에 저장될 작은 크기의 리모콘(참조값)을 제공한다.
Test t1 = new Test();
int a = 10;
int b = a;
System.out.println(b);
t1.num1 = 10;
System.out.println(t1.num1);
Test t2 = t1; // t1이 t2로 리모콘이 복사되었다.
System.out.println(t2.num1);
t2.num1 = 100;
System.out.println(t1.num1);
Test t3; // 객체 X. 객체의 리모콘을 저장할 변수. 대입한 것이 없기 때문에 비어 있다.
Test t4 = new Test(); // new를 하면 객체가 생성됨과 동시에 해당 객체를 조종할 수 있는 리모콘이 같이 만들어짐
// 리모콘을 잃어버리게 되면 해당 객체에 접근할 수 있는 방법이 없다.
// 위와 같이 리모콘과 연결이 해제된 객체를 가비지 객체라고 해서 나중에 자바가 싹 다 지워버린다.(가비지컬렉터)
//Function
public class Method {
public static void main(String[] args) {
Person p1 = new Person();
p1.age = 20;
p1.name = "홍길동";
// 변수 -> 정보를 저장
// 메서드 -> 동작을 수행
Person p2 = new Person();
p2.age = 30;
p2.name = "이순신";
p1.introduce2();
p2.introduce2();
}
}
// 객체(사물 표현) -> 상태/동작 -> 변수와 메서드의 집합이다.
public class Person {
// 변수는 상태를 표현한다.
int age;
String name;
// 메서드는 동작(연산)을 표현한다.
// 접근제어자 리턴타입 메서드명(매개변수) { 내용 }
// 동작은 일단 쉽게 출력으로 대체할 것임.
public void walk() {
System.out.println("사람이 걷습니다.");
}
// 매개변수
public void introduce(String name2, int age2) {
System.out.println("안녕하세요 " + age2 + "살 " + name2 + "입니다.");
}
public void introduce2() {
System.out.println("안녕하세요 " + age + "살 " + name + "입니다.");
}