Java 如何在一条语句中定义多个变量
在Python中,我可以用一行数组定义两个变量Java 如何在一条语句中定义多个变量,java,arrays,Java,Arrays,在Python中,我可以用一行数组定义两个变量 >>>[a,b] = [1,2] >>>a 1 >>>b 2 在Java中如何做同样的事情 我在PCT类中有几个变量,类型是final。有没有一种方法可以像Python一样在一行中定义它们?以下格式在Java中显然不起作用。我可以分别定义它们,但它将调用parseFile方法两次,我希望避免这种情况 public class PCT { final int start; fin
>>>[a,b] = [1,2]
>>>a
1
>>>b
2
在Java中如何做同样的事情
我在PCT类中有几个变量,类型是final。有没有一种方法可以像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;
}
}
这是不可能的,但是您也不需要调用
parseFile
两次
按如下方式编写代码:
int [] temp = parseFile(file);
start = temp[0];
stop = temp[1];
Python(我相信)支持多个返回值。Java遵守C约定,因此不允许这样做。因为这不是语言的一部分,所以它的语法也不是,这意味着如果你在做多重返回,就需要像
temp
数组这样稍微粗俗的黑客攻击;只要在两条语句之间放一个分号,它们就会像中间有新行一样执行,因此您可以调用:
a = 1; b = 2;
您甚至可以通过删除注释(该范围到行尾)将整个文件压缩为一行。间隔(空格、制表符、新行等)通常作为Java编译器的第一步从Java文件(内存中)中删除
但你可能对一个单独的声明更感兴趣。Sytax like[start,stop]=parseFile(文件)代码>不受支持(至少目前不支持)。您可以创建一个在线:
int[] data = parseFile(file); start = data[0]; stop = data[1];
也许这就是你想要的:
int array[] = {1,2};
如果您希望显式地分配给每个元素,我不认为您可以在一个分配中完成,就像下面的二维示例中的类似概念一样。正如杰里米的回答所说,这似乎是你想要的
声明同一类型的多个变量时,可以执行以下操作:
int a = 1, b = 2, c = 3; //etc.
您可以这样定义多个变量:
double a,b,c;
一行中的每个变量也可以指定给特定值:
double a=3, b=5.2, c=3.5/3.5;
另一个方面是,当您在同一行中准备公共类型变量时,您可以从右侧指定的变量向左侧指定变量,例如:
int a = 4, b = a+1, c=b*b;
注意,您也可以通过保持在同一行来练习对变量的算术运算。也许吧
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;
}
}
只是好奇你为什么想要这个?仅为了将2行减少为1行?@noMAD:这是Python/Octave/Matlab/中非常方便的功能。。。world在一条语句中传递/设置多个参数。C/C++/Java家族缺少的东西。