자바 Day 3

Hyunsu·2023년 3월 23일
0

Today I Learned

목록 보기
3/37
post-thumbnail

오늘은 Chapter 7 배열부터 Chapter 9 패키지와 접근제어자까지 복습을 했다.

📝 목차

  1. 배열
  2. 참조 자료형
  3. 패키지와 접근제어자
  4. 정리

1. 배열

참조 자료형 배열의 각각의 값은 반드시 각각의 값을 초기화해줘야만 null 이 되지 않는다.
또한 참조 자료형은 new 를 사용하여 객체를 생성해줘야 한다.

String[] strings = new String[2];
ArrayInitValue[] array = new ArrayInitValue[2];

strings[0] = "Please visit www.GodOfJava.com";
array[0] = new ArrayInitValue();

배열을 이용해서 학생들의 키를 관리하는 문제를 풀어보았다. setData 메서드에서 배열을 초기화하려고 여러 시도를 해봤는데 참조 자료형은 new 를 사용해야한다는 점이 기억나서 풀 수 있었다.
public class ManageHeight {
	int[][] gradeHeights = new int[5][];
	
	public static void main(String[] args) {
		ManageHeight manage = new ManageHeight();
		manage.setData();
		for (int i=0; i<5; i++) {
			// manage.printHeight(i);
		}
		
		int i=0;
		while (i<5) {
			manage.printAverage(i);
			i++;
		}
	}
	
	public void setData() {
		gradeHeights[0] = new int[] {170, 180, 173, 175, 177};
		gradeHeights[1] = new int[] {160, 165, 167, 186};
		gradeHeights[2] = new int[] {158, 177, 187, 176};
		gradeHeights[3] = new int[] {173, 182, 181};
		gradeHeights[4] = new int[] {170, 180, 165, 177, 172};
	}
	
	public void printHeight(int classNo) {
		System.out.println("Class No.:" + (classNo+1));
		
		for (int i=0; i<gradeHeights[classNo].length; i++) {
			System.out.println(gradeHeights[classNo][i]);
		}
	}
	
	public void printAverage(int classNo) {
		double sum = 0.0;
		
		for(int i=0; i<gradeHeights[classNo].length; i++) {
			sum += gradeHeights[classNo][i];
		}
		
		System.out.println("Class No.:" + (classNo+1));
		System.out.println("Height average:" + (sum / gradeHeights[classNo].length));
	}
}

2. 참조 자료형

static 성질

static 메서드는 클래스 변수만 사용할 수 있다.
static 을 사용해 클래스 변수가 되면 모든 객체에서 하나의 값을 바라보기 때문에 주의해서 사용해야 한다. 또한 static 블록은 딱 한 번만 실행된다.

Pass by Value 와 Pass by Reference

기본 자료형은 무조건 Pass by value 로 데이터를 전달하며 참조 자료형은 Pass by Reference 로 데이터를 전달한다.


참조 자료형을 이용해 학생들의 정보를 관리하는 아주 간단한 프로그램을 만드는 문제를 풀어보았다.
public class ManageStudent {
	public static void main(String[] args) {
		ManageStudent std = new ManageStudent();
		Student[] student = null;
		student = std.addStudent();
		std.printStudents(student);
	}
	
	public Student[] addStudent() {
		Student[] student = new Student[3];
		student[0] = new Student("Lim");
		student[1] = new Student("Min");
		student[2] = new Student("Sook", "Seoul", "010XXXXXXXX", "ask@godofjava.com");
		return student;
	}
	
	public void printStudents(Student[] student) {
		for(int i=0; i<student.length; i++) {
			System.out.println(student[i].toString());
		}
	}
}

public class Student {
	String name;
	String address;
	String phone;
	String email;
	
	public Student(String name) {
		this.name = name;
	}

	public Student(String name, String address, String phone, String email) {
		this.name = name;
		this.address = address;
		this.phone = phone;
		this.email = email;
	}
	
	public String toString() {
		return name + " " + address + " " + phone + " " + email;
	}
}

3. 패키지와 접근제어자

패키지를 선언할 때 가장 상위 패키지의 이름으로 절대 사용하면 안되는 단어는 java 이다.

접근 제어자에는 public 과 protected 와 default 와 private 이 있다.
public 은 모든 곳에서 접근 가능하며 protected 는 같은 패키지와 상속받은 경우에만 접근할 수 있다.
default 는 같은 패키지 내에서만 private 은 해당 클래스 내에서만 접근이 가능하다.


4. 정리

메모리 구조 및 선언과 할당 정리

공부하면서 1차원 배열과 2차원 배열 및 객체 배열에 대해 다시 정리해보았다.
프린트해놓고 봐야겠다 ✍️


Reference

profile
현수의 개발 저장소

0개의 댓글