Java 방법은 작업을 수행하기위한 일부 진술의 조합입니다. 예를 들어, System.out.println 메소드를 호출 할 때 시스템은 실제로 콘솔에서 정보를 출력하기 위해 많은 설명을 실행합니다.
이제 자신만의 방법을 만드는 방법을 배웁니다. 반환 값을 가질 수 있거나 반환 값이 없으며 매개 변수가 있거나 매개 변수가 없을 수 있습니다. 과부하 메소드는 동일한 메소드 이름을 사용하고 프로그래밍에서 초록 메소드를 사용해야합니다.
창조 방법
다음 예제를 사용하여 메소드의 구문을 설명해 봅시다.
public static int funcname (int a, int b) {// body}여기
방법에는 절차 또는 기능도 포함됩니다.
메소드의 정의에는 메소드 헤더 및 메소드 본문이 포함됩니다. 아래 그림과 같이 :
modifier returnType nameofMethod (매개 변수 목록) {// method body}위의 구문에는 포함됩니다
예
이것은 위에서 정의 된 MAX () 메소드이며, 두 매개 변수 NUM1과 NUM2를 허용하여 둘 사이의 최대 값을 반환합니다.
/** 스 니펫은 두 숫자 사이의 최소값을 반환합니다*/public static int minfunction (int n1, int n2) {int min; if (n1> n2) min = n2; else min = n1; 반환 최소; } 방법 호출
메소드를 사용하려면 메소드를 호출해야합니다. 메소드를 호출하는 방법에는 두 가지가 있으며, 하나는 리턴 값이 있고 다른 하나는 리턴 값이 없습니다.
방법을 호출하는 것은 매우 간단합니다. 프로그램이 메소드를 호출 해야하는 경우 제어 프로그램은 호출 된 메소드로 전송됩니다. 이 방법은 발신자에게 두 가지 조건을 반환합니다.
호출 문으로 void를 반환하는 메소드를 가져 가면 다음 예를 보겠습니다.
System.out.println ( "wiki.jikexueyuan.com!");
이 방법의 반환 값은 다음 예제로 이해할 수 있습니다.
int result = sum (6, 9);
예
다음 예는 메소드를 정의하는 방법과 호출 방법을 보여줍니다.
공개 클래스 exampleminnumber {public static void main (String [] args) {int a = 11; int b = 6; int c = minfunction (a, b); System.out.println ( "최소값 =" + C); } / ** 최소 2 개의 숫자를 반환합니다* / public static int minfunction (int n1, int n2) {int min; if (n1> n2) min = n2; else min = n1; 반환 최소; }}다음 결과가 생성됩니다
최소값 = 6
키워드 무효
키워드 void를 사용하면 반환 값없이 메소드를 만들 수 있습니다. 여기서 우리는 다음 예제에서 무효 메소드 메소드 란 포인트를 만듭니다. 이 방법에는 리턴 값 유형이 없습니다. 공극 방법을 호출하는 방법은 MethodRankPoints (255.7)를 선언해야합니다. Java 성명서는 다음과 같이 세미콜론으로 끝납니다.
public class examplevoid {public static void main (String [] args) {MethodRankPoints (255.7); } public static void methodrankpoints (double points) {if (points> = 202.5) {System.out.println ( "Rank : A1"); } else if (points> = 122.4) {System.out.println ( "Rank : A2"); } else {System.out.println ( "Rank : A3"); }}}이것은 다음 결과를 생성합니다.
순위 : A1
값별로 매개 변수를 전달합니다
함수를 호출 할 때 매개 변수를 전달해야합니다. 그리고 그들의 순서는 만들어 졌을 때 매개 변수 순서와 동일해야합니다. 매개 변수는 값 또는 참조로 전달할 수 있습니다.
값을 통해 매개 변수를 전달한다는 것은 메소드의 매개 변수를 호출하고 매개 변수 값을 통해 매개 변수로 전달되는 것을 의미합니다.
예
다음 프로그램은 매개 변수가 값으로 전달된다는 것을 보여주는 예를 제공합니다. 메소드를 호출 한 후 매개 변수 값이 변경되지 않습니다.
공개 클래스 스와핑 예기 {public static void main (String [] args) {int a = 30; int b = 45; System.out.println ( "스왑 전, a =" + a + "및 b =" + b); // 스왑 메소드 스왑 기능 (a, b)을 호출합니다. System.out.println ( "/n ** 전후 교환 전후에 값이 동일합니다 ** :"); System.out.println ( "교환 후 a =" + a + "및 b는" + b); } public static void swapfunction (int a, int b) {System.out.println ( "내부 (내부), a =" + a + "b =" + b); // n1 int c = a로 n1을 스왑합니다. a = b; B = C; System.out.println ( "(내부), a =" + a + "b =" + b); }}이것은 다음 결과를 생성합니다.
교환하기 전에 A = 30 및 B = 45 전 (내부), A = 30 B = 45 (내부) 후 (내부), A = 45 B = 30 ** 이제 값을 바꾸기 전과 후에 값을 바꾸면 값이 동일합니다 ** : 교환 후 A = 30과 B는 45입니다.
메소드 과부하
메소드가 둘 이상의 메소드가 있으면 이름이 동일하지만 매개 변수는 다르므로 메소드 과부하라고합니다. 덮개와 다릅니다. 오버라이드는 동일한 이름, 유형 및 매개 변수의 메소드 수를 나타냅니다.
최소 정수 번호를 찾는 이전 예를 고려해 봅시다. 플로팅 포인트 유형에서 가장 작은 숫자를 찾도록 요청하면 메소드의 과부하를 사용하여 동일한 기능 이름이지만 다른 매개 변수로 둘 이상의 메소드를 생성해야합니다.
다음 예제가 설명됩니다.
공개 클래스 example Overloading {public static void main (String [] args) {int a = 11; int b = 6; 이중 C = 7.3; 이중 D = 9.4; int result1 = minfunction (a, b); // 매개 변수가 다른 동일한 함수 이름 Double result2 = minfunction (c, d); System.out.println ( "최소 값 =" + result1); System.out.println ( "최소값 =" + result2); } // 정수의 경우 공개 정적 int minfunction (int n1, int n2) {int min; if (n1> n2) min = n2; else min = n1; 반환 최소; } // 이중 공개 정적 이중 최소 (이중 N1, 이중 N2) {double min; if (n1> n2) min = n2; else min = n1; 반환 최소; }}이것은 다음 결과를 생성합니다.
최소값 = 6 최소값 = 7.3
과부하 방법으로 프로그램을 쉽게 읽을 수 있습니다. 여기서는 두 가지 방법의 이름이 같지만 매개 변수가 다릅니다. 프로그램 실행의 결과로 최소 정수 및 부동 소수점 유형을 생성합니다.
명령 줄 매개 변수를 사용합니다
때로는 프로그램이 실행되기 전에 매개 변수를 전달하려고합니다. 이는 명령 줄 매개 변수를 기본 함수로 전달하여 달성 할 수 있습니다.
명령 줄에서 프로그램 파일을 실행하려면 파일 이름 바로 뒤에 명령 줄 매개 변수가 나타납니다. Java 프로그램에서 명령 줄 매개 변수를 허용하는 것은 매우 쉽습니다. 그들은 주요 기능 문자 배열로 전달됩니다.
예
다음 예제는 모든 명령 줄 매개 변수를 출력하는 프로그램을 보여줍니다.
public class commandline {public static void main (String args []) {for (int i = 0; i <args.length; i ++) {system.out.println ( "args [" + i + "] :" + args [i]); }}}다음과 같이 프로그램을 실행하십시오.
Java Commandline 이것은 명령 줄 200-100입니다
이것은 다음 결과를 생성합니다.
Args [0] : Thisargs [1] : Isargs [2] : Aargs [3] : Commandargs [4] : Lineargs [5] : 200Args [6] : -100
건설자
다음은 생성자 사용의 간단한 예입니다.
// 간단한 생성자 .class myclass {int x; // 다음은 생성자 myclass () {x = 10; }}생성자를 호출하여 개체를 인스턴스화 할 수 있습니다.
Public Class Condemo {public static void main (String args []) {myclass t1 = new myclass (); myclass t2 = new myclass (); System.out.println (t1.x + "" + t2.x); }}일반적으로 하나 이상의 매개 변수를 수락하려면 생성자를 사용해야합니다. 전달되는 매개 변수는 위에서 소개 된 일반 방법의 전달 매개 변수와 동일하며, 이는 생성자 이름 뒤에 매개 변수 목록을 나열하는 것입니다.
예
다음은 생성자 사용의 간단한 예입니다.
// 간단한 생성자 .class myclass {int x; // 다음은 생성자 MyClass (int i) {x = i입니다. }}생성자를 호출하여 개체를 인스턴스화 할 수 있습니다.
Public Class Condemo {public static void main (String args []) {myclass t1 = new MyClass (10); myclass t2 = 새로운 myclass (20); System.out.println (t1.x + "" + t2.x); }}이것은 다음 결과를 생성합니다.
10 20
가변 길이 매개 변수
JDK1.5를 사용하면 동일한 유형의 가변 길이 매개 변수를 전달할 수 있습니다. 다음 방법을 사용하여 선언하십시오.
typeName ... parameterName
메소드를 선언 할 때는 Ellipsis 앞에 매개 변수 유형을 지정해야하며 하나의 변수 길이 매개 변수 만있을 수 있으며 변수 길이 매개 변수는 모든 매개 변수의 마지막이어야합니다.
예
public class varargsdemo {public static void main (String args []) {// 변수 args printmax (34, 3, 3, 3, 2, 56.5)가있는 메소드를 호출합니다. printmax (new double [] {1, 2, 3}); } public static void printmax (double ... numbers) {if (numbers.length == 0) {System.out.println ( "인수가 통과되지"); 반품; } 이중 결과 = 숫자 [0]; for (int i = 1; i <numbers.length; i ++) if (numbers [i]> result) result = 숫자 [i]; System.out.println ( "최대 값은" + 결과); }}이것은 다음 결과를 생성합니다.
최대 값은 56.5입니다. 최대 값은 3.0입니다
마무리 () 메소드
쓰레기 수집기에 의해 파괴되기 전에만 호출되는 방법을 정의 할 수 있습니다. 이 방법을 최종화 () 메소드라고하며 객체를 청소하는 데 사용될 수도 있습니다.
예를 들어, Finalize ()를 사용하여 객체로 열린 파일이 닫혔는지 확인할 수 있습니다.
클래스에 Finalizer를 추가하려면 Finalize () 메소드를 정의하면됩니다. Java 가이 클래스의 객체를 재활용하려면이 메소드가 호출됩니다.
Finalize () 메소드에서 객체가 파괴되기 전에 수행 해야하는 동작을 지정합니다.
Finalize () 메소드는 일반적으로 다음과 유사합니다.
Protected Void Finalize () {// 최종화 코드}여기서 보호 된 키워드는 클래스 외부의 코드가 Finalize () 메소드에 액세스 할 수 없도록하는 것입니다.
이것은 Finalize ()가 언제 실행되었는지 알 수 없다는 것을 의미합니다. 예를 들어, 쓰레기 수집기가 발생하기 전에 프로그램이 종료되면 Finalize () 메소드가 실행되지 않습니다.
일반 방법 :
Java Generic Methods는 메소드가 컨테이너 클래스 객체 인 값을 반환 할 때 널리 사용됩니다.
public static list <t> find (class <t> clazz, String userId) {....}일반적으로 Java Generic 메소드를 작성할 때는 반환 값 유형과 하나 이상의 매개 변수 유형이 일반이어야하며 유형은 동일해야합니다. 리턴 값 유형 또는 매개 변수 유형 중 하나만 제네릭을 사용하는 경우이 일반 방법의 사용은 기본적으로 제네릭을 사용하지 않는 것과 같은 수준으로 크게 제한됩니다.
다음은 주로 두 가지 매우 유사한 Java 일반 방법의 사용과 그 차이를 소개합니다.
첫 번째 유형 :
public static <t는 getService (class <t> clazz) {t service = (t) servicemap.get (clazz.getname ()); if (service == null) {service = (t) servicelocator.getService (clazz.getName ()); servicemap.put (clazz.getname (), 서비스); } 반환 서비스; } 두 번째 유형 :
public static <t> t getService (class <? extrends commonservice> clazz) {t service = (t) servicemap.get (clazz.getname ()); if (service == null) {service = (t) servicelocator.getService (clazz.getName ()); servicemap.put (clazz.getname (), 서비스); } 반환 서비스; } 일반 메소드가있는 수업은 다음과 같습니다.
공개 초록 클래스 Commonservice {private static hashmap <string, commonservice> servicemap = new Hashmap <String, CommonService> (); // 여기에 일반 메소드 정의가 있습니다. . } 이 두 가지 일반적인 방법은 다른 방법의 서명 만 가지고 있으며 방법 본문은 정확히 동일합니다. 그래서 차이점은 무엇입니까?
그것들을 사용하면 차이점을 알게 될 것입니다.
첫 번째 일반 방법을 사용하십시오.
public class main {public static void main (string [] args) {unticeService noticeService = commonservice.getService (unceService.class); // 오류를 컴파일하지 않고 첫 번째 일반 메소드를 올바르게 사용합니다. NOTICESERVICE NOTICESERVICE = CommonService.getService (userservice.class); // 첫 번째 일반 메소드를 잘못 사용하면 컴파일 오류가 발생합니다. }} 두 번째 일반 방법을 사용하십시오.
public class main {public static void main (string [] args) {unticeervice noticeervice = commonservice.getService (unceervice.class); // 두 번째 일반 메소드를 올바르게 사용하면 컴파일 오류가 없으며 논리가 정확하며 런타임 중에는 예외가 없습니다. NOTICESERVICE NOTICESERVICE = CommonService.getService (userservice.class); // 두 번째 일반 메소드를 잘못 사용하면 컴파일 오류가 없지만 논리가 올바르지 않으며 런타임 중에 예외가 발생합니다. }}이제이 두 가지 유사한 일반적인 방법의 차이점을 알고 있습니까?