我现在学习的是C++,并有一定的基础!
但我有一个朋友叫我学习Java,但是我让他说个所以然来!
得到的答案
      竟然是Java时髦!说什么Java引导web一场大革命!但我从网络上找到知名网站(yahoo,google,baidu,Ibm等等)做网站的用Java的相当少呀!
PHP都被Java使用的多!
还有使用Perl,......Java仅仅站到不足10%!还没有Perl多!另外从直觉上来看Java代码里面每成员函数前都要加上什么public
很烦琐不如C++哎没办法!就来到这里来询问大家?

解决方案 »

  1.   

    都学呗!工作的时候用什么技术轮不到你来挑的!最好两手抓;两手都要硬!
    两个东西真要比较个所以然我觉得没什么意思!
    我大学学的是C++;进了公司因为工作的需要只好重新学JAVA了!
      

  2.   

    我刚才搜索到的众所周知,JAVA语言最明显的优势在于用它设计的程序可以广泛地运行于互联网上所有安装了VM解释器的计算机上。然而,如今JAVA之所以在市场上如此流行,还得益于它的另一卖点:它提供了安全可靠和使用方便的存储管理机制。这是部分编程人员将它与其前身C++语言对比后所得出的结论。本文将针对两种语言的内存(以对象为单位)使用机制,通过从灵活性、易用性和效率三个方面的比较,来证明这样一个事实:在C++中可以实现与JAVA一样的存储管理机制。  一、JAVA对象是C++对象和指针二者的继承  JAVA作为C++的后继,在内存分配和对象使用上与之有很大的相似之处。请看下面的比较:  表1操作  JAVA  C++
    指针使用  非指针使用
    声明  ObjectClass Instance  ObjectClass* Instance  ObjectClass Instance
    创建  Instance=new ObjectClass()  Instance=new ObjectClass()  声明时自动创建
    数据访问  Instance.Data  Instance->Data  Instance.Data
    方法调用  Instance.Method()  Instance->Method()  Instance.Method()
    复制  指针复制  Instance1=Instance2  Instance1=Instance2 
    不提供
    内容复制  由类自身定义  不提供  缺省,或由类自身定义
    比较  指针比较  Instance1==Instance2  Instance1==Instance2  不提供
    内容比较  由类自身定义  不提供  缺省,或由类自身定义
    销毁  不再引用时由垃圾收集器自动销毁  delete Instance  超出作用域时自动销毁  注:  ① C++的"指针使用"一列中并未列出形如*Instance的使用,因为这样做的实质不是指针使用;  ②"指针复制"是指使得两个对象今后使用相同的一块内存区域,任何对此区域的修改同时会反映到这两个对象上;  ③"内容复制"则指拷贝两个对象各自的存储区域,拷贝后内容相同,但各自保留自己的存储区,以后对任一者的修改不会影响另一者。  从上表可以看出,除了对象销毁机制以外,JAVA的对象其实是从C++中的对象和指针共同继承而来的。
    但是,很多极力提倡JAVA语言的人似乎没有意识到这种关系。他们批评C++指针的概念太难被初学者接受。的确,对初学者来说,接受计算机存储器和指针的概念并不是轻而易举的事。事实上,很多程序员都经历过这样一个迷惘的阶段。但这并不意味着存在一种对存储器的解释可以完全避免"指针"这一概念--在 JAVA语言中也是如此。现在有很多讲解JAVA语言的教材,但真正能够从头到尾不出现"指针"或者类似概念(不包括抨击C++语言时的使用)的,又有几本呢?  特别地,JAVA初学者由于理解的障碍,经常提出像这样的问题:"为什么像int、float这样的变量使用前不需要先用 new命令来创建而对象却要呢?为什么两个对象互相复制以后,修改其中一个会影响另一个,而像int、float这样的基本数据类型却不会呢?两个值相等的对象,用==比较的结果为什么是false,它们有什么是不等呢……"面对这样的问题,即使许多对JAVA比较熟悉的人有时也说不出个所以然来。究其原因,就是JAVA中的对象从来就没有离开C++指针的影子,特别是在创建、复制(事实上,JAVA默认时只提供指针复制)和比较等最常用的操作上。因而使用它们就必须遵循指针的规则,否则将无法为计算机或编程者所理解。在C++中,指针和对象其实是与int、float共通的数据类型,但又各有其特性;继承到JAVA中以后,二者的特性互相糅合而融为一体,因此对其含义的问题就产生模棱两可的解释:JAVA对象有时是对象,有时是指针,但大多数时候是指针。  对C++指针的另一种批评指出,C++允许指针指向任意内存区域,因此容易引起系统的干扰,即使很有经验的程序员在使用时也难免产生疏忽。这种批评不无道理,因为大部分C++程序出错的原因都与指针有关。但由此而批评指针存在的价值是不对的。没有C++程序员愿意从不使用指针。指针是程序设计的一样利器,凡涉及内存的操作,没有指针不能做到的,并且它的效率比其他任何替代方法都高。这就是众多C++程序员宁愿冒着高度的出错风险也坚持使用指针的最大原因,而并不是他们无法避免使用指针。如果真正要像JAVA语言那样刻意避免指针的话,笔者在后面可以证明,只要他们愿意,在C++程序员同样可以做到,而且性能比JAVA更好。他们可以设计一类彻头彻尾的C++对象,而他们的使用方法却与 JAVA对象一摸一样!这恐怕是许多JAVA崇拜者所始料不及的。

      本文后面所附的程序,为用户营造了这样一个编程环境:只涉及对象使用;避免指针祸害,但却保持像指针一样快速高效地访问内存的优点;像JAVA所倡导的那样,不须操心对象释放问题,在不再引用时由系统自动清理。必须强调的是,尽管该程序段理想地模拟出了JAVA的存储使用环境,编程者却确确实实在使用C++语言,并不会因此失去C++语言所具备的其他一切高效特性,甚至可以继续使用其他的指针。
      

  3.   

    每种语言都有他的优点和缺点:比如c++指针和java的效率但是我以一个过来人的身份告诉你,如果你想成为一个真正的程序员,必须对c/c++ 数据结构、线性代数等科目有牢固的掌握,如果只是想暂时温饱的话,就去买两本 java书看看,如果你真的想有所成,建议还是学c++吧
      

  4.   


    嗯,我是搞java的.看你的兴趣了,java比较好学哦...
      

  5.   

    楼上的...尚学堂J2SE部分完全免费.
    J2EE WEB 端也是免费可下载的.
    当然更核心的J2EE高级技术,是需要收费的.如果有个别不法分子在网上出售尚学堂视频.是要负法律责任的.
    总结:你真无德..
      

  6.   

    楼上各位的我不同意,我认为java比c++好!大家之所以没有认识到这个,大概跟微软的垄断有关系吧,现在市场上很多个人电脑都是windows的,所以你们没看到java的跨平台特性。但是假如你所在的环境有许多可能使用其他系统的话(比如redhat,MACOSX...),(事实上windows系统是我所知道的运行的最慢的操作系统,相信很多注重效率的企业公司都不会用这个)那么你肯定想让自己编写的程序能够随意在任意的系统下运行而不用修改代码,而这恰好就是java的特性!
      

  7.   

    楼上如果认为是微软的垄断造就了C++,我只能大大声的说:你错了!C++本身就是一种跨平台的语言,无论在UNIX、LINUX或是其它平台上它都是不可或缺的开发急先锋!它的唯一缺点就是底层可操作性太强了(这是缺点吗?不是吗?是吗?……),这就像一把双刃剑,C++程序员得非常注意内存的问题,一个好的C++程序在效率上Java是无法望其项背的。Java现在之所以大行其道很大程度上应归功于手机的流行,因为Java有“安全的指针”,不会因为一个指针指向不当而让手机过热给爆了(夸张的说法)。当然网站也有功劳,但用Java做的网站浏览速度慢,相信很多人都深有体会。J2EE的几个框架是不错,开发效率很高,但浏览速度实在不敢恭维!国外网站我不敢说,但国内用J2EE做的网站相对于用ASP、PHP等来说数量上是相当少的。
      

  8.   

    要说97年的时候JAVA和C++还有的一比
    但现在java已经发布了第6版
    在hot spot技术应用于JVM后,JAVA的速度不仅不比C++慢,甚至可以超越C++,这不是口说无凭,许多测试都证明了这点
    JAVA的跨平台特性是C++不能比拟的,在32位系统和16位系统里面C++的int型分配的字节都不同,而JAVA是运行在虚拟机上的,而且其语言特性比C++简单明了,便于维护,同时有着大量的框架和公司在支持他
    说实话C++和JAVA根本不是一等级的,C++也只能做做游戏了......
    还有楼主,你所说的perl python 以及PHP等等都是些动态脚本语言,这些语言充其量只能在WEB前端表示层发挥他的作用,确实JAVA在这层上比不过他们的灵活,但是整个WEB工程中后面的分析层和持久层还是得靠J2EE,还是得靠各种框架 C++连影子都看不到了......
    现在能对JAVA造成威胁的,只有.net和RoR(Ruby on Rails)
    尤其是后者,建议大家好好关注这项技术~我感觉它很可能成为第二个JAVA
      

  9.   

    另外楼主你朋友说的也有问题,JAVA所引领的WEB革命已经快过去了,现在是RIA(Web2.0)和敏捷开发的时代了...
      

  10.   

    国内用J2EE做的网站相对于用ASP、PHP等来说数量上是相当少的???
    那是因为JAVA弄不好会搞死服务器,没有那么多虚拟主机让你乱搞得!
    你开放一个支持C++作的CGI的免费空间看看,天天让你哭!
      

  11.   

    国内用J2EE做的网站相对于用ASP、PHP等来说数量上是相当少的???
    那是因为JAVA弄不好会搞死服务器,没有那么多虚拟主机让你乱搞得!
    你开放一个支持C++作的CGI的免费空间看看,天天让你哭!
      

  12.   

    那是因为JAVA弄不好会搞死服务器,没有那么多虚拟主机让你乱搞得!
    你开放一个支持C++作的CGI的免费空间看看,天天让你哭!我没用C++作过网站,倒不知道怎么哭,我只说我浏览网页时的事实,事实就是:国内用J2EE做的网站相对于用ASP、PHP等来说数量上是相当少的!!这一点,java2000_net,你服不服?
      

  13.   

    JAVA的跨平台特性是C++不能比拟的,在32位系统和16位系统里面C++的int型分配的字节都不同,而JAVA是运行在虚拟机上的,而且其语言特性比C++简单明了,便于维护,同时有着大量的框架和公司在支持他
    ---------------------------------------------------
    首先我要说明的是(这是我的感觉,可能不准确):C++的int型分配的字节是由编译器决定的,C++本身并没有这个限制。如果说Java的虚拟机怎么样怎么样的话,在我看来只不过是把各种平台上的编译器统一起来了而已,如果C++也统一了编译器标准你还敢说Java的虚拟机有什么优势吗?
    说实话C++和JAVA根本不是一等级的,C++也只能做做游戏了
    ----------------------------------------------------
    是吗?你用Java写个驱动程序我看看?你用Java做个桌面的应用程序我看看?
      

  14.   

    另外从直觉上来看Java代码里面每成员函数前都要加上什么public 
    很烦琐不如C++ 

    Java就是因为语法简单明了,开发效率高,所以势头压过c++。
    我并不是说学Java比c++好。看用在哪方面了
      

  15.   

    学java转.net容易一些 反过来就难些哈
      

  16.   

    回阿呆,这里有个java写的播放器,你瞧瞧http://topic.csdn.net/u/20071217/11/4f5aecb0-e0b0-449d-9c14-26cf7354278f.html,另外那个声名远播的kmplayer也是java写的
      

  17.   

    回阿呆,这里有个java写的播放器,你瞧瞧http://topic.csdn.net/u/20071217/11/4f5aecb0-e0b0-449d-9c14-26cf7354278f.html,另外那个声名远播的kmplayer也是java写的
    ---------------------------------------------------------------
    国人典型的毛病:出一点点成绩就沾沾自喜!我只是在批判那个说C++只能做做游戏的人,举了个例子说明C++应用领域远比他想像的要广泛的多,倒是Java我觉得只能拿来做做网站,做两个手机程序而已,桌面领域你也只能说这里有个用Java做的啥啥,那里有个用Java写的啥啥而已,用C++写的程序你是能掰着手指头数得过来的吗?
      

  18.   

    我这只是举例说明用java同样可以写出很好的桌面程序,请你看清楚再说,就知道抓字钻牛角尖,别把你所想的强行加到别人身上,自以为是!
      

  19.   

    我这只是举例说明用java同样可以写出很好的桌面程序,请你看清楚再说,就知道抓字钻牛角尖,别把你所想的强行加到别人身上,自以为是!
    -----------------------------------------------------------------------------
    你抓我的牛角尖不也是自以为是吗?请你先看清楚我的再说。别以为能找到几个Java的桌面程序就开始抓别人的牛角尖了!
      

  20.   

    你以为我不知道用Java也能写桌面程序是吗?真正牛的用Java写个操作系统也可以,真正牛的用什么语言都能做出非常好的程序!我只不过是看不惯乱贬低其他编程语言的人而已,说这个语言只能做做什么而已之类的话之前先想想自己力挺的这个语言“只能做做什么”!
      

  21.   

    应用不同吧,JAVA更注重系统工程方面,C++更注重应用方面.....
      

  22.   

    吵来吵去有意思吗??有脑子就应该好好想想你自己的专业适合什么领域,不是批判哪个语言好哪个语言差的,语言……永远是控制着电脑……不是说哪个语言好了就用哪个控制的,我说:“每个语言都有相同之处,没有谁好谁差………再说了,没有BASIC语言哪来的C跟C++,哪来的JAVA???有了最流行的JAVA后C与C++就没JAVA好了???不是吧??换个说法……C与C++有和优点JAVA不能比,而JAVA有的优点C与C++不能比,这些还不能说明语言都有相同也有不同之处吗???只是看你自己喜欢往哪方面发展罢了,不是语言的问题,而是一天到晚在论坛里面吵来吵去的,搞得真正想学的人都学不进去了,吵吵吵……有什么好吵的?累不累??有这个时间就好好学习一下各种语言吧…………自己体会一下语言的神奇……看看他们到底有没有共同之处…………”!!!!!最后,想问下:“为什么那些真正的高手你给他要求用什么语言写他就会用什么语言写的啊??还不是样样都通……难道是混出来的?那是人家的本事……什么都会……都精就是人家有本事…………以后别吵了,再吵就打起来了…………真是的…………