// overloading : 메소드 중복정의
//	메소드 이름은 같지만 메소드 괄호안에 있는 매개변수의 개수가 다르거나 자료형이 다르면 다른메소드이다. 
public class Ex10_overloading {
	public static void main(String[] args) {
		Test10 ob = new Test10();
		
		ob.print();
		
		short a = 10;
		ob.print(a); // int: 10
					 // 동일한 기본자료형의 인수를 가진 메소드가 없으면 
		             // 기본자료형중에 가장 가까운 큰 자료형의 메소드 호출
		
		Short b = 10; 
		ob.print(b); // Short: 10
		
		int c=10;
		ob.print(c); // int: 10
		
		long d=10;
		ob.print(d); // Long: 10
			// 매개변수 인수가 기본자료형 중 같거나 큰 것이 없는 경우
			// Wrapper 클래스가 존재하면 Wrapper에서 찾는다. 
			// Wrapper 클래스도 없으면 컴파일 오류
			// 기본자료형이 우선순위가 높음. 
            // long 은 8byte 이므로 기본자료형의 인스턴스 메소드에서 기본자료형은 int(4byte)형
            // 밖에 없으므로 Wrapper 클래스 Long 으로 가서 출력!
		
	}
}
class Test10 {
	
	public void print() {
		System.out.println("인자가 없는 메소드");
	}
	
	
/*	// 컴파일 오류. 메소드 오버로딩이 아니다. 오버로딩은 매개변수의 개수가 다르거나 자료형이 달라야한다.
	public int print() {
		return 1;
	}
	매개변수의 타입이 다르거나, 매개변수의 개수가 달라야 한다. 
	자료형이 다르다고 메소드 이름을 다 다르게 주면 가독성이 떨어짐.
	System.out.println() 메소드의 중복정의의 예.
	데이터타입이 달라도 출력하는 것은 다 같음
	
	
	리턴타입으로 구분하는 것이 아님!
*/
	// Wrapper 클래스 : 기본 자료형에 대응하는 클래스로 Short, Integer, Long 등...
	// Short : Wrapper 클래스. 기본자료형인 short를 클래스로 작성한 것★★★
	public void print(Short a) {
		System.out.println("Short: "+a);
	}
	
	public void print(int a) {
		System.out.println("int: "+a);
	}
	// Long : Wrapper 클래스. 기본자료형인 long을 클래스로 작성한 것.
	public void print(Long a) {
		System.out.println("long: "+a);
	}
	public void print(int a, int b) {
		System.out.println("매개변수 2개: "+a+","+b);
	}
	
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0714_Ex12_객체 배열  (0) 2021.07.15
0714_Ex11_method : 비정형인자  (0) 2021.07.15
0714_Ex08_recursion  (1) 2021.07.14
0714_Ex07_recursion : 재귀호출  (0) 2021.07.14
0714_Ex06_객체는 레퍼런스 변수이다.  (0) 2021.07.14
// 재귀호출
public class Ex08_recursion {
	public static void main(String[] args) {
		Test8 tt = new Test8();
		int s;
		
		s = tt.sum(10);
		System.out.println(s);

		s = tt.pow2(10);
		System.out.println(s);
		
		System.out.println(tt.pow(2, 5)); // 32.0
		System.out.println(tt.pow(2, -2)); //0.25
		
		// 최대공약수
		System.out.println(tt.gcd(12, 8)); // 4
		
	}
}
class Test8 {
	public int sum(int n) {
		return n>1 ? n+sum(n-1) : n;
	}
/*
		int s=0;
		for(int i=1; i<=n; i++){
			s+=i;
		}
		return s;
 */
		
	// 2의 x승 결과
	public int pow2(int n) {
		return n>=1 ? 2 * pow2(n-1) : 1;			
	}
	
	// x의 y승 결과
	public double pow(int x, int y) {
		if(y>=0) {
			return y>=1 ? x * pow(x, y-1) : 1;
		} else {
			return (1.0 / x) * pow(x, y+1);			
		}
	}
	
	// 최대공약수
	public int gcd(int a, int b) {
		return b==0 ? a : gcd(b, a%b);
	}
}

재귀호출 : 메소드에서 자신의 메소드를 다시 호출, 처리하지 못한 데이터는 스택!(저장공간)에 저장

// 재귀호출 : 메소드에서 자신의 메소드를 다시 호출. 처리하지 못한 데이터는 스택에 저장
public class Ex07_recursion {
	public static void main(String[] args) {
		Test7 ob = new Test7();
		ob.print(5);
		 // stack이 넘치면 StackOverflowError 발생
	}
}
class Test7 {
	public void print(int n) {
		if(n>1) {
			print(n-1); // 메소드에서 자신의 메소드를 호출
		}
		System.out.println(n);
		
	}
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0714_Ex10_overloading : 오버로딩  (0) 2021.07.14
0714_Ex08_recursion  (1) 2021.07.14
0714_Ex06_객체는 레퍼런스 변수이다.  (0) 2021.07.14
0714_Ex05_method  (0) 2021.07.14
0714_Ex04_method  (0) 2021.07.14
public class Ex06 {

	public static void main(String[] args) {
		Test6 ob1; // 레퍼런스 변수
		// ob1.print(); 컴오류. 메모리할당이 안되었으므로
		
		ob1 = new Test6(); // 메모리 할당이 되고 a=10, b=20으로 초기화 
		// 필드 a=10, b=20을 갖고 있는 주소값을 가지고 있다.
		Test6 ob2 = new Test6(); // 필드 a,b는 메모리 할당이 되고 a=10, b=20으로 초기화

		System.out.println(ob1 == ob2); // 주소가 같냐? false
		ob1.a+=100;
		System.out.println(ob1.a + ":"+ ob2.a); // 110 : 10
		
		Test6 ob3 = ob2; // ob와 ob3은 같은 주소를 나타낸다. 같은 객체
		System.out.println(ob2 == ob3); // 주소가 같냐? true
		ob3.a +=200;
		System.out.println(ob2.a+":"+ob3.a); // 210 : 210
		
		// 클래스명@해쉬코드 : 자바가 객체를 찾을 때 쓰는 코드 
		// 같은 객체는 해쉬코드가 같지만, 해쉬코드가 같다고 같은 객체는 아니다.★
		System.out.println(ob1); // ex0714.Test6@15db9742
		System.out.println(ob2); // ex0714.Test6@6d06d69c
		System.out.println(ob3); // ex0714.Test6@6d06d69c

	}

}
class Test6 {
	int a=10;
	int b=20;
	
	public void print() {
		System.out.println(a+":"+b);
	}
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0714_Ex08_recursion  (1) 2021.07.14
0714_Ex07_recursion : 재귀호출  (0) 2021.07.14
0714_Ex05_method  (0) 2021.07.14
0714_Ex04_method  (0) 2021.07.14
0714_Ex03_method  (0) 2021.07.14
public class Ex05_method {
	public static void main(String[] args) {
		Test5 tt = new Test5();
		Test5 tt2 = new Test5();
		
		tt.x = 10; tt2.x = 10;
		tt.sub();
		System.out.println(tt.x+":"+tt2.x); // 15 : 10
		
		tt.x = 10; tt2.x = 10;
		tt.sub2(tt2);
		System.out.println(tt.x+":"+tt2.x); // 10 : 15

	}
}
class Test5 {
	int x;
	public void sub() {
		x+=5; // x는 메소드를 호출한 객체의 것 
	}
	public void sub2(Test5 t) { // call by reference
		t.x+=5;
	}
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0714_Ex07_recursion : 재귀호출  (0) 2021.07.14
0714_Ex06_객체는 레퍼런스 변수이다.  (0) 2021.07.14
0714_Ex04_method  (0) 2021.07.14
0714_Ex03_method  (0) 2021.07.14
0714_Ex02_method  (0) 2021.07.14
// 파라미터 전달 방법
public class Ex04_method {
	public static void main(String[] args) {
		Test4 tt = new Test4();

		int n = 5;
		
		// call by value
		tt.sub1(n);
		System.out.println(n); // 5

		// call by reference
		tt.sub2(tt); // tt객체의 주소값을 보냄
		System.out.println(tt.x); // 15
		
		int []ss = {10,20,30};
		tt.sub3(ss);
		System.out.println(ss[1]);
		// 실인수와 가인수의 자료형은 같아야함.
		
	}
}
class Test4 {
	int x=10;
	
	// call by value(기본) : 실매개 변수와 형식 매개변수가 기억공간 따로 확보
	public void sub1(int a) {
		a = a+10;
	}
	
	// call by reference : 레퍼런스변수(객체)
	public void sub2(Test4 t) { // tt의 주소값을 t가 받음. 자료형이 Test4임.
		// 보내는 것이 Test4의 레퍼런스변수 이므로 Test4의 레퍼런스변수로 받아야함
		// 다시만드는 것이 아님. 메모리할당이 아님.
		 t.x +=5;
	}	
	
	// call by reference : 레퍼런스변수(배열)
	public void sub3(int[] nn) {
		nn[1] += 100;
	
	}
		
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0714_Ex06_객체는 레퍼런스 변수이다.  (0) 2021.07.14
0714_Ex05_method  (0) 2021.07.14
0714_Ex03_method  (0) 2021.07.14
0714_Ex02_method  (0) 2021.07.14
0714_Ex01_field  (0) 2021.07.14
public class Ex03_method {
	public static void main(String[] args) {
		Rect r = new Rect();
		
		int a, b;
		
		r.width = 10;
		r.height = 5;
		a = r.area();
		b = r.length();
		
		System.out.println("넓이:"+a+", 둘레:"+b);
		
	}
}
/*
  - 직사각형의 넓이와 둘레계산
    - 데이터(상태) : 가로, 세로
    - 메소드 : 넓이계산, 둘레계산
*/
class Rect {
	int width;
	int height;
	// 필드 선언 시, 자료형이 같아도 따로따로 선언한다.
	
	// 넓이 
	public int area() {
		return width * height;
	}
	
	// 둘레
	public int length() {
		return (width + height) * 2;
	}
	
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0714_Ex05_method  (0) 2021.07.14
0714_Ex04_method  (0) 2021.07.14
0714_Ex02_method  (0) 2021.07.14
0714_Ex01_field  (0) 2021.07.14
0713_Ex07_method  (0) 2021.07.14
public class Ex02_method {
	public static void main(String[] args) {
		Test2 ob = new Test2();
		
		String s;
		s=ob.isLeap(2021)? "윤년?" : "평년";
		System.out.println(s);
		
		int []a = {2,4,6,8,10};
		int n = ob.sum(a);
		System.out.println(n);
		
		int []num = ob.random(10);
		if(num != null) {
			for(int i=0; i<num.length; i++) {
				System.out.print(num[i]+"  ");
			}
			System.out.println();
		}
	}
}
class Test2 {
	public boolean isLeap(int y) {
		return y%4==0 || y%100 !=0 || y%400 == 0;
	}
	
	// 배열로 주어진 매개변수의 합 계산하기
	public int sum(int [] num) {
		int s=0;
		for(int n : num) {
			s+=n;
		}
		return s;
	}
	// 1~100 사이의 난수를 n개 발생하여 배열로 반환
	public int[] random(int n) {
		if(n<1) {
			return null;
		}
		
		int []a = new int[n];
		for(int i=0; i<a.length ; i++) {
			a[i] = (int)(Math.random() * 100) + 1;
		}
		
		return a; // 배열 주소 한 개를 보냄. // 그 배열의 주소 안에 값 n개가 있음
	}
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0714_Ex04_method  (0) 2021.07.14
0714_Ex03_method  (0) 2021.07.14
0714_Ex01_field  (0) 2021.07.14
0713_Ex07_method  (0) 2021.07.14
0713_Ex06_class  (0) 2021.07.14

+ Recent posts