Java 대상 프로그래밍에서의 사용 설명
이제 당신은 어떻게 당신의 방법을 만드는지 배울 것입니다. 그들은 되돌아오는 값도 있고 되돌아오는 값도 없고 파라미터도 있고 파라미터도 없습니다. 다시 불러오는 방법은 같은 방법의 이름을 사용하고 프로그램 설계에서 추상적인 방법을 이용해야 합니다.
작성 방법
우리는 아래의 예로 방법의 문법을 설명한다.
public static int funcName(int a, int b) {
// body
}
여기 있다
modifier returnType nameOfMethod (Parameter List) {
// method body
}
이상의 문법은이것은 위에서 정의한 방법max()입니다. 이 방법은 두 개의 매개 변수num1과num2를 받아들여 둘 사이의 최대 값을 되돌려줍니다.
/** the snippet returns the minimum between two numbers */
public static int minFunction(int n1, int n2) {
int min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
방법 호출방법을 사용하려면 이 방법은 반드시 호출되어야 한다.방법 호출에는 두 가지 방식이 있는데, 하나는 되돌아오는 값이 있고, 하나는 되돌아오는 값이 없는 것이다.
호출 방법은 매우 간단하다. 프로그램이 하나의 방법을 호출해야 할 때 제어 프로그램이 호출된 방법으로 이동하면 방법은 두 가지 조건을 호출자에게 되돌려준다.
System.out.println("wiki.jikexueyuan.com!");
이 메서드의 반환 값은 다음 예에서 이해할 수 있습니다.
int result = sum(6, 9);
예제다음 예에서는 방법을 정의하는 방법과 호출하는 방법을 보여 줍니다.
public class ExampleMinNumber{
public static void main(String[] args) {
int a = 11;
int b = 6;
int c = minFunction(a, b);
System.out.println("Minimum Value = " + c);
}
/** returns the minimum of two numbers */
public static int minFunction(int n1, int n2) {
int min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
}
다음과 같은 결과가 나타날 것이다
Minimum value = 6
키워드void키워드void는 되돌아오는 값이 없는 방법을 만들 수 있도록 합니다.다음 예에서 void 메서드 rankPoints를 만듭니다.이 방법은 반환 값 형식이 없습니다.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");
}
}
}
그러면 다음과 같은 결과가 발생합니다.
Rank:A1
값을 통해 매개 변수를 전달하다함수를 호출할 때 매개 변수는 반드시 전달되어야 한다.그리고 그들의 순서는 그들이 만들 때의 매개 변수 순서와 같아야 한다.매개 변수는 값이나 인용을 통해 전달할 수 있다.
값을 통해 매개 변수를 전달하는 것은 호출 방법의 매개 변수를 의미하고 매개 변수 값을 통해 매개 변수를 전달한다.
예제
다음 프로그램은 값을 통해 파라미터를 전달하는 예를 보여 줍니다.호출 방법 후 매개 변수 값은 변하지 않습니다.
public class swappingExample {
public static void main(String[] args) {
int a = 30;
int b = 45;
System.out.println("Before swapping, a = " +
a + " and b = " + b);
// Invoke the swap method
swapFunction(a, b);
System.out.println("
**Now, Before and After swapping values will be same here**:");
System.out.println("After swapping, a = " +
a + " and b is " + b);
}
public static void swapFunction(int a, int b) {
System.out.println("Before swapping(Inside), a = " + a
+ " b = " + b);
// Swap n1 with n2
int c = a;
a = b;
b = c;
System.out.println("After swapping(Inside), a = " + a
+ " b = " + b);
}
}
그러면 다음과 같은 결과가 발생합니다.
Before swapping, a = 30 and b = 45
Before swapping(Inside), a = 30 b = 45
After swapping(Inside), a = 45 b = 30
**Now, Before and After swapping values will be same here**:
After swapping, a = 30 and b is 45
방법의 재부팅한 방법에 두 가지 이상의 방법이 있다면 그들의 이름은 같지만 매개 변수가 같지 않으면 방법의 재부팅이라고 한다.덮어쓰기와는 다릅니다.덮어쓰기는 방법이 같은 이름, 유형, 파라미터를 가진 개수를 가리킨다.
이전의 최소 정형수의 예를 생각해 봅시다.만약 우리가 부동점형에서 가장 작은 수를 찾으라고 요구할 때, 우리는 방법의 재부팅을 이용하여 함수 이름이 같지만, 매개 변수가 다른 두 가지 이상의 방법을 만들어야 한다.
다음 예제에서는 다음과 같이 설명합니다.
public class ExampleOverloading{
public static void main(String[] args) {
int a = 11;
int b = 6;
double c = 7.3;
double d = 9.4;
int result1 = minFunction(a, b);
// same function name with different parameters
double result2 = minFunction(c, d);
System.out.println("Minimum Value = " + result1);
System.out.println("Minimum Value = " + result2);
}
// for integer
public static int minFunction(int n1, int n2) {
int min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
// for double
public static double minFunction(double n1, double n2) {
double min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
}
그러면 다음과 같은 결과가 발생합니다.
Minimum Value = 6
Minimum Value = 7.3
다시 불러오는 방법은 프로그램을 쉽게 읽을 수 있게 한다.여기서 두 가지 방법은 이름은 같지만 매개 변수는 다르다.프로그램 실행 결과로 정형과 부동점 유형의 최소수를 생성합니다.명령행 매개변수 사용
때때로 프로그램이 실행되기 전에 매개 변수를 전달하려고 합니다.이것은main 함수에 명령행 파라미터를 전달함으로써 실현할 수 있다.
명령줄에서 프로그램 파일을 실행할 때, 명령줄 매개 변수는 파일 이름 뒤에 나타납니다.명령줄 매개변수를 적용하는 것은 Java 프로그램에서 매우 쉽습니다.그것들은main 함수 문자 그룹에 전달됩니다.
예제
다음 예제에서는 모든 명령행 매개변수를 내보내는 프로그램을 보여 줍니다.
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 this is a command line 200 -100
그러면 다음과 같은 결과가 발생합니다.
args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100
구조 함수이것은 구조 함수를 간단하게 사용하는 예이다.
// A simple constructor.
class MyClass {
int x;
// Following is the constructor
MyClass() {
x = 10;
}
}
다음 방법으로 구조 함수를 호출하여 객체를 인스턴스화할 수 있습니다.
public class ConsDemo {
public static void main(String args[]) {
MyClass t1 = new MyClass();
MyClass t2 = new MyClass();
System.out.println(t1.x + " " + t2.x);
}
}
보통 구조 함수로 하나 이상의 매개 변수를 받아들여야 한다.파라미터의 전달은 상기에서 소개한 일반적인 방법의 파라미터 전달과 같다. 바로 구조 함수의 이름 뒤에 파라미터 목록을 열거하는 것이다.예제
이것은 구조 함수를 간단하게 사용하는 예이다.
// A simple constructor.
class MyClass {
int x;
// Following is the constructor
MyClass(int i ) {
x = i;
}
}
다음 방법으로 구조 함수를 호출하여 객체를 인스턴스화할 수 있습니다.
public class ConsDemo {
public static void main(String args[]) {
MyClass t1 = new MyClass( 10 );
MyClass t2 = new MyClass( 20 );
System.out.println(t1.x + " " + t2.x);
}
}
그러면 다음과 같은 결과가 발생합니다.
10 20
가변 길이 매개변수JDK1.5는 가변 길이의 같은 종류의 매개 변수를 전달할 수 있습니다.다음과 같은 방법으로 선언합니다.
typeName... parameterName
방법 설명을 할 때, 생략 번호 앞에서 매개 변수의 유형을 명확하게 해야 하며, 변수 길이만 있을 수 있고, 변수 길이는 모든 매개 변수의 마지막이어야 한다.예제
public class VarargsDemo {
public static void main(String args[]) {
// Call method with variable args
printMax(34, 3, 3, 2, 56.5);
printMax(new double[]{1, 2, 3});
}
public static void printMax( double... numbers) {
if (numbers.length == 0) {
System.out.println("No argument passed");
return;
}
double result = numbers[0];
for (int i = 1; i < numbers.length; i++)
if (numbers[i] > result)
result = numbers[i];
System.out.println("The max value is " + result);
}
}
그러면 다음과 같은 결과가 발생합니다.
The max value is 56.5
The max value is 3.0
finalize () 방법쓰레기 수집기에 폐기되기 전에만 호출되는 방법을 정의할 수 있다.이 방법은finalize () 방법이라고 하는데, 대상이 깨끗하게 제거되었는지 확인하는 데도 사용할 수 있다.
예를 들어, 대상에게 열려 있는 파일이 닫혔는지 확인하기 위해finalize () 를 사용할 수도 있습니다.
클래스에 종결자를 추가하기 위해서는finalize () 방법을 정의하기만 하면 됩니다.Java가 클래스의 객체를 회수할 때 이 메서드가 호출됩니다.
finalize () 방법에서, 대상을 없애기 전에 해야 할 행동을 지정합니다.
finalize () 방법은 일반적으로 다음과 같습니다.
protected void finalize( )
{
// finalization code here
}
여기서 키워드protected는 클래스 밖의 코드가finalize () 방법에 접근할 수 없도록 하기 위한 것입니다.이것은finalize () 가 언제 실행될지 알 수 없다는 것을 의미한다.예를 들어 프로그램이 쓰레기 수집기가 발생하기 전에 끝나면finalize () 방법은 실행되지 않습니다.
범용 방법:
java 범용 방법은 방법 반환값이 용기류의 대상일 때 광범위하게 사용된다.
public static List<T> find(Class<T> clazz,String userId){
....
}
일반적으로 자바 범주형 방법을 작성할 때 반환값 유형과 적어도 하나의 매개 변수 유형은 범주형이어야 하고 유형은 일치해야 한다. 만약에 반환값 유형이나 매개 변수 유형 중 하나만 범주형을 사용했다면 이 범주형 방법의 사용은 크게 제한되었고 기본은 범주형을 사용하지 않는 것과 같은 수준으로 제한되었다.다음은 두 가지 매우 비슷한 자바 범용 방법의 사용과 그 차이점을 소개한다.
첫 번째:
public static <T extends CommonService> 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(), service);
}
return service;
}
두 번째:
public static <T> T getService(Class<? extends CommonService> clazz) {
T service = (T) serviceMap.get(clazz.getName());
if (service == null) {
service = (T) ServiceLocator.getService(clazz.getName());
serviceMap.put(clazz.getName(), service);
}
return service;
}
다음은 범용 방법의 유형입니다.
public abstract class CommonService {
private static HashMap<String, CommonService> serviceMap = new HashMap<String, CommonService>();
//
.
.
.
}
이 두 가지 범용 방법은 방법의 서명만 다르고 방법체는 완전히 같다. 그러면 그것들은 무엇이 다르겠는가?우리가 그것들을 사용해 보면 그것들의 차이를 알 수 있다.
첫 번째 범용 방법에 사용:
public class Main {
public static void main(String[] args) {
NoticeService noticeService=CommonService.getService(NoticeService.class);// , 。
NoticeService noticeService=CommonService.getService(UserService.class);// , 。
}
}
두 번째 범용 방법에 사용:
public class Main {
public static void main(String[] args) {
NoticeService noticeService=CommonService.getService(NoticeService.class);// , , , 。
NoticeService noticeService=CommonService.getService(UserService.class);// , , , , !
}
}
이제 이 두 가지 아주 비슷한 범용 방법의 차이를 알겠죠?이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.