为啥 Java 的输出语句这么长?

2016-02-04 15:11:25 +08:00
 yuntong

System.out.println("");

对比其他语言的输出语句会发现它很长.

有人说也可以把这个做短了啊!

那为啥 java 官方不把他做短了呢?

7631 次点击
所在节点    Java
51 条回复
spance
2016-02-04 16:58:04 +08:00
@shyling Object 是一个 root 级抽象描述,它怎么会有 print 这样的行为?好比我们给 Car 对象定义一个 makeLove()是不是很不合逻辑?
System.out 这个对象代表了标准输出流,它有动作行为可以提供给你, write,print... 让它 print 它就输出显示了,里面是怎么一回事不需要知道,只知道你让他 print 一下他就能输出 /显示,并且这是他自己的动作,这就可以了。
leohuachao
2016-02-04 17:06:29 +08:00
面向对象就是这么写的,要弄短也只是个语法糖而已
shyling
2016-02-04 17:08:19 +08:00
@spance 举例有点没节操→_→还好吧,我只是说一个解决方案。想想 java.lang.Object 里的方法, wait/notify/notifyAll/equals/hashCode 从逻辑上不一定要位于 Object 上呀。例如放到 Waitable,Comparable,Hashable 也是可以的呀。像 golang ,内置了 println ,还可以用 fmt.Println
spance
2016-02-04 17:24:57 +08:00
@shyling 好吧,换个温柔点的比方,面向对象世界里面我们就像是女娲,不断的制造对象,并吩咐他们做 xxx ,他们再去吩咐别人 xxx ,然后所有对象都在 xxxing ,那么程序就执行起来了。
Object 是个基类,让他具有一些普世的、共通的行为,以便所有对象都有这个行为,当然也能做很多个接口去仔细的描述归类这些行为,但是也要在过度抽象和具象之间有个平衡,抽象的太狠了效率不高而且也不好用了,抽象的不够又不足以承载面向对象的思想,所以还是要平衡。
shyling
2016-02-04 17:31:13 +08:00
@spance 嗯,是这样子没错←_←,不过有时设计语言也要考虑性能啊,开发者的原因。就像上面说的基本类型不是对象, int 和 Integer 的关系,啦啦啦
zonghua
2016-02-04 17:42:49 +08:00
@echo1937 sy   so
aivier
2016-02-04 18:14:05 +08:00
Console.WriteLine(); 这个也挺麻烦的...还好 VS 有自动补全
mfaner
2016-02-04 19:13:19 +08:00
哪有用那么频繁的
WispZhan
2016-02-04 20:16:53 +08:00
我来传播 kotlin,快来信仰 jetbrains 神教。
kaneg
2016-02-04 22:20:05 +08:00
等你写过很多 Java 代码,你就会逐渐发现正规代码中几乎不会用到 System.out 来输出,而是用 log.xxx ,否则你会被 code reviewer 批。
况且 IDE 都有快捷语句,如 IDEA ,用 sout 即可
zaishanfeng
2016-02-04 22:44:24 +08:00
java 是离了 ide 活不下去的语言 还是 echo print 爽
Sumkor
2016-02-04 23:33:02 +08:00
对我来说就是 syso
jydeng
2016-02-04 23:34:47 +08:00
system.console.writeline("blabla") ,我 C#也挺长的。
saximoer
2016-02-04 23:35:01 +08:00
syso
sout

基本都只这么打了。。
onice
2016-02-04 23:49:19 +08:00
IDE 里面可以 syso 然后加上自动补全的快捷键。

System.out.println("");这个因为 Java 默认不装载 System 包,所以要写全包名。

在 Java 头部 import 下 System.out 包,程序里就可以直接用 Println 相关方法输出了。

不过。。。一般没人这么干,都是直接写的 Println 的全路径, IDE 很方便了。。。
Narcissu5
2016-02-05 00:58:55 +08:00
真正项目里面一般都是 logger.info(.....),print 实际上用的很少

实际上 print 语句除了学习和技术验证之外并没有什么卵用
woai110120130
2016-02-05 08:57:24 +08:00
可读性好 语义清晰
wizardforcel
2016-02-05 12:24:35 +08:00
因为 java 没有别名机制。

c++和 c#都有 using 。
woai110120130
2016-02-05 12:33:21 +08:00
这就是 java 的简单之美
charlie21
2016-02-05 13:23:17 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/255382

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX