最近在重新学习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. DAG 的最短路径算法

    求图中节点的单源最短路径可以使用Dijkstra,BellmanFord, SPFA算法,而对于有向无环图DAG来说,可以通过简单的动态规划来进行求解.     DAG的独特之处是所有节点可以线性化( ...

  2. 使用boch仿真器在x86 PC平台上搭建Linux0.11系统环境(windows下)

    当你有机会来到这页面时   十有八九是遇到这样一个问题    执行配置文件bochsrc_fd.bxrc时出现找不到 ips的情况! 版本原因吧   将boch版本换成2.4的问题就迎刃而解了~ 简单 ...

  3. install kubernetes dashboard 安装 kubernetes dashboard 详细

    参考: http://www.bubuko.com/infodetail-2242562.html http://www.cnblogs.com/zhenyuyaodidiao/p/6500897.h ...

  4. python的类继承与派生

    一.继承和派生简介: 其实是一个一个事物站在不同角度去看,说白了就是基于一个或几个类定义一个新的类.比如定义了动物类接着派生出了人类,你也可以说人类继承了动物类.一个意思.此外python类似于C和C ...

  5. Activity 设置切换动画

    extends://blog.csdn.net/luohaowang320/article/details/42124225 | http://blog.csdn.net/xuewater/artic ...

  6. 一个Activity中使用两个layout实例

    package com.sbs.aas2l; import android.app.Activity; import android.os.Bundle; import android.view.Vi ...

  7. WCF(一) 创建第一个WCF

    定义服务契约-创建宿主程序-创建客户端程序访问服务 namespace HelloService { /// <summary> /// 服务契约 /// </summary> ...

  8. Yii2如何批量添加数据

    批量添加这个操作,在实际开发中经常用得到,今天小编抽空给大家整理些有关yii2批量添加的问题,感兴趣的朋友一起看看吧. 在上篇文章给大家介绍了关于浅析Yii2 gridview实现批量删除教程,当然, ...

  9. Python大数据:信用卡逾期分析

    # -*- coding:utf-8 -*- # 数据集成 import csv import numpy as np import pandas as pd import matplotlib.py ...

  10. nginx ---refine---按需时间/流量进行调整后台服务器---geocity,proxypass

    原理相当于配置文件在启动时进行编译,proxyPass http://mydomain/path/xxxx这种方式是编译成静态的,直接替换成它解析到的ip/vip,只有重新启动时才会重新解析. 而 s ...