ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 210419_1~2call_by_value,생성자
    JAVA(Sol)(정리대기중..언젠가) 2021. 4. 19. 10:14

     

    함수 호출

    함수는 호출해서 실행한다. 즉 호출하지않으면 실행되지 않는다.

    호출 ==> 메서드명(호출인자)

     

    주의 1. 호출인자와 수신인자는 데이타형이 같아야한다

           2. 반환형과 반환값은 데이타형이 같아야한다

           3. 리턴값이 없는 함수는 반환형이 void이다

           4. return을 만나면 함수는 종료되고 return 뒤에는 값을 호출한 곳으로 되돌려준다

     

    -----------------------------------정의 영역

     public int add(int a, b){

      int c;

          c = a+b;

     

       return c;

    }

    -----------------------------------호출 영역

    int a = 100 ;

    int b = 200;

    int c ;

        c = add (a,b) ; // call by value : 인자가 기본형 변수일때

    출력 ==> c ;


    클래스 멤버 메서드와 call by value

    call by value : 호출한다 값으로, 즉 메서드를 호출할때 인자가 기본형 데이타인 경우

    위의 코드를 살펴보면,

     특징, 수신인자의 값을 바꾸어도 호출인자의 값에 영향이 없다.

      이유 , 함수영역과 호출영역은 영역이 다르기때문에 변수들 간에 영향이 없다.

         호출 즉, 스택복사로만 값을 전달할수 있다.

    package chapter8;
    
    public class MethodTest2 {
    
    	String name = "";
    	int kuk = 0;
    	int eng = 0;
    	int tot = 0;
    	float avg = 0.0f;
    
    	public void calcTot() { //메소드정의영역//누구든지접근할수있고,반환형이없는
    		tot = kuk + eng;
    	}
    
    	public void calcAvg() {
    		avg = tot / 2.0f;             //
    	}
    
    	public static void main(String[] args) {
    
    		MethodTest2 mt = new MethodTest2(); 
            // MethomdTest2의 속성을갖는 mt라는인스턴스를 만든다
    
    		mt.kuk = 100;  //호출영역
    		mt.eng = 90;
    		mt.calcTot();  
    		mt.calcAvg();         //
    
    		System.out.println("국어 : " + mt.kuk);
    		System.out.println("영어 : " + mt.eng);
    		System.out.println("총점 : " + mt.tot);
    		System.out.println("평균 : " + mt.avg);
    
    	}
    
    }

    생성자 constructor

    1.반환형이 없고 클래스 이름과 동일한 메서드를 생성자라고 말한다.

    2.역할. new와 함께사용되며 객체 영역(heap)을 할당하는데 사용된다.

     heap -- 비교적 보관기간이 길다.

    *비교 -- stack영역은 블럭(실행)이 끝나면 바로 메모리를 반환하다.

    3.역할. 인자(지역)를 받아서 멤버변수(전역변수)를 초기화 하는 역할을 한다.

     

     class Abc {

      static int age = 100; // 클래스변수(모든 외부클래스에서 참조가능)

      int a; int b; double c; byte e;   // 멤버변수(전역변수,클래스내의 모든 메서드에서 참조)

     

    public void kkk( ) {int a; int b; //지역변수  와 전역변수의 이름이같으면 this.a 전역변수a를 가리킨다}

    public void kaa ) { }

       public Abc( ) { }

    }

     

      Abc abc =new Abc();

    abc <===this다

     

    this : 해당 클래스가 인스턴스화 되었을때 그 객체를 가리키는 키워드

          즉, this.a 전역변수로서의 의미도 있고, 객체를 만들고 난 후의 a를 말하는 것이다.

     

    전역변수 : 메서드 밖 클래스 안에 선언된 변수를 말하고, 클래스 내부의 모든 메서드에서 참조 가능하다.

    지역변수: 메서드 안에서 선언된 변수를 말한다. 메서드 안에서만 사용할 수있다.

    package chapter8;
    
    public class MethodTest3 {
    	int kuk = 0;
    	int eng = 0;
    	int tot = 0;
    	float avg = 0.0f;
    
    	public MethodTest3(int kuk, int eng) { // 생성자의 역할,반환형이없고 클래스이름과동일한것
    		this.kuk = kuk; // 매개변수(지역변수) this를붙여 전역변수this를표시
    		this.eng = eng;
    
    	}
    
    	public void calcTot() {
    		tot = kuk + eng;
    	}
    
    	public void calcAvg() {
    		avg = tot / 2.0f;
    	}
    
    	public static void main(String[] args) {
    
    		MethodTest3 mt = new MethodTest3(100, 90); // 생성자안에서 인스턴스를만들면서 초기화
    		mt.calcTot();
    		mt.calcAvg();
    
    		System.out.println("국어 :" + mt.kuk);
    		System.out.println("영어 :" + mt.eng);
    		System.out.println("총점 :" + mt.tot);
    		System.out.println("평균 :" + mt.avg);
    
    	}
    
    }
    
    
    package chapter8;
    
    public class MethodTest4 {
    
    	int kuk = 0;
    	int eng = 0;
    	int tot = 0;
    	float avg = 0;
    
    	public MethodTest4(int kuk, int eng) {
    		this.kuk = kuk;
    		this.eng = eng;
    	}
    
    	public void calcTot() {
    		tot = kuk + eng;
    	}
    
    	public void calcAvg() {
    		avg = tot / 2.0f;
    	}
    
    	public void prn() {
    		System.out.println("국어 :" + kuk);
    		System.out.println("영어 :" + eng);
    		System.out.println("총점 :" + tot);
    		System.out.println("평균 :" + avg);
    
    	}
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    //처리식을 코딩하세요 : 객체화와 멤버의 호출
    
    		MethodTest4 mt = new MethodTest4(100, 90); // 인스턴스화,초기화
    
    		mt.calcTot();
    		mt.calcAvg();
    		mt.prn();
    
    	}
    }
    
    package chapter8; //컴포넌트 클래스, 처리클래스
    
    public class MethodTest5 {
    	int kuk = 0;
    	int eng = 0;
    	int tot = 0;
    	float avg = 0.0f;
    
    	public MethodTest5(int kuk, int eng) { //생성자,
    		this.kuk = kuk;
    		this.eng = eng;
    	}
    
    	public void calcTot() {
    		tot = kuk + eng;
    	}
    
    	public void calcAvg() {
    		avg = tot / 2.0f;
    	}
    
    	public void prn() {
    		System.out.println("국어 :" + kuk);
    		System.out.println("영어 :" + eng);
    		System.out.println("총점 :" + tot);
    		System.out.println("평균 :" + avg);
    	}
    
    }
    
    package chapter8;
    
    public class MethodTestMain5 {
    //컴포넌트이용 클래스
    	public static void main(String[] args) {
    		MethodTest5 mt = new MethodTest5(90, 90);
    
    		mt.calcTot();
    		mt.calcAvg();
    		mt.prn();
    
    	}
    
    }
    

     

Designed by Tistory.