为什么学习JAVA要学习数据结构呢?以前,一直听说在面向过程的程序设计,或者存储空间有限的领域里对数据结构和算法要求比较苛刻。我以前学了段时间单片机,用汇编语言编写单片机程序的时候,对程序的代码量有很严格的要求和限制,但在JAVA的设计中,现在PC机的存储空间都比较大,内存也大,那么这时候的数据结构的优势在什么地方呢?
还有,很多人都在说,程序设计中的数学很重要,可能是我刚在学JAVA中,我 不太清楚数学的重要性,编程的过程中真的能用到高数知识吗?
到目前为止,哪个牛人所涉及到的软件开发领域用到了离散数学的知识,我觉得离散数学知识好像是为了锻炼一个人的逻辑
思维能力,它在实际应用中主要体现在什么地方呢?
为什么中国会有这么多程序员呢?是因为开发的工具越来越智能化吗?前几天,一个刚认识的朋友,就在跟我大谈JAVA的软件开发,呵呵,我刚开始学,也不太清楚他说的是什么,他好像高中毕业后就去读北大青鸟了,现在在做J2EE,我很纳闷的是,软件开发真的这么容易学吗?我觉得他很多JAVA的基础知识都不是太清楚,就在搞J2EE开发,难道有些细节的东西是不重要,还是很少用到,还是只学经常使用到的就行了。

解决方案 »

  1.   

    在JAVA中程序员中怎么区分一个程序员的高低,是做的项目的多少呢?还是经验?还是数学能力?还是软件工程方面的 什么思想之类的?呵呵,我刚入行,就觉得很困惑,首先要明白差距,才能追赶。
      

  2.   

    呵呵,一个人一能跟另一个人做绝对的比较的,你只有和你自己比较你进步了多少!
    JAVA也是一样,程序员多少并不能说明什么问题,顶多能说明中国市场需求量大,个人技术水平不一样,有高级SE,也有低级的SE,看自己发展的方向喽!
    加油吧,在实践中多学习一些牛人的思想吧!
    工作中学习...
      

  3.   

    是啊!我学习了两年的java,根本就感觉不到离散数学的存在。
      

  4.   

    应该这么来说,不应该是学java要学数据结构,而是要学编程,就要学数据结构,要想编程,就一定要学数据结构和算法.不过我觉得这两个都挺烦的,但是所有语言都只是一种工具而已,我们不能只掌握工具,而忽略了本质的所在.唉......努力学习吧.
      

  5.   

    回家后学到了JAVA中API函数这章,发现了在很多编程中,很多函数都已经写好了,的确好像是要比学汇编稍微轻松一些,在学到StringBuffer类的常用方法中的append和insert插入方法的使用时,终于明白了这些方法的思
    想跟“数据结构”中线性表和链表有很大关系。
    逐渐开始明白,如果要做个一般JAVAER,可能不要特别多的这方面知识,如果想NB点,就可能就要多学点了。
    但是离散数学这个东东的实际应用,还是 很迷茫,望高手指教一下
    我是一个小菜鸟,刚开始学JAVA,头就晕了   呵呵 
      

  6.   

    出个问题:
    o o o o o 将每个圈用直线连起来,不能用斜线,不能空一个, 线不能交叉。 
    o o o o  
    o o o o o  
    o o o o o  
    o o o o o 
    编程让计算该线路。
    楼主拿到这个问题你会先考虑什么呢?算法!我们是将一个现实问题抽象成一个数学模型,这个时候就会发现数学的用途了。一种语言只是一种语言,他是一个问题的表述,而解决问题的思想是一样的,就像上边那个问题,你可以用java编程,可以用c++,也可以用matlab。而解决问题的算法可以都用一个。
    对于数据结构,Java实现了Map这种数据结构并不代表这种数据结构就不存在了,而更复杂的数据结构是java是没有实现的。
    上过高中的人就会用求取一个面积,上过大学的人就会用积分来求取这个面积。
      

  7.   

    我也有问题,经常做到类似如下的题目指出正确的表达式
    A byte=128;           X -->范围应该是-128~127
    B Boolean=null;       X -->包装类型 
    C long l=0xfffL;      Y -->??
    D double=0.9239d;     X -->?请问这个是怎么看的?
    应该回去看哪一部分内容呢? 求教~
      

  8.   

    java很多时候要跟服务器打交到,有效利用和设计服务器程序是java程序设计的高端,从服务器开发的角度可以看出软件架构的设计是比较重要的,从数据库里检索数据比较简单,但是能象google一样让一万多台服务器同事工作,速度还那么快就比较难了,java游戏可能代码还比较多的牵涉到算法,你看看java游戏开发的公司有多少开发人员你就知道了,我就不多说了(作坊)。
      

  9.   

    java语言是怎么操纵内存?指挥操作系统的呢?
    还有JAVA中那么多API函数,可以看到它们的源代码吗?
      

  10.   

    我想看API函数的源代码怎么看?
    紧急求助高手?
    如果不能看到,我就觉得JAVA的用途很有限了 
      

  11.   

    看api函数源代码
    在装好的jdk里面就有
    src目录下面
      

  12.   

    谢谢楼上的,看到了API
    好像还是用JAVA写的,这些函数调用的是内存还是JVM,如果是JVM,那么我觉得对初学者来说,挺安全的,不会对系统造成破坏,如果对于一些高手来说,不能操作内存,就有一种不能完全掌控计算机的感觉!
    还有都说JAVA是夸平台的语言,这个平台具体指什么?操作系统吗?
    不是在不同的操作系统下,还要下载不同的虚拟机吗?这算是跨平台吗?
    如果要运行JAVA还需要装JRE,那么开发的JAVA软件用途企不是会受到很多限制?
    我是一只小菜鸟,望高手们指点一下,谢谢!
      

  13.   

    还有都说JAVA是夸平台的语言,这个平台具体指什么?操作系统吗?
    不是在不同的操作系统下,还要下载不同的虚拟机吗?这算是跨平台吗?
    如果要运行JAVA还需要装JRE,那么开发的JAVA软件用途企不是会受到很多限制? 
      

  14.   

    算法 自然需要 高等数学的支持, 算法 自然要处理 数据,自然涉及数据结构。
    编程 都需要这些东西吧,不是java才要吧java不是玩具,拖拖画画,就可以开发出万人使用的程序。
    一个小程序 更本感觉不到 数据处理的过程,但是当这个数据量被放在网络上,同时同地被成千上万的人调用,
    自然程序内部数据结构的合理性,代码的精炼 就需要达到一定程度了。
    我也是刚开始系统的学习java,目前在用java编写一个 打字游戏,在编写过程中与越来越觉得 对于高数,
    数据结构的不足,特别是数据结构
      

  15.   

    java API源码下完JDK就在那么目录下的那个压缩文件解压拉就能看
      

  16.   

    数据结构当然要学了。楼主所说的java的API中把很多的数据结构给封装了,那么你能确定你在应用程序的开发中所有这些jdk提供的API就能够完全满足需要、满足所有情况的需要?
    当然不可能,当你有特殊的业务应用需要的时候,你还是要自己根据数据结构的理论知识来开发特定的API函数。所以没什么疑惑的,你的疑惑可能源于你没有真正写过应用程序。仅仅举个小例子,楼主可以自己思考
      

  17.   

    所谓编程,就是用计算机模拟出业务逻辑,所有的程序都将操作数据,数据结构就是组织数据的方法,所以学习数据结构跟用什么语言没有关系。离散数学:这要看你做什么样的开发了,数据库技术发展的时间也不长,但为什么关系型数据库那么流行,在面向对象的今天,依然沿用关系型数据库?还不怕麻烦地发明ORMapping(Object Relation Mapping)来解决对象和关系型数据库中数据的关系问题,为什么不发明面向对象的数据库呢?就是因为关系型数据库有深厚的数学理论基础做支撑,你说数学重要不重要?哪一个经典的数据结构或算法是计算机科学家发明的呢?包括树、图,最优二叉树的遍历和最佳删除,这些都是数学家研究出来的。如果仅做编码工人,那用JAVA确实不需要那些东西,可是要是做设计或系统分析呢?就一定要了,可能不会像上课考试那样的题摆在面前,但是没有深厚的这方面功底设计出来的东西就是垃圾,就会给后来的升级和维护带来诸多的麻烦,浪费全人类的资源,甚至整个系统都将要被淘汰。一个例子,在JDK中有一个类叫Stack,本意是要实现一个栈,但由于设计不善,这个类继承了Vector,就是为了复用里面的代码,后来被证明,这是不合理的,因为一个Stack不是一个Vector,它们之间不应该有继承的关系,而且,我用一个Stack的对象,可以调用Vector里面中间插入和删除的方法,那就不是一个栈该有的操作了,这个错误发现后,最难办的是:它还要保留在JDK中,只不过加了不建议使用的标记,就是因为以前的系统里大量的用了这个类,为了高版JDK能兼容低版,JAVA不得不长期带着这个粗劣的设计向前发展。不同的编程拼的东西是不一样的,要是你是一个C或汇编程序员,那么评价是否NB的标准是效率,而做为JAVA程序员,是否NB看的是架构,要想成为NB的JAVA程序员,请不要忽视“数据结构”“数学”
      

  18.   

    楼上说的很好,使我有了一种恍然大悟的感觉。
    我是楼主,顺便问一句,JAVA虚拟机是用什么语言写出来的?
    写JAVA虚拟机的语言不是比JAVA更能实现跨平台的操作吗?
      

  19.   

    跨平台含义在于开发的一套程序, 在任何平台上都能运行.
    当然需要JVM支持, 现在JVM有很多版本分别支持不同的平台, 而对于开发人员的接口是一致的.
    因此你在windows上开发的程序拿到linux上一样可以用. 开发人员是不需要关心JVM的实现的.从某种意义上说windows的API如果在linux上获得类似支持的话, 他也是跨平台了.至于JVM是用什么写的, 我也不太清楚, windows的jre里面好多dll, 应该是用C写的吧. 但是linux, unix, mac上就不知道了.
      

  20.   

    java的跨平台不是绝对的,是要有前提条件的,那就是传说中的jvm,这是它跨平台的基础,所以针对不同的平台,有不同的jvm实现,这些jvm的实现是不需要我们来做些什么的,任何平台只要与平台相兼容匹配的jvm存在,那么java就就可以write once,run anywhere。
      

  21.   

    我想知道差距,怎样区分一个javaer水平的高低呢?
    不同的编程拼的东西是不一样的,要是你是一个C或汇编程序员,那么评价是否NB的标准是效率,而做为JAVA程序员,是否NB看的是架构,要想成为NB的JAVA程序员,请不要忽视“数据结构”“数学”
                      同意36楼的意见!
    如果去大公司的应聘JAVA程序员,它们一般会考什么呢?
    算法和数据结构?还是看以前做过的项目或者经验?
    我是楼主,初学JAVA,想了解一些情况,谢谢。
      

  22.   

    14楼说的是算法的重要性,还有一个更好的例子:比如百度或google的搜索引擎,他们本身都基于一些算法来实现高效性。
    当然,如果只是小数据量的化,那就可以不用太在意了,至于14楼的例子,现在一定有很好的算法,但那绝不是最好的算法,发展是无止境的。
    至于数据结构,你想想实现同样的功能两种软件,一个只要另一个的一般甚至更少的运行空间,那么你会用哪个?
    说说你那位同学,大概只是一个只会在别人搭好的框架内添代码的“代码工人”吧,就是“代码工人”,现在所谓的程序员大多都是“代码工人”,那么其他人呢?程序的世界其实是他们的世界,无论是linux、JVM、java集成编译环境又或者web容器,甚至你用的卡巴或瑞星子类的软件,他们真正的制造者就是这一小部分的人。他们拥有的知识其实是你现在无法想象的、他们遇到的或解决的问题也是你不能意想的.....而这一切建立在什么基础之上?
    算法、数据结构等等基础理论知识是必不可少的,还有呢?让我们一起去创造吧,这个世界是属于也终将属于拥有思想的人们。
      

  23.   

    至于JVM是用什么写的, 我也不太清楚,C的可能性最大,其次汇编或者干脆机器语言
      

  24.   

    虚礼机应该是用C写的吧,别想糊涂了~~用C写不一定就可以跨平台,平台的限制是受各种比如CPU所支持的指令 字节等的区别~~虚礼机是屏蔽了这些区别~统一来调度系统资源而已~~
     
    对于数据结构,离散数学,等这些代表着程序员的灵魂,在做程序设计的时候太多地方可以看到他们的踪迹。JAVA只能说是一种工具语言,它并不能代表一切。我没有学过离散数学(大学很烂 没教 教了也没去学全在打游戏。我也不是程序员 。)按楼上一哥们说的 我想我用到过他,对数据业务逻辑进行解析的时候会使用到各种范式。
    还有 今天在看java的JCF的时候就用到了一种数学知识:集合论~~数学在我们身边 只是我们没去仔细感受~~~
      

  25.   

    有高人能讲讲JAVA中的多线程编程中的,同不块以及同步化方法吗?
    线程中的同步到底有什么作用?能举个例子吗?