자바 코딩

메서드 정의, 구현 Coding 연습1

akasha.park 2023. 3. 15. 11:22
클래스의 용도  - 객체를 생성하고 사용
객체? - 현실 존재하는 유형, 무형의 모든것
클래스의 구성 :  선언+속성+기능+생성자
클래스 선언 : 접근허용+유형+부모
클래스의 속성(data) :  멤버필드(인스턴스 변수, 클래스변수, 상수)
클래스의 생성자 : special method , 객체를 메모리에 인스턴스화, 객체의 속성들을 초기화
클래스의 기능   :  동작, 멤버 메서드,  클래스의 멤버필드를  처리, 사용 

AccessModifier [Modifier] class 클래스이름 [extends 부모클래스] { ...}
클래스의  선언 가능한  AccessModifier : public , (default)
클래스의  선언 가능한  Modifier (클래스의 종류)  : final, abstract
※ 클래스의 상속은 단일 상속만 지원됨

AccessModifier [Modifier] 타입 변수 [= 초기값];
멤버필드에 선언 가능한  AccessModifier : public , protected, (default), private
멤버필드에 선언 가능한  Modifier : final, static, volatile, transient
멤버필드에 선언 가능한 타입(데이터 유형) : primitive data type(8종류), reference data type(class, interface, array, enum)
멤버필드는 선언만 한 경우, 객체 생성시에 default 값으로 초기화됨


AccessModifier 클래스이름([매개변수 리스트]){ ...}
생성자 메서드에  선언 가능한  AccessModifier :  public , protected, (default), private
생성자 메서드 이름은 클래스이름과 대소문자 동일해야 함

AccessModifier [Modifier] 리턴타입 메서드이름([매개변수 리스트]){ ...}
메서드에  선언 가능한  AccessModifier : public , protected, (default), private
메서드에  선언 가능한  Modifier (메서드의 종류):  abstract, final, static, native, sychronized
메서드에  선언 가능한  리턴타입 :  void , primitive data type(8종류),reference data type(class, interface, array, enum)

하나의 클래스로부터 생성된 객체마다 고유한 속성값을 저장하려면 인스턴스변수로 설계합니다.
인스턴스 변수는 반드시 객체를 생성해서 객체.인스턴스변수로 사용, 참조해야 함

하나의 클래스로부터 생성된  모든 객체가 공유해야 하는 하나의 속성으로 설계하려면 static 변수로 정의
static 변수는 클래스 변수이며, 객체 생성 없이 클래스이름으로 참조하거나 사용할 수 있음

하나의 클래스로부터 생성된  모든 객체가  변경되지 않는 하나의 속성을 사용하려면 상수(final)로 설계합니다.

JVM이 메서드를 호출할때 실매개변수(파라미터값) 전달 방식 : 
CallByValue - 값을 복사해서 전달, 형식 매개변수의 타입이 primitive data type인 경우
CallByReference - 주소를 전달,  형식 매개변수의 타입이 참조 자료형인 경우

.java 소스코드 구성 :
pacakge선언 (optional, 0 or one)
import 선언 (optional, 0 or more, 자동으로 import되는 패키지 java.lang.*)
class 선언 (필수, 1 or more)
public static void main(String[] args) 선언은 optional, 0 or one
public class 선언은 public static void main(String[] args)가 선언된 클래스에 선언합니다.

 

Quiz1> ‘@’문자를 10개 출력하는 메서드를 작성 한 후 메서드를 세 번 호출하여 아래와 같이 출력하는 프로그램 구현
출력 예>  
first
@@@@@@@@@@
second
@@@@@@@@@@
third
@@@@@@@@@@

package lab.java.basic;

public class Quiz1 {
    public void print() {
    	for(int i=0;i<10;i++) {
    		System.out.print("@");
    	}
    	System.out.println();    	
    }
	public static void main(String[] args) {
		 //메서드 호출하려면 메서드 소유자인 클래스로부터 객체를 생성해야 함
		Quiz1 q = new Quiz1(); // 생성자 메서드
		//생성자 메서드가 정의되어 있지 않으면 컴파일시에 JDK가 기본 생성자를 만들어줌
		for(int i=0;i<3;i++) {
			switch(i+1) {
			case 1: System.out.println("first"); break;
			case 2: System.out.println("second"); break;
			case 3: System.out.println("third"); break;
			}
			q.print();
		}
	}
}


Quiz2> 
1부터 전달받은 수까지의 합을 출력하는 메서드를 작성하고 1000 이하의 자연수를 입력받아 작성한 메서드로 전달하여 출력하는 프로그램 구현
입력 예>   100
출력 예>   5050


package lab.java.basic;

import java.util.Scanner;

public class Quiz2 {
    public int hap(int last) {
    	int result =0;
    	for(int i=1;i<=last;i++) {
    		result +=i;
    	}
    	return result;
    }
	public static void main(String[] args) {
		Quiz2 q = new Quiz2();
		Scanner input = new Scanner(System.in);
		System.out.println("1000 이하의 자연수 입력>>");
		int count = input.nextInt( );
		System.out.println("1~"+count+"까지의 합 : "+q.hap(count));		 
	}
}


Quiz3> 
메서드 수행시 100이하의 자연수를 입력받아  출력 예와 같은 사각형을 출력하는 메서드를  구현 
입력 예> 3
출력 예> 
1 2 3
2 4 6
3 6 9


package lab.java.basic;

import java.util.Scanner;

public class Quiz3 {
    public void rect() {
    	Scanner input = new Scanner(System.in);
		System.out.println("100 이하의 자연수 입력>>");
		int count = input.nextInt( );
		
    	for(int i=0;i<count;i++) {
    		for(int j=0;j<count;j++) {
    			System.out.print((i+1)*(j+1) +" ");
        	} 
    		System.out.println();
    	}
    	 
    }
	public static void main(String[] args) {
		Quiz3 q = new Quiz3();
		q.rect();		 	 
	}
}



Quiz4> 
두 개의 음이 아닌 정수를 입력받아 큰 수의 제곱에서 작은 수의 제곱을 뺀 결과값을  출력하는 프로그램 구현 (두 정수를 전달받아 제곱의 차를 리턴하는 메서드로 정의하시오)
입력 예> 8 10
출력 예> 36

package lab.java.basic;

import java.util.Scanner;

public class Quiz4 {
    public int diffOfSquare(int a, int b) {		
    	int result = 0;
    	if (a> b) result = a*a - b*b;
    	else result = b*b - a*a ;
    	return result;
    }
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("100 이하의 자연수 입력>>");
		int first = input.nextInt( );
		int second = input.nextInt( );
		Quiz4 q = new Quiz4();
		System.out.print(first+"제곱과 "+second+"제곱의 차는 ");
		System.out.println(q.diffOfSquare(first, second));  	 
	}
}