楼主厉害啊,java真是博大精深啊

解决方案 »

  1.   

    1."abc"=="abc"返回的结果是false
    头一次听说,你连一门语言的数据结构都不懂,还大言不惭的谈起十宗罪!
      

  2.   

    有些罪不是Java的问题,而是人的问题。
    比如 TMD的myeclipse
      

  3.   


    在java里"abc"=="abc"确实是返回false,按常规思维理解,它应该要返回true才对,你所说的什么数据结构,什么机制的,我不管,我也不想管,我只知道一门语言应该要人性化。不要把它的不人性化用一句:“这就是我的机制”来掩盖。
      

  4.   

    ""这东西是个字符串啊,放在C里用char*或char[]表示吧,用==会得到啥?
    这个"常规思维"往往咱们想当然了。
      

  5.   


    楼主先把这个代码执行一遍再来说话:public class Test {
    public static void main(String[] args) {
    System.out.println("abc"=="abc");
    }
    }
      

  6.   

    其实发射本身的性能还是不错的,比较耗时的在查找Method,但是,这个做个缓存就可以解决
      

  7.   

    另外,我也表示不赞同把业务逻辑写进存储过程,小系统当然可以这么搞,如果业务量随时间递增,那么数据库的横向扩展能力是有限的,存储过程的压力全在数据库,到时不得不重构系统如果把业务逻辑放到java程序,那么做集群,扩展就容易多了
      

  8.   

    汗 楼主在哪看的"abc"=="abc",返回false
      

  9.   

    同意一部分,其他的不太懂
    比如说结果集,当初我也想获取结果集的count,然后我就想当然的应该有一个getCount()或getRows()
    TNND找死找不到
      

  10.   

    myeclipse是可以双击安装的,且是收费的,楼主你偏要下载插件形式的有什么办法呢?
    另外对于ssh这些框架,没人说一定要你用,我做java这么多年,从来没有用过ssh,也不写jsp。从此看来,楼主的眼界有些狭隘
      

  11.   


    这个返回的是true吧。难道我们的JAVA不一样吗?
      

  12.   

    我认为,如果有这样一个方法,必要遍历一遍结果集,如果数据库压力大,取得的结果集大,这个方法会是致命的我宁愿自己select count一下,有时候select count都要好多秒甚至几分钟,如果遍历结果集的代价可想而知
      

  13.   

    其他的hibernate,struts,jsp没用过,不说话
      

  14.   

    非常抱歉,第1点关于"abc"=="abc"返回false是我搞错了,在java里是返回true的,我没有经过实验就这么说了,非常抱歉。之所以会这么说,是因为不记得是哪一种,因为我使用了==进行了字符串的比较,结果并没有返回我相要的结果,然后请教老人,老人们就训诫道:最好使用equals进行比较,而不要使用==,故有此感慨。
      

  15.   

    我想说的另一点是,hibernate也支持.NET的,如果.NET下用hibernate可能也会有同样的问题,hibernate只是一个工具,没人逼你用,我就没用过,都是直接操作jdbc
      

  16.   


    现在国内大项目也好,小项目也好,都用java来做了(也有.net或别的),悲剧的是,我就是做小项目。小项目的话,用存储过程还是很方便的。
      

  17.   

    很有名的一个系列书籍叫做Think in XXX
    我想说的是,如果学习某种语言,或者框架,就按照它的方式来思考。如果你学习英文,人家英语有动词变位、名词单复数什么的,而且语法结构也和汉语后很大差别,你一定要按照汉语的语法来说英语吗?就是按照java的思路来,比较两个对象,永远用equals。可能.NET的用户,习惯了.NET的语法糖,但是我想说,过多的operator override最终会让代码无法理解。但是反过来想,微软为何不让VB.NET实现if (condition) {}而是仍然要IF (condition) THEN END IF???当年第一次用VB.NET,网上资料全C#的,我就对我同事说“真TMD白痴,新出现的关键字,为什么c#和vb.net不能统一”——如果没记错的话是override/Overrides。但是只要习惯了,没什么问题啊。
      

  18.   


    我说的是myeclipse的插件,比如svn插件,那个比较难搞懂到底怎么安装。对于你说的第2个问题,也正是我想说的问题,搞java的人就喜欢说java百花齐放,有很多选择,这也为其逃避问题提供了很好的借口。
    当我觉得某个开源框架不好,批评一下,立马就有人来说,没人让逼你用这个框架,你不知道用另个框架啊,而其实,当我真正去用另个框架的时候,依旧会出现这样那样的问题,是不是再换个框架?
      

  19.   


    这个东西返回啥貌似是和JVM的实现是有关系的。String s1 = "abc";
    String s2 = "abc";s1==s2;//这个结果在不同的JVM下是不一样的
      

  20.   

    我的程序里就没有框架,为什么要用框架呢?框架也是乱七八糟的人写出来的,不是java官方出来的,水平参差不齐我不用别人写的框架,我就用jdk自带的东西就OK了呗
      

  21.   

    又不能怪HIBERNATE,我门可以选用别的方法连接数据库,
    而且ECLIPSE的方式本来就是这样,用着用着就惯了,又不是很大问题,
    不用十宗罪那么严重吧
      

  22.   

    后面讲的把XXX放入jdk,那属于笑话。而且,那个不属于jdk应该管的事情。
    Java世界和.NET理念不一样。Java并不是属于SUN/现在的Oracle的,靠JCP投票表决。
    由此带来以下区别:
    1 更新速度没有.NET快,不过也不会像.NET用户一样,从1.0开始每次要跟在屁股后面不停的学习
    2 .net一家独大,所有东西都ms帮你解决了,一站式,点wizard即可。而java这边,好多配置文件之类的要弄(当然,项目做久了,没那么吃力),但是反过来,要在使用不同于微软的解决方案,可能会大费周章。不是不可能,而是资料难找,独立第三方库很少
      

  23.   

    后面讲的把XXX放入jdk,那属于笑话。而且,那个不属于jdk应该管的事情。
    Java世界和.NET理念不一样。Java并不是属于SUN/现在的Oracle的,靠JCP投票表决。
    由此带来以下区别:
    1 更新速度没有.NET快,不过也不会像.NET用户一样,从1.0开始每次要跟在屁股后面不停的学习
    2 .net一家独大,所有东西都ms帮你解决了,一站式,点wizard即可。而java这边,好多配置文件之类的要弄(当然,项目做久了,没那么吃力),但是反过来,要在使用不同于微软的解决方案,可能会大费周章。不是不可能,而是资料难找,独立第三方库很少
      

  24.   

    哪个svn插件? BTW,建议直接用eclipse for j2ee框架的问题是这样。没有一个尽善尽美的框架。作为一个习惯了“自己动手,丰衣足食”的javaer,使用.NET也有不方便的时候,也有一大堆不满意的牢骚。可这并不影响.NET及其广大用户。做多了项目,自然会总结出一套自己定制过的框架,也可能是基于SSH,也可能是不基于任何框架。.NET也一样,很多公司,时间久了也会有字节的控件库、框架的。
      

  25.   

    樓主花那麼多心思研究東西真是非常好
    也沒有那麼多心思回復 找一個10.out输出参数,部分类,扩展方法,lamuda表达式这些非常好的东西,java都没有,还是我不会吗?望指正。
      spring,其实我现在还不知道它是干嘛的,好吧,这是我的罪。首先要評判java的話,java是什麽?java的類庫能不能代表java,因為類庫是一直在不斷發展完善中的,我想這裡java本身的那些相對穩定的機制才能真正代表java,或者說java的理念out輸出參數,利用輸出參數的形式來進行結果輸出我覺得不太好,因為它有違直覺,方法返回值進行結果輸出比它要好,這種人性化地關注程序設計者(程序員)使其提高工作效率的理念我覺得是更應受到肯定的,其實整體效率也是更高的,對象語言的流行就證明了這一點,我不清楚部分类,扩展方法,lamuda表达式這些是什麽,可能java有替代的吧,不清楚
      

  26.   

    不是JAVA 不行,是楼主水平太次。
    1。已经说过了,不重复。
    2。getXX()只不过是JAVA Bean 规范,没人规定非得那样写。自己实现get(XXX)不就好了。
    3。JSP Tag 2。0 可以不写tld
    4。Hibernate 有SQLQuery。
    5。Hibernate 有beginTransation等一系列事务控制,是你不会用。
    6。Hibernate SQLQuery有addEntity和addScale方法,可以Mapping任意schema的结果集到实体或者List
    7。楼主是不是不懂SQL?行数统计应该用SQL count()集合函数,关JAVA屁事。Count完,Hibernate query uniqueResult()拿结果呗
    8。struts干JDK何事,JAVA的基本概念都不懂,在这纯扯淡。
    9。别人说过了,花钱办事呗。
    10。不知道你在说什么。这些JAVA都有,或是有等价替代方法,只是你菜而已。
      

  27.   


    能否说说你用纯jdbc的思路呢?以前我也是想用纯jdbc,然后觉得太麻烦,就想着自己写些辅助方法,想着想着就觉得:我这样做了还不如去用hibernate了
      

  28.   

    不要误会楼主说的是:
    String a = new String("abc");
    String b= new String("abc");
    System.out.println(a==b);
    返回false
      

  29.   

    楼主竟然不知道
    “abc”=="abc"
    返回true,那别谈什么基础,
    也别说JAVA的不是。
      

  30.   

    辅助方法dbutils这个小工具包里已经有了,其他的应该都差不多。我个人认为传统的那种dao方式不错
      

  31.   


    非常感谢dracularking(苦行魔君 更爱顽强) 的回复,我的标题虽然写的是java十宗罪,但其实隐含的意思,还包括java相关的一些开源框架,它们也能从侧面反应java体系的问题。
      

  32.   


    我来替lz说句公道话:

     public class test { public static void main(String[] args) {
    String str1 = new String("abc");
    String str2 = new String("abc");
    System.out.print(str1 == str2);
    }}public class test { public static void main(String[] args) {
    String str1 = "abc";
    String str2 = "abc";
    System.out.print(str1 == str2);
    }}大家看看这两个代码的执行结果,再批判lz,武断的批判lz,只能说明你们java基础更是半杯水,认为你还可以的话,把出现上面的原因解释下。
      

  33.   

    《Think in Java》里把这个问题分析得很详细了;因为它们是引用,两个引用是不同的,你用== 来比较,默认比较的是引用,而不是引用的内容
      

  34.   

    晕 不知道你怎么想的 LZ明明说的"abc"=="abc"
    还硬要加个
      

  35.   

    “abc”是直接量 是唯一的  
      

  36.   

    先且不提楼主的"abc"=="abc"了,
    每种语言都有自己的优势。
    先去找下JAVA和C++的比较
    就知道了
      

  37.   


    非常感谢beowulf2005 的回复,正是需要您的批评1.这个确实我没有经过实验就这么说了,非常抱歉
    2.这个只是语法糖,有没有也无所谓,只是为了凑满十大,呵呵。
    3.嘿嘿,我开这个贴,就是骗你们这些懂的人出来教我呗,现在我学到了,我会去了解JSP Tag 2.0的
    4.Hibernate是有sql查询,这个我知道,但查询出来的结果集类型是 ArrayList<Object[]>,这丢失了列名。另外,Hibernate要用到我的项目当中,还是需要很多配置文件的,感觉头痛,难道不应该是只需要有个接字符串的配置文件就行了吗?
    5.额,这个真没用过,我是水啊。关键看着hibernate这么多配置文件,就很反感了。
    6.要映射到实体类,你首先要有这个实体类才行啊,要有这个实体类就要提前知道结构,如果前提不知道结构,就不太好办了。
    7.从而向对象的角度出来,我做为一个结果集,我就应该能查出我有多少行结果,而不是通过别的方法,让别人去完成这个工作。
    8.只想说,这一点上,你只想反驳而反驳,那我也纯反驳一个,呵呵。
    9.你的意思就是说免费的本来就应该不好罗?收费的东西本来应该好罗?那我说java是个垃圾,你就应该承认嘛,就不要来反驳我了,因为你就是这个观点嘛。
    10.这个是java的硬伤,我之所以都总结在最后一点,是因为不想拿很多人都认可,以前也大量讨论过的东西,再拿来多说,我要把前9点留下写自己的感想。你不知道什么是部分类,什么是扩展方法,什么是lamuda表达式就不要讨论这一点了。
      

  38.   

    学java的哥对此笑而不语 !
      

  39.   


    关于第1点,的确是我的错误,我没有经验实验就这么说了,非常抱歉。但事实上,这里只是我的表达错误,为了简单表达,我就直接写下了"abc"=="abc"返回的是false
    却不知,这样返回的结果是true,这一点我真的搞错了。而我真正的想表达的意思,正是mni2005所说的:
    String str1 = "abc";
    String str2 = "abc";
    System.out.print(str1 == str2);这样会返回false。
      

  40.   

    String str1 = "abc";
    String str2 = "abc";
    这样子还是会true的。
    String str1 = new String("abc");
    才是false