如何在单个语句中定义多个变量

时间:2015-05-14 22:08:55

标签: java arrays

在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;
    }
}

6 个答案:

答案 0 :(得分:6)

您可以像这样定义多个变量:

double a,b,c;

一行中的每个变量也可以分配给特定值:

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

另一个方面是,当您在同一行中准备公共类型变量时,从右侧分配的变量可以在左侧分配变量,例如:

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

注意,您也可以通过保留在同一行来对变量进行算术运算。

答案 1 :(得分:5)

这是不可能的,但您也不需要两次致电parseFile

编写如下代码:

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

Python(我相信)支持多个返回值。 Java遵循C约定,因此不允许它。由于这不是语言的一部分,因此它的语法也不是,这意味着如果您正在进行多次返回,则需要像temp数组这样的严重错误。

答案 2 :(得分:2)

如果你的意思是;只要在两个语句之间放置一个分号,它们就会被执行,就像它们之间有一条新行一样,你可以调用:

OrderedObject<T>

您甚至可以通过删除注释(该范围到行尾)将整个文件压缩到oneliner上。作为Java编译器的第一步,通常从Java文件(在内存中)中删除间距(空格,制表符,换行符......)。

但你可能对 singe statement 更感兴趣。不支持像a = 1; b = 2; 这样的Sytax(至少目前不支持)。你可以在网上创建:

[start, stop] = parseFile(file);

答案 3 :(得分:0)

也许这就是你要找的东西:

int array[] = {1,2};

Java array assignment (multiple values)

如果您希望明确指定每个元素,我不认为您可以在一个作业中执行此操作,与下面的二维示例中的类似概念一样。这就像杰里米的答案所指出的那样。

Explicitly assigning values to a 2D Array?

答案 4 :(得分:0)

当声明多个相同类型的变量时,您可以执行以下操作:

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

答案 5 :(得分:0)

也许

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;
    }
}