10条困惑java程序员的地方

问题描述

如果你是JAVA程序员,是不是经常这样被困扰?一,重复的类型申明Useruser=newUser();说明:Java是静态语言,为了这一点,声明变量的时候必须明确告诉编译器该变量的类型。Java编译器就不能智能点吗?二,临时变量inttotal=0;for(inti=0;i<10;i++){total+=i;}说明:total和i变量,造成局部代码臃肿,代码有更多的状态,多线程控制非常困难。三,static对面向对象的冲击publicclassPerson{publicstaticinttotal=0;}说明:static把不属于对象模板的东西硬生生的塞进去,使得模板不伦不类。四,不支持高阶函数和闭包publicvoidloan(operate){BufferedReaderin=null;try{in=newBufferedReader(newFileReader(filename));operate}catch(Exceptione){e.printStackTrace();}finally{in.close();}}说明:不能以函数作为参数,使得Java处理上面类似的需求时,最优雅的实现就是:先申明一个接口,写多个类实现这个接口中的方法,然后把这个接口作为这个函数的参数。结果便是,类的数量迅速增加,类也变成了只是一个方法的包装器!五,switch只支持int和enum类型switch(name){//java不支持这样写case"zhangshan":...case"lisi":...case"wangwu":...default:...}说明:相信有很多Java程序员质疑,Java的switch为什么只支持int和enum类型?六,synchronized泛滥publicsynchronizedvoidgetResouce(){...}说明:Java编程中最难的要数多线程编程,synchronized是很多程序员迈不过的槛!七,转义之痛Stringpath="c:\test\test.java";Stringcontent="hello,"MrRight"";说明:转义,让优秀的程序员也不得不从流畅的编程中停下来,为编译器的无能做低级劳动。八,运算符重载publicclassComplex{privateintreal;privateintimaginary;+(Complexcomplex){returnnewComplex(real+complex.real,imaginary+complex.imaginary);}}说明:运算符重载,多么优美的风景线,Java却无情的拉上了封条。九,繁琐的多重循环for(inti=0;i<n;i++){for(intj=0;j<m;j++){...}}说明:大家也许已经习惯了多重循环,但我们为什么要习惯这种笨拙的实现?十,多余的字符publicStringgetName(){returnthis.name;}说明:()必须吗?String必须吗?return必须吗?.必须吗?;必须吗?本文摘自:编程十万个为什么(http://www.bcwhy.com)详细出处请参考:http://www.bcwhy.com/thread-1816-1-1.html

解决方案

解决方案二:
eggspain
解决方案三:
你说的这些,在Scala,Erlang,Haskell等函数式编程语言中解决了,在Java这类静态语言中还没有什么办法。
解决方案四:
java语言比C++简单多啦,知足吧!
解决方案五:
抱怨鸡长的不像鸭子。
解决方案六:
繁琐不繁琐,那是习惯问题。让你用scala写底层应用,不见得你就能高兴得起来。。。我们现在就面临这个尴尬的处境...java--->scala
解决方案七:
怎么我看很多都是不是语言的问题,而是写代码或者系统设计的问题4JAVA8有专门对这个有优化,自动使用多线程5JAVA7解决7什么语言没有转义
解决方案八:
该回复于2011-04-19 09:55:10被版主删除
解决方案九:
别忘了,字符串不能用==号的。可能是为了考虑跨平台,只能使用所有系统的最小公分母。这和我们现在写JS或者CSS一样,不用的浏览器完全不一样,只能用都支持的,没有办法的事情。
解决方案十:
兄弟,转ror吧。。。
解决方案十一:
其实有些说的很有道理的!
解决方案十二:
四,不支持高阶函数和闭包publicvoidloan(operate){BufferedReaderin=null;try{in=newBufferedReader(newFileReader(filename));operate}catch(Exceptione){e.printStackTrace();}finally{in.close();}}说明:不能以函数作为参数,使得Java处理上面类似的需求时,最优雅的实现就是:先申明一个接口,写多个类实现这个接口中的方法,然后把这个接口作为这个函数的参数。结果便是,类的数量迅速增加,类也变成了只是一个方法的包装器!特别是这一条深有感触!
解决方案十三:
该回复于2011-04-21 09:37:30被版主删除
解决方案十四:
用在合适的地方就是和谐的:)引用4楼zangxt的回复:

抱怨鸡长的不像鸭子。

O(∩_∩)O哈哈~
解决方案十五:
引用5楼xiaotugege的回复:

繁琐不繁琐,那是习惯问题。让你用scala写底层应用,不见得你就能高兴得起来。。。我们现在就面临这个尴尬的处境...java--->scala

不知道你写的东西有多底层?硬件驱动程序?
解决方案:
引用4楼zangxt的回复:

抱怨鸡长的不像鸭子。

没明白LZ想说明的什么?
解决方案:
引用14楼bao110908的回复:

引用5楼xiaotugege的回复:繁琐不繁琐,那是习惯问题。让你用scala写底层应用,不见得你就能高兴得起来。。。我们现在就面临这个尴尬的处境...java--->scala不知道你写的东西有多底层?硬件驱动程序?

难道我给你解释了。你能明白?
解决方案:
引用16楼xiaotugege的回复:

引用14楼bao110908的回复:引用5楼xiaotugege的回复:繁琐不繁琐,那是习惯问题。让你用scala写底层应用,不见得你就能高兴得起来。。。我们现在就面临这个尴尬的处境...java--->scala不知道你写的东西有多底层?硬件驱动程序?难道我给你解释了。你能明白?

难道Java程序会的只有Java么?
解决方案:
引用16楼xiaotugege的回复:

引用14楼bao110908的回复:引用5楼xiaotugege的回复:繁琐不繁琐,那是习惯问题。让你用scala写底层应用,不见得你就能高兴得起来。。。我们现在就面临这个尴尬的处境...java--->scala不知道你写的东西有多底层?硬件驱动程序?难道我给你解释了。你能明白?

现在的小P娃怎么这么清高?难道你认为Java程序员会的只有Java么?
解决方案:
jdk1.7出来就能switch字符串了java邮件系统自己写的感觉还不错下载地址:另外还可以在这里先看看运行效果:

时间: 2024-09-28 00:24:44

10条困惑java程序员的地方的相关文章

Java程序员应该遵守的10条纪律_java

有哪些"纪律"是Java程序员所要遵守的? 1. 为代码添加注释(Add comments to your code). – 每个人都知道这一点,但不是每个人都会这么做.你有多少次"忘记"添加注释了?确实,注释不会为你的程序增加任何函数功能.但是,有多少次,看到2周前写的代码,你都记不起它是干什么的?你很幸运,那些未注释的代码是你自己写的,你脑海中还会有残存的印象.非常不幸,大多时候,代码是别人写的,并且那个人很可能已经离开公司了.有句谚语说的好:"有来有

Java程序员在写SQL程序时候常犯的10个错误

  Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准: 技能(任何人都能容易学会命令式编程) 模式(有些人用"模式-模式",举个例子,模式可以应用到任何地方,而且都可以归为某一类模式) 心境(首先,要写个好的面向对象程序是比命令式程序难的多,你得花费一些功夫) 但当Java程序员写SQL语句时,一切都不一样了.SQL是说明性语言而非面向对象或是命令式编程语言.在SQL中要写个查询语句是很简单的.但在Java里类似的语句却不

Java程序员应当知道的10个面向对象设计原则

(设计原则)底线是永远追求高内聚.低耦合的编码或设计. Apache 和 Sun的开源代码是学习Java和OOPS设计原则的良好范例.它们向我们展示了,设计原则在Java编程中是如何使用的.Java JDK 使用了一些设计原则:BorderFactory类中的工厂模式.Runtime类中的单例模式.java.io 类中的装饰器模式.顺便说一句,如果您真的对Java编码原则感兴趣,请阅读Joshua Bloch 的Effective Java,他编写过Java API.我个人最喜欢的关于面向对象设

10招让你成为杰出的Java程序员(转)

  如果你是一个热衷于技术的 Java 程序员, 那么下面的 10 个要点可以让你在众多 Java 开发人员中脱颖而出. 1. 拥有扎实的基础和深刻理解 OO 原则 对于 Java 程序员,深刻理解 Object Oriented Programming(面向对象编程)这一概念是必须的.没有 OOPS 的坚实基础,就领会不了像 Java 这些面向对象编程语言的美.光学习 OO 原则的定义用处不大,关键是要学会如何应用这些原则用一种 OO 的方式去设计解决方案.因此,我们应该对对象建模.继承.多态

工作-Java程序员的路途困惑

问题描述 Java程序员的路途困惑 唉-最近在纠结到底是去上培训班还是去工作啊?基础实在是烂啊!没办法! 解决方案 基础靠自己看就行了,然后就是多实践. 解决方案二: 希望大神们给个建议-在此感激不尽 解决方案三: 工作,培训学不到什么 解决方案四: 社会上的培训班纯粹是在吭钱,真正学不到什么东西

10 招让你成为杰出的Java程序员

如果你是一个热衷于技术的 Java 程序员, 那么下面的 10 个要点可以让你在众多 Java 开发人员中脱颖而出. 1. 拥有扎实的基础和深刻理解 OO 原则 对于 Java 程序员,深刻理解 Object Oriented Programming(面向对象编程)这一概念是必须的.没有 OOPS 的坚实基础,就领会不了像 Java 这些面向对象编程语言的美.光学习 OO 原则的定义用处不大,关键是要学会如何应用这些原则用一种 OO 的方式去设计解决方案.因此,我们应该对对象建模.继承.多态.设

深受Java程序员欢迎的10款Java IDE

Java是全世界最受欢迎的一门程序语言,它被广泛的应用于企业项目.游戏设计.安卓应用程序等开发领域.以下的列表是整理的近些年来深受Java程序员欢迎的10款Java IDE.(注:IDE意为集成开发环境,它不仅支持编辑和编译代码,还能够完成管理资源.提供部署.版本控制等工作.) NetBeans NetBeans是过去10年发展最好的IDE,它做到了完全的模块化 ,所有的IDE功能都被封装成包,并称之为模块.它提供了简单的方式来集成版本控制软件.由于它的源代码已经被Sun公司开源,因此在任意平台

作为Java程序员应该掌握的10项技能_java

本文详细罗列了作为Java程序员应该掌握的10项技能.分享给大家供大家参考.具体如下: 1.语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正. 2.命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer.HtmlConverter.jar.java.javac.javadoc.javap.javaw.native2ascii.serialver,如果这些命令你没有全部使用过,那么你对jav

《Java程序员面试秘笈》—— 面试题10 类继承的建模表示方法

面试题10 类继承的建模表示方法 Java程序员面试秘笈根据图1.4的UML表示,选择一个正确的描述. (a)Box类是MyBox类的子类. (b)Box类是MyBox类的父类. (c)Box类和MyBox类是聚合关系. (d)Box类和MyBox类是一对多关系. 考点:该面试题貌似简单,在实际的面试中回答正确的却并不是很多,其实只是考察求职者对类的继承的建模表示方法的掌握程度. 出现频率: [面试题解析]Java中有两种机制来保证根据现有的类来构造新的类,那就是继承和聚合.例如,有一个盒子的类