String a = null; System.out.println(a="aaaaa");结果输出就不写了,不知道是啥的就和我一样坐板凳等解答吧。 好像这种方式在读取流时用的比较多,以前总是一知半解,今天想用偷懒方法写判断,冒出类似的一句,想弄明白原理。 赋值操作也有返回值?
其实这种用法在我写Java程序中用的也比较多,例如:
public class Test1 { public static void main(String[] args) { System.out.println(test(1)); System.out.println(a); } public static int a; public static int test(int v){ return a = v; } }
这种连续赋值在Java中是合法的
例如:
a = b = c;
等价于:
b = c;
a = b; ######你原来的那个代码等同于: String a = null; a = 'aaaa'; System.out.println(a);###### 看原理请下Bytecode 插件 不要猜
######好像 没看出啥不对######如果Java赋值操作没有返回值,你这个语法就编译不通过了,Python, Lua赋值操作就没有返回值。######Bytecode 已经解释的很清楚了,赋值没有返回值,先把a赋值"aaaaaa" 然后再输出######String a=null;
String b=(a="aaaaa");
System.out.println(b);######异常!!!###### 举个同样的例子给楼主解惑吧:
BufferedReader reader = new BufferedReader(new FileReader(new File(""))); String line = null; while(null != (line = reader.readLine())){ //TODO }
String a=null;
a="aaa";
System.out.print(a);
这样才对 ###### 哈哈,LZ你有必要知道一点"实际中java源码编译成class的时候有各种优化的"
具体的运行代码还得看class文件格式(严格说还得看jvm实现) ######public class ExperTest { public static void testNotArgs(){ } public static void testAsrg(String a){ } public void testExper(){ String a = null; a = "aaaaa"; testNotArgs(a = "aaaaa"); testAsrg(a = "aaaaa"); } } testNotArgs(a = "aaaaa");编译报错,希望这个能给你提示。######回复 @魔法刀客 : Thank you######回复 @Soong : 你那种写法其实是 标准输入参数把表达式接收了。 相当于方法调用的时候,定义了一个临时变量接收表达式的值。######麻烦进一步解释一下呗!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。