메소드
*method (일)
- 일(업무)을 구분하여 정의하기위해서.
- 중복코드를 줄일 수 있다.
- 호출하여 정해진 일을 수행한다.
- instance method, static method 두 가지로 정의할 수 있다.
작성법)
1. method정의)
접근지정자 반환형 method명( 매개변수,,,,,,, ){
}
2.호출)
-static method
클래스명.method명( 값,,, );
-instance method
객체화)
클래스명 객체명=new 클래스명();
객체를 사용한 호출)
객체명.method명( 값,,, );
*static method
- 객체화 없이 호출하여 사용하는 method.
- instance variable에 저장된 값을 사용하지 않고, 업무를 처리해야하는 경우.
instance variable -객체가 가지고 있는 값을 사용하지 않는다.
-parameter로 전달되는 값이나 static 변수에 있는 값을 사용하여 일처리.
public : 클래스 외부에서 호출가능.
protected : 같은 패키지의 다른 클래스에서 호출가능.
패키지가 다르면 상속관계의 자식클래스에서만 호출가능.
default : 접근지정자를 기술하지 않는다.
같은 패키지의 다른클래스에서 호출가능.
패키지가 다르면 자식클래스에서도 호출할 수 없다.
private : 클래스 내부에서만 호출가능.
final : Override 방지
static : 객체화없이 method를 직접 호출해서 사용.
synchronized : 동기화 처리
작성법)
1.선언)
public static void method명( 매개변수,,,,, ){
업무로직 정의
}
2.호출)
클래스명.method명( 값,,,, );
ex)
*두개의 정수를 입력받아서 더한 값을 콘솔에 출력하는 일.
public class Operator{
//1.method정의
public static void plus( int num, int num2){
int result=0;
result= num+num2;
System.out.println( num+” + “+ num2+ “ = “ + result);
}
public static void main(String[] args){
//2. 호출
Operator.plus( 1, 2 );
}
}
package day0122;
/**
* static method : 객체화 하지 않고 클래스명으로 직접 호출할 수 있는 method<br>
* 객체가 가지고 있는 값을 사용하지 않고, parameter로 입력되는 값이나 static 변수에 입력된<br>
* 값으로 업무를 구현해야할 때 사용함
*/
public class UseStaticMethod {
// public static int dayOfMonth=22;
/**
* 콘솔에 메시지를 출력하는 일
*/
// public static void printMessage() {
// System.out.println("안녕하세요? 오늘은 " +dayOfMonth + "일 입니다.");
// }//printMessage
/**
* 두개의 정수를 입력받아서 더한 값을 콘솔에 출력하는 일.
*/
public static void printNumber(int number, int number2) {
int result=0;
result = number+number2;
System.out.println(number +" + "+ number2 + " = " + result);
}//printNumber
public static void main(String[] args) {
//호출
UseStaticMethod.printNumber(1,2);
}
}//class
콘솔 출력
1 + 2 = 3
*instance method
- instance variable, static variable, local variable, parameter 를 사용하여
업무를 처리할 때. ( 객체가 가지고 있는 값을 사용하여 업무를 처리할 때 )
사용법)
public void method명(매개변수,,,){
업무 구현
}
2.객체생성)
클래스명 객체명=new 클래스명();
3.호출)
객체명.mehod명( 값,,,, );
package day0122;
/**
* Instance Method 사용 <br>
* Instance variable, static variable, local variable, parameter를 사용하여 업무를 처리할 때 정의
*/
public class UseInstanceMethod {
int dayOfMonth;
/**
* Instance 변수를 사용하여 콘솔에 일자를 출력하는 일
*/
public void printDay() {
System.out.println(dayOfMonth + "일");
}
//prinDay
public static void main(String[] args) {
// printDay(); //static영역에서는 instance영역의 자원을 직접 사용할 수가 없다
//객체화) 클래스명 객체명=new 클래스명() ;
UseInstanceMethod uim=new UseInstanceMethod();
//호출 )
uim.printDay();
uim.dayOfMonth=22;
uim.printDay();
uim.dayOfMonth++;
uim.dayOfMonth++;
uim.printDay();
//인스턴스 변수는 객체마다 같은 이름의 변수가 생성되고 사용된다 (객체마다 따로 생성)
UseInstanceMethod uim2=new UseInstanceMethod();
uim2.dayOfMonth=31;
uim2.printDay();
uim.printDay();
}//main
}//class
콘솔 출력
0일
22일
24일
31일
24일
*method의 4가지 형태
고정일, 가변일, 고정값, 가변값
1.고정일 – 반환 값 없고, 매개변수 없는 형.
-항상 같은 일을 수행한다.
public void typeA(){
//일 : 입력 값이 없으므로 항상 같은 일을 수행.
}// 호출한 곳으로 돌아가!!
호출)
객체명.typeA();
2.가변일 – 반환 값 없고, 매개변수 있는 형.
public void typeB( int i ){
//매개변수를 사용한 일 => 매개변수에 따라 다른 일을 수행 => 가변 일.
//22를 사용하여 업무를 처리, 23을 사용하여 업무로직 처리
}//호출한 곳으로 돌아가!!!
호출) – method의 매개변수의 개수와 데이터 형이 일치해야 한다.
객체명.typeB( 22 );
객체명.typeB( 23 );
*값으로 사용하는 method
-method의 가장 마지막 줄에 반드시 return 이 나와야한다.
return 사용법)
return 값;
3.고정 값 – 반환형 있고, 매개변수 없는 형.
public int typeC(){
//일 => 결과
return 21;
}
호출)
데이터형 변수명=객체명.typeC();
int i=객체명.typeC(); // int i=리턴값;
4.가변 값 – 반환형 있고, 매개변수 있는 형.
public int typeD(double d ){
//일
return (int)d;
}
호출)
int 변수명=객체명.typeD(1.22);
특수문자 기능 사용법
\n | 줄 변경 | “문자열 \n문자열” |
\r | return | 커서를 해당 줄에 가장 앞으로 이동. (Windows에서는 줄을 변경 ) |
\t | Tab 출력 | “문자열 \t문자열” |
\’ | 홑 따옴표 출력 | “문자열 \’문자열\’ 문자열” |
\” | 쌍 따옴표 출력 | “문자열 \”문자열\” 문자열” |
\\ | \ | “문자열 \\문자열 문자열” – Windows애서 경로를 표현할 때 사용 |
\b | backspace | “문자열\b” |
\f | 프린터의 한줄 변경 | “문자열\f문자열” |
package day0122;
/**
* method 의 4가지 형태.
*/
public class MethodType {
/**
* 고정일 - 항상 같은 일을 수행한다. <br>
* 반환 값 없고, 매개 변수도 없는 형
*/
public void typeA() {
System.out.println("고정일");
}//typeA
/**
* 가변일 - 입력하는 값에 따라 변환
* @param 반환 값
*/
public void typeB(int param) {
System.out.println("가변일 : " + param);
}//typeB
/**
* 고정값 - 항상 같은 값을 반환
* 반환 값 없고, 매개 변수 없는 형
* @retrun 올해
*/
public int typeC() {
int year=2025;
return year;
}//typeC
/**
* 가변 값 - 반환 형 있고, 매개변수 있는 형.
* @param d 실수의 입력 값
* @return 정수로 변환 된 값
*/
public int typeD(double d) {
return (int)d;
}//typeD
public static void main(String[] args) {
//객체화 : 클래스명 객체명=new 클래스명 ();
MethodType mt=new MethodType(); //객체명 mt
//method 호출
System.out.println("-----------고정일 호출------------");
mt.typeA();
System.out.println("-----------가변 일 호출------------");
mt.typeB(23);
mt.typeB(23);
System.out.println("-----------고정값 호출------------");
mt.typeC();
//반환형이 있는 method는 값이므로 사용(출력,연산,재할당)을 해야함
System.out.println("출력 : " + mt.typeC() );
System.out.println("연산 : " + mt.typeC()+1 );
int i=mt.typeC();
System.out.println("재할당된 값 : " +i);
System.out.println("-----------가변 값 호출------------");
mt.typeD(2025.1);
System.out.println("출력 : " +mt.typeD(1.22));
System.out.println("연산 : " +(mt.typeD(2025.01))+1);
i=mt.typeD(3.16);
System.out.println("재할당 된 값 : " +i);
}//main
}//class
콘솔 출력
-----------고정일 호출------------
고정일
-----------가변 일 호출------------
가변일 : 23
가변일 : 23
-----------고정값 호출------------
출력 : 2025
연산 : 20251
재할당된 값 : 2025
-----------가변 값 호출------------
출력 : 1
연산 : 20251
재할당 된 값 : 3
*Variable Arguments ( 가변 인수 )
문법)
데이터 … 매개변수명
사용법)
1. method 선언)
public void method( 데이터 … 매개변수명 ){
//V.A의 매개변수명은 배열로 처리된다.
// 배열이 들어오면 반복문을 사용하여처리
}
2. 호출)
- 일반 method는 parameter의 데이터형과 개수를 맞춰서 호출해야한다.
- V.A는 데이터형만 일치한다면 개수는 상관 없음.
객체명.method명();
객체명.method명( 1 );
객체명.method명( 1, 2, 3, 4, 5 , 6 );
*매개 변수가 여러 개 정의된 경우 V.A가장 마지막에서 정의할 수 있다.
public void test( int i, int … j ){
public void test(int … j , int i ){ //error
public void test( int , int … j , String s ){ //error
*Escape Character ( 특수문자 )
-문자열 안에서 사용하는 기능을 가진 문자.
- \로 시작하는 한글자 (\n)
- 제공되는 특수문자 이외의 문자를 사용하면 error 가 발생한다.
문법)
“\문자”
*매개 변수가 여러 개 정의된 경우 V.A가장 마지막에서 정의할 수 있다.
public void test( int i, int … j ){
public void test(int … j , int i ){ //error
public void test( int , int … j , String s ){ //error
*Escape Character ( 특수문자 )
-문자열 안에서 사용하는 기능을 가진 문자.
- \로 시작하는 한글자 (\n)
- 제공되는 특수문자 이외의 문자를 사용하면 error 가 발생한다.
문법)
“\문자”
package day0122;
/**
* JDK1.5에서 부터 지원되는 Variable Arguments의 사용<br>
* 매개변수는 하나이지만 인수 (입력값 (argument)를 여러개 넣을 수 있는 기능.)
*/
public class UseVariableArguments {
/**
* V.A의 사용
* @param va 정수의 값을 몇개든 입력할 수 있다.
*/
public void vaMethod(int ...va) {
//V.A는 배열로 처리된다.
System.out.println(va);
for(int i=0 ; i < va.length; i++) {
System.out.println(va[i]);
}//end for
}//vaMethod
public void va2( int i, int ...j ) {
}
public void va3( int i, char c, int...j ) {
}
//V.A는 가장 마지막에만 정의해야한다.
// public void va4(int ...i, int j) {
// }
public static void main(String[] args) {
//객체화 ) 클래스명 객체명=new 클래스명();
UseVariableArguments uva=new UseVariableArguments();
//V.A를 가지고 있는 method를 호출
uva.vaMethod();
System.out.println("-------------");
uva.vaMethod(1);
System.out.println("-------------");
uva.vaMethod(1,2,3,4,5,6,7); //42억개 가능
}//main
}//class
콘솔 출력
[I@1f32e575
-------------
[I@279f2327
1
-------------
[I@2ff4acd0
1
2
3
4
5
6
7
'Java' 카테고리의 다른 글
[Java] Array,Variable Array (0) | 2025.03.16 |
---|---|
[Java] Method Overroad, this (0) | 2025.03.14 |
[Java] 제어문( if, switch~case, for, while, do, continue, return,break),Variable (0) | 2025.03.12 |
[Java] 이클립스 자바 코딩 연습(기본 문법,데이터 형,최대,최소,연산자) (0) | 2025.01.29 |
근성 개발자 성장 스토리 (0) | 2025.01.29 |