함수란

하나의 기능을 수행하는 코드
함수를 호출하여 사용하고 호출된 함수는 기능이 끝나면 제어가 반환됨
함수로 구현된 하나의 기능은 여러 곳에서 호출되어 사용될 수 있다

  • 함수를 정의하기
    함수는 이름, 매개 변수, 반환값, 몸체로 구성된다
자료형 함수명(매개변수..){
	몸체
    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 키워드를 사용하여 클래스를 메모리에 생성한 상태
    멤버 변수 : 클래스의 속성, 특성
    메서드 : 멤버 변수를 이용하여 클래스의 기능을 구현한 함수
    참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수
    참조 값 : 생성된 인스턴스의 메모리 주소 값
profile
안녕하세요. Chat JooPT입니다.

0개의 댓글