很早以前的时候看一个开源代码的时候,隐约记得其中有一个代码是在 if 块中声明的变量,但是我忘了那个代码是什么了,试着找过也没找到,自己查了写资料也没找到什么情况下是可以这样写的。
难道是我的记忆出现偏差了? 这事总会偶尔想起来,百思不解,所以这次决定问问 v 社的大佬们知道有没有这种写法了,不知道是不是新版 jdk 的特性,还是啥玩意。
隐约记得就是下面这种写法
if ((String str = "as") == "12") {
System.out.println(str);
}
再或者,,莫非当时看的不是 java 代码?因为这事很早以前的,确实记忆很模糊了。
1
MonoLogueChi 2019-01-28 20:41:59 +08:00 via Android
C#是有这种写法,Java 不清楚有没有这种语法糖
|
2
laxenade 2019-01-28 20:43:58 +08:00 via Android
if 里只能赋值不能定义,或者其实你想的是 try()?
|
3
oovveeaarr 2019-01-28 20:46:07 +08:00
我记得很久以前的 Java 并不支持这种操作也
|
4
gam2046 2019-01-28 21:00:41 +08:00
int len;
while( -1 != (len=inputstream.read())){ // do something } 是这样的感觉嘛?但变量依旧是提前申明的。 |
5
xuanbg 2019-01-28 21:15:12 +08:00
这种写法没有任何意义呀
|
7
FInt1620 2019-01-28 23:34:22 +08:00
public class Test {
int a = 0; boolean status() { a += 1; return true; } public static void main(String[] args) { Test test = new Test(); if (test.status()) System.out.println("true"); } } 上面的 if 语句也可以表示成: if ((test.a += 1) == 1) System.out.println("true"); 但不能在 if 语句内部声明变量。 |
8
mmdsun 2019-01-29 07:59:16 +08:00 via Android
try 可以。
try ( Connection connection = factory.newConnection(); Channel channel = connection.createChannel() ) { } |
9
araraloren 2019-01-29 09:00:52 +08:00
C 里面是支持的 是不是你看错了。。
|
10
zpf124 2019-01-29 09:30:03 +08:00
应该是记忆出偏差了了吧。
在 io 处理得时候经常会在 for 或者 while 语句里给变量赋值,但定义还是得放在外面的。 String line; while ((line = in.nextLine()) == null) { // balabalabala } |