java多參數
⑴ 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); }}不知道是不是這個意思