當前位置:首頁 » 編程語言 » java多參數

java多參數

發布時間: 2022-04-15 02:57:53

java類中方法中的參數過多如何處理

把參數封裝成實體類啊,如果是同類型的前提下,可以用...這種數量可變的參數

⑵ java中通過鍵盤輸入獲取多個參數

importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;


publicclassTest{
publicstaticvoidmain(String[]args)throwsIOException{
BufferedReaderreader=newBufferedReader(newInputStreamReader(System.in));
Stringarg=reader.readLine();
String[]num=arg.split("");
inta=Integer.valueOf(num[0]);
intb=Integer.valueOf(num[1]);
intc=Integer.valueOf(num[2]);
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
}
}

⑶ java 方法參數過多,怎麼處理

方法中的參數是:方法在運行的時候,要用到的值…給你舉個簡單的例子,求兩個整數中的最大值假設有一個方法就做max(inta,intb);這個方法帶有兩個參數a和b(a,b都為int型)這時,你在用這個方法的時候,你就得給它兩個值,用你實際的值,代替兩個a,b,這個方法才會把最大的那個值,給你返回。如你這樣寫max(1,9);這個函數就會給返回最大的值9方法,帶有參數的話,你就得給傳參數,這樣方法才能正常的正確的執行,另外注意,所傳遞的參數的類型,否則會出錯

⑷ java中多線程常見的幾個參數

java中多線程常見的幾個參數
sleep:在指定的毫秒數內讓當前正在執行的線程休眠(暫停執行).
此操作受到系統計時器和調度程序精度和准確性的影響。
該線程不丟失任何監視器的所屬權。
調用sleep的時候鎖並沒有被釋放。
休眠
Java SE5引入了更加顯示的sleep()作為TimeUnit類的一部分,這個方法允許你指定sleep()延遲的時間單元,因此可以提供更好的可閱讀性。

wait:調用wait使線程掛起,直到線程得到了notify或notifyAll消息,線程才會進入就緒狀態。
使你可以等待某個條件發生變化,而改變這個條件超出了當前方法的控制能力。
線程的執行被掛起,對象上的鎖被釋放。意味著另一個任務可以獲得這個鎖。
因此在該對象中的其他synchronized方法可以在wait期間被調用。

yield:相當於:我的工作已經做的差不多了,可以讓給別的線程使用CPU了。
當調用yield時,你也是在建議具有相同優先順序的其他線程可以運行。
對於任何重要的控制或在調整應用時,都不能依賴於yield。
yield並不意味著退出和暫停,只是,告訴線程調度如果有人需要,可以先拿去,我過會再執行,沒人需要,我繼續執行
調用yield的時候鎖並沒有被釋放。

interrupt:中斷線程。
Thread類包含interrupt()方法,因此你可以中止被阻塞的任務。
這個方法將設置線程的中斷狀態。
如果一個線程已經被阻塞,或者試圖執行一個阻塞操作,那麼設置這個線程的中斷狀態將拋出InterruptedException。
當拋出該異常或者該任何調用Thread.interrupted()時,中斷狀態將復位。
你在Executor上調用shutdownNow(),那麼它將發送一個interrupt()調用給他啟動的所有線程。

⑸ java中,構造函數的參數太多怎麼辦

將這些參數放到一個數組里,或者一個對象中,比如:

publicclassPeople
{
privateintid;

privateStringname;

privateintage;

//如果參數的類型不一致,就要麻煩點,需要定義一個Object類型的數組
publicPeople(Object[]obj)
{
this.id=Integer.valueOf(obj[0]).inValue();
this.name=String.valueOf(ojb[1]);
this.age=Integer.valueOf(obj[2]).inValue();
}
}

以上只是描述下大致的意思,總結下,方法的參數過多時,通常的方法就是如此。

⑹ Java方法參數太多怎麼辦

引入參數對象

Person.class

public class Person {
public FullName fullName;
public Address address;
public boolean isFemale;
public boolean isEmployed;
public boolean isHomeOwner;
public Person(FullName fullName, Address address, boolean isFemale, boolean isEmployed, boolean isHomeOwner) {
this.fullName = fullName;
this.address = address;
this.isFemale = isFemale;
this.isEmployed = isEmployed;
this.isHomeOwner = isHomeOwner;
}
}

FullName.class

public class FullName {
public String lastName;
public String firstName;
public String middleName;
public String salutation;
public String suffix;
public FullName(String lastName, String firstName, String middleName, String salutation, String suffix) {
this.lastName = lastName;
this.firstName = firstName;
this.middleName = middleName;
this.salutation = salutation;
this.suffix = suffix;
}
}

Address.class

public class Address {
public String streetAddress;
public String city;
public String state;
public Address(String streetAddress, String city, String state) {
this.streetAddress = streetAddress;
this.city = city;
this.state = state;
}
}

問題:參數對象可能被濫用。如果一個開發者純粹為了減少參數數量,把聯系不緊的幾個參數強捆在一個類中這肯定是行不通的,在可讀性上甚至適得其反。

參數關系緊密合並到一個對象中

Builder模式:

Address.class
優點:客戶端代碼的可用性和可讀性得到了大大提高,構造函數的參數數量明顯減少調用起來非常直觀。單個builder構建多個對象時Builder參數可在創建期間進行調整,還可以根據對象不同而進行改變,有效的避免重載構造函數。
缺點:增加代碼量,代碼變得更加冗長(相比較參數數量的增加,相同類型的參數混在一起,可選參數的增加而言,改善代碼可讀性更有價值)
Person.class
需求:當一個對象需要不同的參數構造方法?不能寫5*5滿足所有的需求吧
適用范圍:構建對象時,如果碰到類有很多參數——其中很多參數類型相同而且很多參數可以為空時,使用Builder模式來完成。當參數數量不多、類型不同而且都是必須出現時,通過增加代碼實現Builder往往無法體現它的優勢。在這種情況下,理想的方法是調用傳統的構造函數。再者,如果不需要保持不變,那麼就使用無參構造函數調用相應的set方法吧。

代碼

public class Person {
public FullName fullName;
public Address address;
public boolean isFemale;
public boolean isEmployed;
public boolean isHomeOwner;

public Person(FullName fullName, Address address, boolean isFemale, boolean isEmployed, boolean isHomeOwner) {
this.fullName = fullName;
this.address = address;
this.isFemale = isFemale;
this.isEmployed = isEmployed;
this.isHomeOwner = isHomeOwner;
}

public static class Builder {
private FullName fullName;
private Address address;
private boolean isFemale;
private boolean isEmployed;
private boolean isHomeOwner;

/**
* 如果有必填參數這里可以構造必填構造方法
*/
public Builder() {
}

public Builder setFullName(FullName fullName) {
this.fullName = fullName;
return this;
}

public Builder setAddress(Address address) {
this.address = address;
return this;
}

public Builder setFemale(boolean female) {
isFemale = female;
return this;
}

public Builder setEmployed(boolean employed) {
isEmployed = employed;
return this;
}

public Builder setHomeOwner(boolean homeOwner) {
isHomeOwner = homeOwner;
return this;
}

public Person create() {
return new Person(fullName, address, isFemale, isEmployed, isHomeOwner);
}
}
}

FullName.class

public class FullName {
public String lastName;
public String firstName;
public String middleName;
public String salutation;
public String suffix;

public FullName(String lastName, String firstName, String middleName, String salutation, String suffix) {
this.lastName = lastName;
this.firstName = firstName;
this.middleName = middleName;
this.salutation = salutation;
this.suffix = suffix;
}

public static class Builder {
private String lastName;
private String firstName;
private String middleName;
private String salutation;
private String suffix;

public Builder() {
}

public Builder setLastName(String lastName) {
this.lastName = lastName;
return this;
}

public Builder setFirstName(String firstName) {
this.firstName = firstName;
return this;
}

public Builder setMiddleName(String middleName) {
this.middleName = middleName;
return this;
}

public Builder setSalutation(String salutation) {
this.salutation = salutation;
return this;
}

public Builder setSuffix(String suffix) {
this.suffix = suffix;
return this;
}

public FullName create() {
return new FullName(lastName, firstName, middleName, salutation, suffix);
}
}
}

public class Address {
public String streetAddress;
public String city;
public String state;
public Address(String streetAddress, String city, String state) {
this.streetAddress = streetAddress;
this.city = city;
this.state = state;
}
public static class Builder {
private String streetAddress;
private String city;
private String state;

public Builder() {
}

public Builder setStreetAddress(String streetAddress) {
this.streetAddress = streetAddress;
return this;
}

public Builder setCity(String city) {
this.city = city;
return this;
}

public Builder setState(String state) {
this.state = state;
return this;
}

public Address create() {
return new Address(streetAddress, city, state);
}
}
}

調用的地方

public static void main(String[] args) {
FullName fullName = new FullName.Builder().setFirstName("yes")
.setLastName("no").create();
Address address = new Address.Builder().setCity("china").setState("12")
.create();
Person person = new Person.Builder().setAddress(address)
.setFullName(fullName).create();
}

重載

適用范圍:方法中參數可選參數或者參數中指定參數相同

代碼

public String name(String name,int year) {
return name+year;
}
/**
* 重載
* @param name
* @return
*/
public String name(String name) {
return name+"null";
}

優點:遇到可選參數或者默認參數時,使用方法重載會十分有效。

⑺ java方法的參數可以是多個嗎

不可以,參數需要傳遞值,介面里只有方法申明,不能有參數屬性,所以傳遞介面類型沒有任何意義。

⑻ java實現一個類返回多個參數

//a介面
interface
a{
public
int
geta();
}
//b介面
interface
b{
public
int
getb();
}
//實現了某個介面必須實現其全部的方法
public
class
impab
implements
a,b{
public
int
geta()
{
return
0;
}
public
int
getb()
{
return
0;
}
}
已經很簡單的了...
呵呵....
祝樓主早日成功哈!!!

⑼ java參數過多,怎麼處理

class TestClass{ private String para=""; //表示一個參數 public void TestMethod(String para) { this.para=para; //some code here } public void OutputPara() { System.out.println("TestMethod中用到的參數是:" + this.para); }}不知道是不是這個意思

熱點內容
微信視頻如何重新緩存 發布:2025-01-21 04:44:41 瀏覽:879
pdf壓縮文件大小 發布:2025-01-21 04:40:24 瀏覽:798
linux解壓文件到指定 發布:2025-01-21 04:38:36 瀏覽:874
自己做的安卓app怎麼下載 發布:2025-01-21 04:35:07 瀏覽:163
機頂盒加密頻道 發布:2025-01-21 04:26:48 瀏覽:318
騰訊應用加密 發布:2025-01-21 04:24:38 瀏覽:988
無法訪問f 發布:2025-01-21 04:24:36 瀏覽:539
sql實時 發布:2025-01-21 04:24:27 瀏覽:998
怎麼在linux伺服器上配ip地址 發布:2025-01-21 04:22:10 瀏覽:251
咖搭姆編程 發布:2025-01-21 04:19:45 瀏覽:674