하나의 기능을 수행하는 코드
함수를 호출하여 사용하고 호출된 함수는 기능이 끝나면 제어가 반환됨
함수로 구현된 하나의 기능은 여러 곳에서 호출되어 사용될 수 있다
자료형 함수명(매개변수..){
몸체
return 반환값
}
반환을 안하려면 자료형을 void
public class FunctionTest {
public static int addNum(int num1, int num2) {
int result;
result = num1 + num2;
return result;
}
public static void sayHello(String greeting) {
System.out.println(greeting);
}
public static int calcSum() {
int sum = 0;
int i;
for(i = 0; i <= 100; i++) {
sum += i;
}
return sum;
}
public static void main(String[] args) {
int n1 = 10;
int n2 = 12;
int total = addNum(n1, n2);
System.out.println(total);
sayHello("안녕");
total = calcSum();
System.out.println(total);
}
}
Student.java
public class Student {
public int studentID;
public String studentName;
public String address;
public void showStudentInfo() {
System.out.println(studentID + " 학번의 이름은 " + studentName + "이고 주소는 " + address + "입니다.");
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String name) {
studentName = name;
}
}
StudentTest.java
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student();
studentLee.studentID = 12345;
studentLee.setStudentName("Lee");
studentLee.address = "서울 강남구";
studentLee.showStudentInfo();
Student studentKim = new Student();
studentKim.studentID = 11223;
studentKim.setStudentName("Kim");
studentKim.address = "서울 강서구";
studentKim.showStudentInfo();
}
}
클래스를 기반으로 여러 인스턴스를 생성한다
student 클래스로 lee, kim 인스턴스를 생성할 수 있다
인스턴스
클래스를 기반으로 생성된 객체
각각 다른 멤버 변수 값을 가지게 됨
new 키워드를 사용하여 인스턴스 생성
힙메모리
생성된 인스턴스는 동적 메모리에 할당됨
자바에서는 주기적으로 사용하지 않는 메모리는 수거한다
하나의 클래스로부터 여러 개의 인스턴스가 생성되고 각각 다른 메모리 주소가 할당된다
생성된 변수를 print해보면 메모리 주소를 알 수 있다
Student.java
public class Student {
public int studentNumber;
public String studentName;
public int grade;
public Student() {
}
public Student(int studentNumber, String studentName, int grage) {
this.studentNumber = studentNumber;
this.studentName = studentName;
this.grade = grage;
}
public String showStudentInfo() {
return studentName + "학생의 학번은 " + studentNumber + "이고, " + grade + "학년입니다.";
}
}
StudentTest.java
public class StudentTest {
public static void main(String[] args) {
Student studentYoo = new Student();
System.out.println(studentYoo.showStudentInfo());
//아무것도 안 넣으면 초기화된 값을 넣음 null, 0으로
Student studentKim = new Student(123, "kim", 2);
System.out.println(studentKim.showStudentInfo());
}
}
- 용어 정리
객체 : 객체 지향 프로그램의 대상, 생성된 인스턴스
클래스 : 객체를 프로그래밍 하기위해 코드로 정의해 놓은 상태
인스턴스 : new 키워드를 사용하여 클래스를 메모리에 생성한 상태
멤버 변수 : 클래스의 속성, 특성
메서드 : 멤버 변수를 이용하여 클래스의 기능을 구현한 함수
참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수
참조 값 : 생성된 인스턴스의 메모리 주소 값