Java_기초_Day4

임정민·2022년 10월 24일
0

언어공부

목록 보기
4/10
post-thumbnail

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);
			}
	}
	
}

감사합니당🐷🐷🐷

profile
https://github.com/min731

0개의 댓글