자바 코딩
메서드 정의, 구현 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));
}
}