Java有类似于Python [a, b, c] = (1, 2, 3)或PHP的东西list($a, $b, $c) = array(1, 2, 3)吗?
并不是的.您可以x = y = 0设置多个变量,但不能像Python那样进行并行赋值.
Python的多重赋值相当强大,因为它也可以用于并行赋值,如下所示:
(x,y) = (y,x) # Swap x and y
Run Code Online (Sandbox Code Playgroud)
Java中并行赋值没有等价物; 你必须使用一个临时变量:
t = x; x = y; y = t;
Run Code Online (Sandbox Code Playgroud)
您可以在一行中从表达式中分配多个变量,如下所示:
int a = 1, b = 2, c = 3;
Run Code Online (Sandbox Code Playgroud)
或者从数组映射,您可以这样做:
int a = array[0], b = array[1], c = array[2];
Run Code Online (Sandbox Code Playgroud)
如果这看起来过于冗长,您可以临时为数组创建一个单字母引用以进行赋值:
int[] t = array;
int a = t[0], b = t[1], c = t[2];
Run Code Online (Sandbox Code Playgroud)
在代码在列表或数组中传递几个相关变量(可能是不同类型)的情况下,获得更多问题的根源,Python中的多项赋值往往会很方便.在Java(或C/C++)中,更常用的方法是创建一个小数据类(或结构)来将这些变量捆绑在一起,让生产者和消费者都使用它.然后,您可以按名称而不是索引来引用字段,如下所示:
class Foo {
public int a;
public int b;
public int c;
}
/* ... */
Foo produceFoo() {
Foo f = new Foo();
f.a = 1;
f.b = 2;
f.c = 3;
return f;
}
/* ... */
Foo f = produceFoo();
System.out.println(f.a + "," + f.b + "," + f.c);
Run Code Online (Sandbox Code Playgroud)
这也为后来的重构打开了大门,这将使Foo成为一个真正的类,具有行为和封装的私有数据,而不仅仅是数据类.
| 归档时间: |
|
| 查看次数: |
12051 次 |
| 最近记录: |