最近在重新学习Java,在阅读Java的经典著作——Java编程思想,因此每天记录阅读的心得。

  当听到Java这个词时,大家一般想到的是面向对象,确实Java相对于C/C++这两门语言来说,Java最大的特点与优势是完全面向对象的。(当然严格来讲,Java并不是完全面向对象的,基本类型并不是对象,虽然它们有自己对应的封装类型)那什么是面向对象?为什么面向对象使得Java成为一门生产效率很高的编程语言?为什么Java比C++开发效率更高,应用领域更广?为什么使用Java开发更加简洁?

  计算机编程语言刚开始发展时,最开始的编程语言是机器语言,机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合,又称为机器码(machine code),CPU可以直接识别并执行该数据。

 代表 加载(LOAD)                      000000010000 代表地址为 16 的存储器                            0000,0000,000000010000 代表 LOAD A, 16

  机器语言是对底层机器的基本抽象。当技术发展后,出现了汇编语言(assembly language),汇编语言使用助记符的方式来替代和表示低级语言的操作,往往汇编语言对应某种计算机体系结构,不同平台可能对应不同的汇编语言。汇编语言以节省修改程序后人工转址的乏味耗时计算,在机器语言的基础上进行进一步的抽象。接着技术的发展,出现了所谓的命令式编程语言,如C、FORTRAN等,它们都是对汇编语言的抽象,上诉3中语言解决问题时都是基于计算机的结构,而不是所要解决的问题进行建模,因此程序员必须建立机器模式与实体问题模型之间的关联。通俗的讲,命令式编程语言或过程式编程语言是强调如何解决问题的细节,程序遵循步骤一步一步实现需求。当时很容易导致程序难以维护,当需求有变动时,很难改动。而另外一种建模方式是对解问题进行建模,面向对象方式就是一种比较好的建模方式。面向对象将问题空间的元素及在解空间中的表示称为"对象"。即万物即对象。对象不但有状态,还有操作,用户可以执行这些操作,然后对象必然有它所属的类,类是一类有相同特性和行为的对象,类是对对象的抽象。比如:老鹰是一个对象,老鹰属于鸟类。类(class)类似于数据类型,数据类型是数据的基本抽象。如浮点型数字具有相同的特性和行为集合。

  Java为什么编程效率高呢?是Java中的类能够复用,而不用重复造轮子。复用主要有两种方法,组合与继承。组合能够在不修改原有代码的基础上使用一个对象,即将原有类的对象置于某个新类中,组合是"has-a"的关系,而继承在原有类的基础上进行添加和修改,是"is-a"的关系。继承可能复用代码,并且Java只使用单根继承,这种继承方法能够让让编程变得更为清晰,而不会带来多继承的毛病。

  Java生产效率高,还有很多原因,如Java去除指针,这样用户就能避免大量的空指针的错误,还加入了自动垃圾回收机制,这样用户就可以不用自己判断对象的回收时间,自己书写回收程序,避免了很多内存异常问题,Java还默认支持并发和网络编程,这为Java的应用领域带来很大的扩展。Java还支持异常处理,能够让程序从异常中恢复。

  

Think in Java笔记——Java与对象的更多相关文章

  1. Java 笔记 —— java 和 javac

    Java 笔记 -- java 和 javac h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: ...

  2. java笔记之类和对象

    现在编程的思想分成了两大阵营,面向过程和面向对象.现在谈谈啥是面向对象. 作为一只单身狗,谈“对象”还是很伤心很伤心的(:′⌒`)...... 先看看百度怎么说? 好吧,百度说的太抽象,我换个简单的说 ...

  3. Java笔记—— 类与对象的几个例子

    问题1 按要求编写java应用程序: 编写西游记人物类,属性有:身高,名字和武器.方法有:显示名字,显示武器. 在main方法中创建两个对象.猪八戒和孙悟空,并分别为他们的两个属性名字和武器赋值,最后 ...

  4. java笔记 -- 类与对象

    封装: 从形式上看, 封装是将数据和行为组合在一个包中, 并对对象的使用者隐藏了数据的实现方式. 对象中的数据称为实例域, 操纵数据的过程称为方法. 对于每个特定的类实例(对象)都有一组特定的实例域值 ...

  5. Thinking in Java笔记之类及对象的初始化

    最近在看<Thinking in Java>这本书,之前一直对类及对象的初始化过程不太清楚,只是感到很模糊.看了这本书关于对象初始化的部分,终于搞明白了. 废话不多说,先上两个例子,实例摘 ...

  6. JAVA笔记2-面向对象与内存解析

    1.java中的变量先声明.再赋值.再使用.(局部变量必须初始化,成员变量默认初始化) 2.基本类型之外的所有类型都是引用类型.基本类型占一块内存,引用类型占两块(所有new出来的东西装在堆内存,因为 ...

  7. JAVA笔记4__static关键字/对象数组/foreach/方法的可变参数

    /** * static关键字:修饰属性(实质就是全局变量).方法(无需本类的对象即可调用此方法).类. * 1.static方法只能调用static方法 * 2.static方法只能访问static ...

  8. java笔记--String类对象解析与运用

    --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3877236.html "谢谢-- 1.String中的equals和==的 ...

  9. java笔记1-面向对象思想

    合适的方法放在合适的类之中. 设计中,分解出应该具有哪些对象(面向对象),不要再想步骤了(这是面向过程).设计过程: step1:问题中有哪些类和对象(找名词,之后区分是类还是属性) step2:这些 ...

随机推荐

  1. LeetCode——Find Minimum in Rotated Sorted Array

    Description: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 ...

  2. url-loader与file-loader

    一开始用url-loader的时候,想着为什么npm run build的时候,不能将图片打包到build images的目录下,原来,没有自己看这样的说明: loader 后面 limit 字段代表 ...

  3. Java可视化JVM监控软件

    jdk自带.jdk安装目录下 1.JConsole 选择 不安全 可用不多 2.VisualVM

  4. CCNP

    CCNP全称是:Cisco Certified Network Professional——思科认证网络高级工程师.CCNP专业人员表示通过认证的人员具有丰富的网络知识.获得CCNP认证的专业人员可以 ...

  5. Java初学者笔记一:元类、获取类型、枚举

    零.绪论: 2018年新年伊始,学习Java的冲动越来越强烈,毕竟以后无论是做安全开发还是安全研究都必不可少的掌握这门语言,所以在不断完善Python作为脚本语言的主语言的情况下觉得学习Java作为高 ...

  6. linux下有趣的几个命令

    1.时常我们将频繁使用的‘ls’命令打成‘sl’,那就使用一下sl这个命令吧.在我们敲错的时候,肯定会会心一笑. 安装: yum install sl -y 或 apt-get install sl ...

  7. EUI组件之TextInput

    输入文本,被废弃的组件,可以用EditableText代替

  8. netty的解码器与粘包和拆包

    tcp是一个“流”的协议,一个完整的包可能会被TCP拆分成多个包进行发送,也可能把小的封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题. 假设客户端分别发送数据包D1和D2给服务端,由于服务 ...

  9. 树链剖分-点的分治(dis[i]+dis[j]==k的点对数量)

    poj2114 Boatherds Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1195   Accepted: 387 ...

  10. 160225、解决纯js文件国际化的问题

    1.js中国际化 function test(){     alert("<s:text name='jsp.loading'/>"); }   2.最近在做strut ...