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

javathis多個參數

發布時間: 2022-04-16 18:44:08

1. 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;
}
}
已經很簡單的了...
呵呵....
祝樓主早日成功哈!!!

2. 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";
}

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

3. java 中的this關鍵字的幾種用法

  1. 當成員變數和局部變數重名時,在方法中使用this時,表示的是該方法所在類中的成員變數。(this是當前對象自己)

    代碼中的showtest(this),這里的this就是把當前實例化的p傳給了showtest()方法,從而就運行了。

4. java。 我看書上說this能在無參構造函數調用有參構造函數,但是只是粗略的介紹了下。 想問的問

您好,提問者:
1、調用構造函數格式:this();//無參數 this(xx);//有參數。

2、如果有多個構造函數,調用根據參數而決定的。

publicclassPerson{
publicPerson(){//無參數的構造函數
System.out.println("this()");
}
publicPerson(Stringname){//有一個參數的構造函數
System.out.println("this("+name+")");
}
publicPerson(Stringname,intage){//兩個參數的構造函數
System.out.println("this("+name+","+age+")");
}
publicstaticvoidgetThis(){//測試方法
//this.();調用無參的
this.("張三");//調用一個參數的
this.("小童鞋_成er",23);//調用有兩個參數的構造方法
}
publicstaticvoidmain(String[]args){
getThis();
}
}

5. java 一個方法中有多個類型相同的參數

這種技術叫方法重載
方法重載概念:
方法重載是讓類以統一的方式處理不同類型數據的一種手段。
Java的方法重載,就是在類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同個數和類型的參數來決定具體使用哪個方法, 這就是多態性。下面是一個方法重載的例子:
class MethodOverloading {
viod receive(int i) {
System.out.println("Received one int data");
System.out.println("i="+i);
}
viod receive(float f) {
System.out.println("Received one float data");
System.out.println("f="+f);
}
viod receive(String s) {
System.out.println("Received a String");
System.out.println("s="+s);
}
}
注意,Java的方法重載要求同名的方法必須有不同的參數表,僅有返回類型不同是不足以區分兩個重載的方法。

6. 如何解決javarequest請求中有多個參數的問題

通過程序遍歷http請求的所有參數放到hashmap中,用的時候方便了。

如果參數值有中文,那麼需要在程序中添加filter轉碼,或者在下面程序里,對paramValue轉碼

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

Map map = new HashMap();

Enumeration paramNames = request.getParameterNames();

while (paramNames.hasMoreElements()) {

String paramName = (String) paramNames.nextElement();

String[] paramValues = request.getParameterValues(paramName);

if (paramValues.length == 1) {

String paramValue = paramValues[0];

if (paramValue.length() != 0) {

System.out.println("參數:" + paramName + "=" + paramValue);

map.put(paramName, paramValue);

}

}

}
Map map = new HashMap();
Enumeration paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String paramName = (String) paramNames.nextElement();

String[] paramValues = request.getParameterValues(paramName);
if (paramValues.length == 1) {
String paramValue = paramValues[0];
if (paramValue.length() != 0) {
System.out.println("參數:" + paramName + "=" + paramValue);
map.put(paramName, paramValue);
}
}
}

}

7. java 構造函數中this的意思

來自新浪微博,給你詳細的說明一下this
的用法。
Java關鍵字this只能用於方法方法體內。當一個對象創建後,Java虛擬機(JVM)就會給這個對象分配一個引用自身的指針,這個指針的名字就是 this。因此,this只能在類中的非靜態方法中使用,靜態方法和靜態的代碼塊中絕對不能出現this,這在「Java關鍵字static、final 使用總結」一文中給出了明確解釋。並且this只和特定的對象關聯,而不和類關聯,同一個類的不同對象有不同的this。

package test;
public class ThisTest {
private int i=0;
//第一個構造器:有一個int型形參
ThisTest(int i){
this.i=i+1;//此時this表示引用成員變數i,而非函數參數i
System.out.println("Int constructor i——this.i: "+i+"——"+this.i);
System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));
//從兩個輸出結果充分證明了i和this.i是不一樣的!
}
// 第二個構造器:有一個String型形參
ThisTest(String s){
System.out.println("String constructor: "+s);
}
// 第三個構造器:有一個int型形參和一個String型形參
ThisTest(int i,String s){
this(s);//this調用第二個構造器
//this(i);

this.i=i++;//this以引用該類的成員變數
System.out.println("Int constructor: "+i+"/n"+"String constructor: "+s);
}
public ThisTest increment(){
this.i++;
return this;//返回的是當前的對象,該對象屬於(ThisTest)
}
public static void main(String[] args){
ThisTest tt0=new ThisTest(10);
ThisTest tt1=new ThisTest("ok");
ThisTest tt2=new ThisTest(20,"ok again!");

System.out.println(tt0.increment().increment().increment().i);
//tt0.increment()返回一個在tt0基礎上i++的ThisTest對象,
//接著又返回在上面返回的對象基礎上i++的ThisTest對象!
}
}

運行結果:

Int constructor i——this.i: 10——11
String constructor: ok
String constructor: ok again!
Int constructor: 21
String constructor: ok again!
14

細節問題注釋已經寫的比較清楚了,這里不在贅述,只是總結一下,其實this主要要三種用法:
1、表示對當前對象的引用!
2、表示用類的成員變數,而非函數參數,注意在函數參數和成員變數同名是進行區分!其實這是第一種用法的特例,比較常用,所以那出來強調一下。
3、用於在構造方法中引用滿足指定參數類型的構造器(其實也就是構造方法)。但是這里必須非常注意:只能引用一個構造方法且必須位於開始!
還有就是注意:this不能用在static方法中!所以甚至有人給static方法的定義就是:沒有this的方法!雖然誇張,但是卻充分說明this不能在static方法中使用!

說明在什麼情況下需要用到this:
第一、通過this調用另一個構造方法,用發是this(參數列表),這個僅僅在類的構造方法中,別的地方不能這么用。
第二、函數參數或者函數中的局部變數和成員變數同名的情況下,成員變數被屏蔽,此時要訪問成員變數則需要用「this.成員變數名」的方式來引用成員變數。當然,在沒有同名的情況下,可以直接用成員變數的名字,而不用this,用了也不為錯,呵呵。
第三、在函數中,需要引用該函所屬類的當前對象時候,直接用this。
其實這些用法總結都是從對「this是指向對象本身的一個指針」這句話的更深入的理解而來的,死記不然容易忘記而且容易搞錯,要理解!

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

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

9. 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);
}
}

熱點內容
db2plsql 發布:2025-01-22 08:19:10 瀏覽:778
豬豬俠腳本沒反應 發布:2025-01-22 08:08:37 瀏覽:811
賽博朋克跟永劫無間哪個配置高 發布:2025-01-22 08:07:07 瀏覽:534
請盡快上傳 發布:2025-01-22 08:06:22 瀏覽:188
河北編程培訓 發布:2025-01-22 08:01:42 瀏覽:591
a星演算法視頻 發布:2025-01-22 07:55:01 瀏覽:878
快手安卓怎麼直播 發布:2025-01-22 07:54:58 瀏覽:937
買伺服器搭建vpn 發布:2025-01-22 07:53:21 瀏覽:808
路由器忘記密碼如何解 發布:2025-01-22 07:38:47 瀏覽:154
5分鍾視頻編譯 發布:2025-01-22 07:36:33 瀏覽:772