簡體   English   中英

如何在單個語句中定義多個變量

[英]How to define multiple variables in single statement

在Python中,我可以在一行中定義兩個帶有數組的變量。

>>>[a,b] = [1,2]
>>>a
1
>>>b
2

我如何用Java做同樣的事情?

我在PCT類中有幾個變量,類型是最終的。 有沒有辦法像Python一樣在一行中定義它們? 以下格式顯然不適用於Java。 我可以單獨定義它們,但它會調用parseFile方法兩次,我想避免。

public class PCT {
    final int start;
    final int stop;
    public PCT (File file) {
        //......
        //......
        // the following statement does not compile
        [start, stop] = parseFile(file);
    }
    public int[] parseFile(File f) {
        int[] aa = new int[2];
        // ....
        // ....
        return aa;
    }
}

您可以像這樣定義多個變量:

double a,b,c;

一行中的每個變量也可以分配給特定值:

double a=3, b=5.2, c=3.5/3.5;

還有一個方面是,當您在同一行中准備公共類型變量時,從右側分配的變量可以在左側分配變量,例如:

int a = 4, b = a+1, c=b*b;

注意,您還可以通過保留在同一行來對變量進行算術運算。

這是不可能的,但您也不需要兩次調用parseFile

像這樣寫你的代碼:

int [] temp = parseFile(file);
start = temp[0];
stop = temp[1];

Python(我相信)支持多個返回值。 Java遵循C約定,因此不允許它。 由於這不是語言的一部分,因此它的語法也不是,這意味着如果您正在進行多次返回,則需要像temp數組那樣略有嚴重的黑客攻擊。

如果你的文字意味着 ; 只要在兩個語句之間放置一個分號,它們就會被執行,就像它們之間有一條新行一樣,你可以調用:

a = 1; b = 2;

您甚至可以通過刪除注釋(該范圍到行的末尾)將整個文件壓縮到oneliner中。 作為Java編譯器的第一步,通常從Java文件(在內存中)中刪除間距(空格,制表符,換行符......)。

但你可能對這個聲明更感興趣。 Sytax喜歡[start, stop] = parseFile(file); 不受支持(至少目前不支持)。 你可以做一個在線人:

int[] data = parseFile(file); start = data[0]; stop = data[1];

也許這就是你要找的東西:

int array[] = {1,2};

Java數組賦值(多個值)

如果你想明確地分配給每個元素,我認為你不能在一個任務中做到這一點,就像下面的二維示例中的類似概念一樣。 這正如傑里米的答案所指出的那樣。

明確地將值分配給2D數組?

聲明多個相同類型的變量時,可以執行以下操作:

int a = 1, b = 2, c = 3; //etc.

也許

public class PCT 
{
    final Point pos;  // two ints!

    public PCT (File file) 
    {
        pos = parseFile(file);
    }

    public int[] parseFile(File f) 
    {
        Point aa = new Point();
        // ....
        // ....
        return aa;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM