日期:2014-05-20  浏览次数:20776 次

Java新手,前来喷Java
rt,顺带散散技术分

本人Java新手。目前大三,学Java,大一学的C,大二自学的C++;混迹CSDN C/C++板块也快一年了。
最近新学Java,跟老师上课,看到如下代码
Java code

byte b;
b = 10;
b = b * 10;


编译器竟然报错?。。。丢失精度?
个人一直觉得这种问题应该是由程序员来负责的,编译器、语言只需要具体的执行就行了,为什么Java会报错?语言层面个人觉得不需要考虑这么细节的问题把,,

还有啊,这个Java的编译速度也太那个什么了把?一直觉得C++是编译最慢的,结果突然发现这个javac(版本:1.6.0_27)也太慢太慢了把,,

我一直以为C++是以编译速度来换取运行速度。额。。那Java呢?不知道Java的运行速度到底怎样。C++版前几天有帖子说Java的IO性能的确比C++好,但是各位Java版的大大们能不能告诉我Java的整体性能到底怎么样啊?个人认为C++是直接运行在OS上的,而Java代码则是运行在JVM上,解释运行,JDK只不过在编译成字节码的时候对代码进行了优化,从而比纯粹的解释语言快。这样的话,我觉得就总体性能来说,Java还是是比不过C++,各位大大给我你们的解释把,谢了

从百度中翻出好多年前帖子:http://topic.csdn.net/t/20041211/18/3636713.html 里面都是各种专业喷子+吵架的

额,接上文,若C++比Java快的话,为什么Java还是最流行的语言啊?总是排列在编程语言排行榜的第一名。我电脑上似乎除了作为IDE的NetBeans之外就没什么Java的程序了,我们都知道Java有一个很出众的优点就是跨平台运行,,额,,个人认为挺鸡肋的。。。在运行的机器上还要装JRE。。。。


顺带问个问题:

有没有哪位列一个Java的学习书籍列表啊?
还有就是,我们想知道C++编译器在程序员背后做了什么,都可以从汇编代码看出来,Java中有没有类似汇编码的东东啊?字节码,看不懂诶,,,

诶呀,Java木有指针好纠结啊的确减少了错误,诶,,,,


========================================我是分割线==================================================
1.我纯粹是以Java新手的身份来发这个帖子的,有什么
2.我的标题虽说是来喷的,但是我只不过在C/C++的角度来看Java。。有些迷惑不解,,求Java版的人士以专业观点解释哈,表来喷我,我很无辜的

------解决方案--------------------
先说一下你上面的问题:
Java code

byte b;
b = 10;
b = b * 10;

------解决方案--------------------
探讨

引用:
byte b;
是字节,只能是一个字节, byte b=1 或 byte b = ‘d’; byte b = ‘的’; 等等,你可以看看他们具体的作用,
有什么不解,可以继续提问,
我不知道你说的分有什么用,就是随便上来说说


我的意思就是说byte与int相乘就会编译出错。这在我看来是不可理喻的

------解决方案--------------------
Java code

//就像这样是溢出
int a;
a = Integer.MAX_VALUE;
a = a * 10;

------解决方案--------------------
就在下个人观点来看,C/C++与Java语言设计的基本方针是大相径庭的。

C语言的设计理念是追求高效率(运行速度上的高效或空间应用上的高效);
Java的设计理念是追求的是高开发效率(PS:开发效率与运行效率不是一回事,且大多数情况下两者是相互矛盾的),以及傻瓜化(是指让大多数人,即使是不懂计算机底层的人也能学会编程,而不是贬低Java程序员);
C++的设计理念是设法在运行效率与开发效率中间寻找一个最佳平衡点。

由于追求目标的不同,使得C/C++与Java在设计上存在很大的差异。
C/C++追求高效率,对程序员几乎不做任何限制,让程序员可以任意地发挥。可以直接访问地址而减少各种引用的系统消耗,甚至可以直接嵌套汇编以提升速度。
Java追求的是傻瓜化,这样可以让更多的人加入到软件开发的行业中来(这也就是Java之所以比C/C++更为流行的原因所在了,因为Java入门的门槛要低得多)。同时Java也把程序与底层完全分隔开来,取消了指针的设计,因为它对许多没接触过底层的人来说太“危险”了,也对许多细节做了非常严格的限制,以减少程序员在设计时出的错误。这样做的好处可以让程序员把精力集中到业务的设计上,而不必担心底层的东西,底层的东西SUN已经帮你做好了(现在是Oracle),缺点就是程序员只能使用JDK提供的功能,想要超越它就不可能了。