1. Java 기초 다지기 (4)
1) 클래스 선언
class Person{ // class : 예약어 , Person : 식별자(identifier)
// [접근제한자] 생략하면 package가 디폴트
// 자바는 1개의 소스코드 파일안에 여러개의 클래스를 생성할 수 있다
// *단 public을 부여할 수 있는 클래스는 소스코드파일명과 동일한 클래스에만 가능
// 속성(멤버필드) 생성 : 값을 저장하기 위함
String name;
int age;
// 메서드(멤버메서드) 생성 : [접근제한자] [지정예약어] 반환형 메서드명([인수]){}
// * []은 옵션사항
void work() {
System.out.println(name + "님이 일을 합니다.");
}
}
public class Day4_class {
public static void main(String[]arg) {
Person p1 = new Person(); // 객체 p1 생성 . 인스턴스 생성 . p1의 타입은 Person 클래스
System.out.println(p1);
p1.name = "임정민";
p1.age = 26;
p1.work();
Person p2 = new Person();
p2.name = "심청이";
p2.age = 20;
p2.work();
System.out.println();
Person2 p3 = new Person2();
Person2 p4 = new Person2()
// 생성자를 호출함. new => 동적할당을 해라
// 생성자: 1. 클래스를 식별함 2. 멤버필드를 초기화함
// 생성자 없을 때는 Default 생성자. 인수없이 호출가능한 생성자
p3.work();
p4.work();
}
}
2) 클래스, 배열, String 활용
public class Day4 {
public static int[] makeAry(int a, int b) {
return new int [] {a,b};
}
public static void main(String[]arg) {
int arr [] = new int [2]; // new : Heap에 공간을 할당하라. Heap의 공간은 자동으로 초기화 0,false,null('\0')
arr = makeAry(1,2);
System.out.println(arr[0]);
System.out.println(arr[1]);
// String 객체
System.out.println();
String n1 = "홍길동"; // * 문자열들은 Heap 안의 String pool에 저장됌
String n2 = "홍길동"; // * 이런식으로 String pool에 저장하며 메모리 사용량 적게 하자
System.out.println(n1 == n2 );
System.out.println();
String n3 = new String("홍길동"); // * new 라고 하면 각각 저장함
String n4 = new String("홍길동");
System.out.println(n3 == n4); // 주소비교
System.out.println(n3.equals(n4)); // 값 비교
System.out.println();
String n5 = "홍길동"; // "홍길동" "님"은 Heap 안의 String pool 저장
String n6 = n5 + "님"; // 새로운 "홍길동님"은 stack에 저장
System.out.println(n5 == n6 );
System.out.println(n3 == n5 );
System.out.println(n3.equals(n5) );
System.out.println(n4.equals(n5) );
System.out.println(n3.equals(n4));
// 2차원 배열
int arr1 [][];
int [] arr2 [];
int [][]arr3; // *주로 많이 쓰는 형식
// Objects 클래스의 equals 함수 (라이브러리 추가)
// 객체형 배열
String nn = "홍길동"; // String 은 클래스임. 클래스 이름은 무조건 대문자
// String 은 내부에 문자열을 저장하기 위한 배열을 가진 클래스
// nn 은 4 byte. 객체형은 무조건 4 byte (32bit 기준)
String [] names = new String[] {"홍길동", nn, "이순신"};
// Heap (String pool) Stack
// 홍길동 / 이순신 / 0x80 / 0x80 / 0x100 | 0x200 (names)
// 0x80 0x100 0x200
// for (자료형 변수 : 컬렉션) {
// 컬렉션=(집합체) 1. 배열 2.자바에서 제공하는 프레임워크 ex) Set,Map,Tree,Queue
// =(순서가 있는 집합체)
// }
for (String name : names) { // *향상된 for문 이라고 함
System.out.println(name);
}
}
}
감사합니당🐷🐷🐷