자바 에서 의 방법 사용 에 대한 심도 있 는 설명
1.방법의 기본 용법
방법 이란 무엇 입 니까?방법 은 코드 세 션 입 니 다.C/C+언어 중의'함수'와 유사 합 니 다.
1.1 방법 이 존재 하 는 의미:
4.567917.모듈 화 할 수 있 는 조직 코드(코드 규모 가 비교적 복잡 할 때).4.567918.
4.567917.코드 가 중복 사용 되 고 한 코드 는 여러 위치 에서 사용 할 수 있 습 니 다.4.567918.
코드 를 더 쉽게 이해 할 수 있 도록4.567917.기 존의 방법 으로 직접 개발 하고 바퀴 를 중복 만 들 필요 가 없다1.2 방법 정의 문법
기본 문법:
//
public static ([ ...]){
;
[return ];
}
//
= ( ...);
코드 예시:하나의 방법 을 실현 하여 두 개의 정 수 를 덧붙이다
class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
//
int ret = add(a, b);
System.out.println("ret = " + ret);
}
//
public static int add(int x, int y) {
return x + y;
}
}
//
ret = 30
주의사항:4.567917.현재 로 서 는 main 함수 에서 호출 하 는 방법 만 있 으 면 Public 와 static 이라는 두 키 워드 를 써 야 합 니 다4.567917.방법 이 정 의 될 때 매개 변 수 는 없 을 수 있 고 있 으 면 매개 변 수 는 유형 을 지정 해 야 합 니 다
기본 규칙:
4.567917.방법 을 정의 할 때 방법 을 실행 하지 않 는 코드.호출 할 때 만 실 행 됩 니 다4.567917.방법 이 호출 될 때 실제 인삼 을 형 삼 에 게 부여 합 니 다4.567917.매개 변수 전달 이 끝나 면 방법론 코드 가 실 행 됩 니 다4.567917.방법 이 실 행 된 후에(return 문 구 를 만 났 을 때)실 행 된 후에 방법 호출 위치 로 돌아 가 계속 아래로 실 행 됩 니 다4.567917.한 가지 방법 은 여러 번 호출 될 수 있다코드 예시:계산 1!+2!+3!+4!+5!
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 5; i++) {
sum += factor(i);
}
System.out.println("sum = " + sum);
}
public static int factor(int n) {
System.out.println(" " + n + " !");
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
}
//
1 !
2 !
3 !
4 !
5 !
sum = 153
사용 방법 은 이중 순환 을 피하 고 전체 과정 을 하나의 방법 에 넣 어 코드 를 더욱 간단 하고 선명 하 게 할 수 있다.1.4 실 삼 과 형 삼 의 관계(중요)
코드 예제:두 개의 정형 변 수 를 교환 합 니 다.
class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
swap(a, b);
System.out.println("a = " + a + " b = " + b);
}
public static void swap(int x, int y) {
int tmp = x;
x = y;
y = tmp;
}
}
//
a = 10 b = 20
그러면 변수 a 와 b 의 값 이 교환 되 지 않 았 음 을 알 수 있 습 니 다.원인 분석:
기본 유형 에 있어 서 형 삼 은 실제 인삼 의 복사,즉 전송 값 호출 에 해당 한다.
해결 방법:
현재 이 문 제 를 해결 하려 면 참조 형식 인 자 를 전송 할 수 있 습 니 다(예 를 들 어 배열 로 이 문 제 를 해결 할 수 있 습 니 다).배열 의 사용 에 대해 서 는 지금 먼저 알 아 보고 나중에 정리 하 겠 습 니 다.
class Test {
public static void main(String[] args) {
int[] arr = {10, 20};
swap(arr);
System.out.println("a = " + arr[0] + " b = " + arr[1]);
}
public static void swap(int[] arr) {
int tmp = arr[0];
arr[0] = arr[1];
arr[1] = tmp;
}
}
//
a = 20 b = 10
1.5 값 을 되 돌려 주 는 방법 이 없습니다.방법의 반환 값 은 선택 할 수 있 고,어떤 때 는 없 을 수 있다.
코드 예제:
class Test {
public static void show(int x, int y) {
System.out.println("Hello World!");
}
public static void main(String[] args) {
show();
}
}
// :
Hello World!
예 를 들 어 방금 두 개의 정 수 를 교환 하 는 방법 도 값 을 되 돌려 주지 않 았 다.사용 할 때 방법 에 반환 값 이 있 는 지,있 으 면 같은 유형의 변수 로 받 아들 여야 합 니 다.2.방법의 적재량
어떤 때 는 함수 하나 로 여러 가지 파 라 메 터 를 동시에 호 환 해 야 할 때 가 있 습 니 다.이 럴 때 우 리 는 방법의 재 부팅 을 사용 합 니 다.
2.1 해결 해 야 할 문제
코드 예제:
class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
int ret = add(a, b);
System.out.println("ret = " + ret);
double a2 = 10.5;
double b2 = 20.5;
double ret2 = add(a2, b2);
System.out.println("ret2 = " + ret2);
}
public static int add(int x, int y) {
return x + y;
}
}
//
Test.java:13: : : double int
double ret2 = add(a2, b2);
^
매개 변수 형식 이 일치 하지 않 기 때문에 기 존의 add 방법 을 직접 사용 할 수 없습니다.2.2 과부하 사용
코드 예제:
class Test {
public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
public static double add(double x, double y, double z) {
return x + y + z;
}
public static void main(String[] args) {
int a = 10;
int b = 20;
int ret = add(a, b);
System.out.println("ret = " + ret);
double a2 = 10.5;
double b2 = 20.5;
double ret2 = add(a2, b2);
System.out.println("ret2 = " + ret2);
double a3 = 10.5;
double b3 = 10.5;
double c3 = 20.5;
double ret3 = add(a3, b3, c3);
System.out.println("ret3 = " + ret3);
}
}
그러면 방법 이름 은 모두 add 라 는 것 을 볼 수 있 지만 어떤 add 는 int 를 더 한 것 이 고 어떤 것 은 double 을 더 한 것 이 며 어떤 것 은 세 개의 숫자 를 더 한 것 을 계산 하기 때문에 같은 방법 이름 에 대해 서로 다른 버 전의 실현 을 제공 하 는 것 을 방법 재 업로드 라 고 한다.2.3 과부하 의 규칙
같은 클래스 에 대하 여:
방법 명 이 같다
class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
int ret = add(a, b);
System.out.println("ret = " + ret);
}
public static int add(int x, int y) {
return x + y;
}
public static double add(int x, int y) {
return x + y;
}
}
//
Test.java:13: : Test add(int,int)
public static double add(int x, int y) {
^ 1
그러면 두 방법의 이름 이 같 고 매개 변수 도 같 지만 반환 값 이 다 를 때 만 함수 재 부팅 이 되 지 않 는 다 는 것 을 알 수 있다.3.방법 재 귀
3.1 재 귀적 개념
하나의 방법 이 실행 과정 에서 자신 을 호출 하 는 것 을'재 귀'라 고 한다.
재 귀 는 수학 상의'수학 귀납법'에 해당 하 는데 시작 조건 이 있 고 그 다음 에 전달 공식 이 있다.
예 를 들 어,우 리 는 N 을 구한다!
시작 조건:N=1 시,N!위 1.이 시작 조건 은 재 귀적 인 종료 조건 에 해당 한다.
재 귀 공식:N!!직접 구하 기 힘 들 면 문 제 를 N 으로 바 꿀 수 있다!=>N*(N-1)!
코드 예시:귀속 구 N 의 곱셈
public static int factor(int n) {
if (n == 1) {
return 1;
}
return n * factor(n - 1); // factor
}
public static void main(String[] args) {
int n = 5;
int ret = factor(n);
System.out.println("ret = " + ret);
}
//
ret = 120
재 귀 하 는 방법 이 있 으 면 순환 을 사용 하지 않 아 도 된다 는 것 을 알 수 있다.그러면 그의 과정 이 어떻게 집행 되 는 지 아래 의 분석 을 살 펴 보 자.3.2 재 귀 집행 과정 분석
재 귀적 프로그램의 실행 과정 은 이해 하기 쉽 지 않 으 며,재 귀 를 정확히 이해 하려 면 방법의 실행 과정 을 먼저 이해 해 야 한다"며 특히"방법 집행 이 끝 난 뒤 호출 위치 로 돌아 가 계속 진행 해 야 한다.
코드 예제:N 단 계 를 재 귀적 으로 구하 고'로그'버 전 을 추가 합 니 다.
public static int factor(int n) {
System.out.println(" , n = " + n);
if (n == 1) {
System.out.println(" , n = 1 ret = 1");
return 1;
}
int ret = n * factor(n - 1);
System.out.println(" , n = " + n + " ret = " + ret);
return ret;
}
public static void main(String[] args) {
int n = 5;
int ret = factor(n);
System.out.println("ret = " + ret);
}
//
, n = 5
, n = 4
, n = 3
, n = 2
, n = 1
, n = 1 ret = 1
, n = 2 ret = 2
, n = 3 ret = 6
, n = 4 ret = 24
, n = 5 ret = 120
ret = 120
실행 프로 세 스 맵:3.3 재 귀 연습
코드 예제 1:한 숫자의 한 자 리 를 순서대로 인쇄 합 니 다(예 를 들 어 1234 에서 1,2,3,4 를 인쇄 합 니 다)
public static void print(int num) {
if (num > 9) {
print(num / 10);
}
System.out.println(num % 10);
}
코드 예시 2:귀속 구 1+2+3+...+10
public static int sum(int num) {
if (num == 1) {
return 1;
}
return num + sum(num - 1);
}
코드 예제 3:재 귀 방법 을 쓰 고 비 마이너스 정 수 를 입력 하여 그 숫자 를 구성 하 는 합 을 되 돌려 줍 니 다.예 를 들 어 1729 를 입력 하면 1+7+2+9 로 돌아 가 야 합 니 다.그 합 은 19 입 니 다.
public static int sum(int num) {
if (num < 10) {
return num;
}
return num % 10 + sum(num / 10);
}
코드 예제 4:피 보 나치 수열 의 N 항
public static int fib(int n) {
if (n == 1 || n == 2) {
return 1;
}
return fib(n - 1) + fib(n - 2);
}
재 귀 로 구 해 보면 앞의 몇 가지 항목 을 구 하 는 것 이 매우 빠 른 것 을 발견 할 수 있 지만 우리 가 fib(40)를 구 할 때 프로그램의 운행 속도 가 매우 느 린 것 을 발견 할 수 있다.이 유 는 재 귀 가 대량의 중복 연산 을 초래 할 수 있 기 때문이다.그렇다면 효과 적 인 해결 방법 은 교체 의 방법 을 이용 하여 해결 하 는 것 이다.
public static int fib(int n) {
int f1 = 1;
int f2 = 1;
int cur = 0;
for (int i = 3; i <= n; i++) {
cur = f1 + f2;
f2 = f1;
f1 = cur;
}
return cur;
}
// fib(40) , 102334155
3.4 귀속 소결4.567917.재 귀 는 중요 한 프로 그래 밍 으로 문 제 를 해결 하 는 방식 이다4.567917.일부 문 제 는 재 귀 방식 으로 정의 하 는 것 이다(예 를 들 어 피 보 나치 수열,이 진 트 리 등).이때 재 귀 를 사용 하여 풀 기 쉽다4.567917.일부 문 제 는 재 귀 와 비 재 귀(순환)를 사용 하면 모두 해결 할 수 있다.그러면 이때 순환 을 사용 하 는 것 을 추천 하고 재 귀 보다 비 재 귀 절차 가 더욱 효율 적 이다총결산
자바 의 방법 사용 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 방법 사용 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.