[英]Passing arguments in main method in java class
有人能告訴我需要聲明這樣一個類:
public class Test {
String k;
public Test(String a, String b, String c){
k = a + " " + b + " " + c; //do something
}
public void run(){
System.out.println(k);
}
public static void main(String[] args) {
String l = args[0];
String m = args[1];
String n = args[2];
Test obj = new Test(l,m,n);
obj.run();
}
}
當然它可以工作,但我不明白為什么會用這種方式來實現某些東西。 是因為我們需要將參數直接傳遞給類main方法,這就是我們使用這種方式的原因還是有其他原因?
public Test(...)
使用相同類名的目的是什么。 為什么會這樣?
public Test(...)
是一個構造函數 ,其目的是創建對象。 從示例代碼中可以清楚地看到這一點......
Test obj = new Test(l,m,n);
變量obj
通過分配給Test
的構造函數實例化為對象Test
。 在Java中,每一個構造函數必須具有完全相同的名稱(情況),因為它是用Java文件(在你的情況的構造函數Test
中Test.java被發現)。
......為什么會這樣?
這一切都取決於你想對你的對象做什么。 你可以有一個零參數構造函數(即不需要參數),並有方法設置你的l
, m
, n
,如下所示:
package net;
public class Test {
private String k;
/**
*
*/
public Test() {
super();
// TODO Auto-generated constructor stub
}
public void set(String a, String b, String c) {
k = a + " " + b + " " + c; //do something
}
public void run() {
System.out.println(k);
}
public static void main(String[] args) {
String l = args[0];
String m = args[1];
String n = args[2];
Test obj = new Test();
obj.set(l, m, n);
obj.run();
}
}
正如您所看到的,它與您的示例完全相同,但使用零參數構造函數。
如果你的類根本沒有構造函數,java會自動為你添加一個公共零參數構造函數。
希望這可以幫助。
名為Test
的方法是Test
類的所謂構造函數 。 構造函數是在編寫類似new Test(...)
的函數時調用的方法。
請記住, main
方法是static
方法,這意味着它不需要調用類Test的實例。 run
方法不是這種情況。 run
是一個實例方法,要調用它,您需要一個Test
類的實例(在您的情況下為obj
)。
公共Test(...)位是該類的構造函數。 它始終與類同名。 類和主要方法是編程的兩個完全不同的方面。 類定義具有狀態和方法的可重用組件。 main方法是從命令行調用的特殊方法。
你的例子是如此微不足道,它並沒有真正顯示面向對象編程的任何好處。 如果您考慮一個示例,其中您有不同的類交互,您可能會對它有更多的感覺。
main
方法是程序的入口點,在從命令行運行java Test
時調用。
public Test(String a, String b, String c)
是Test
類的public
構造函數 ,在調用new Test(l,m,n);
時調用new Test(l,m,n);
注意,構造函數中的a
和main方法中的l
引用相同的String
...這也適用於b
和m
; c
和n
。
作為旁注,此類期望從命令行傳遞三個值,然后將它們存儲在l
, m
和n
最后一點說明:如果你有一個帶有簽名public void run()
,你的類應該可以實現 Runnable
以便它可以在Thread
。
學習Java。
構造函數是一個被調用來創建一個對象的函數,它由一個與該類同名的函數表示,但沒有返回類型。 可以使用不同的參數聲明多個構造函數。
在這種情況下,參數從參數數組中取出,並作為參數傳遞給Test
的構造函數。
這些是Java編程語言的基本概念。 你應該閱讀Java。 嘗試用Java思考 ,這是一本很好的入門書。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.