Think in Java笔记——Java与对象
最近在重新学习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与对象的更多相关文章
- Java 笔记 —— java 和 javac
Java 笔记 -- java 和 javac h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: ...
- java笔记之类和对象
现在编程的思想分成了两大阵营,面向过程和面向对象.现在谈谈啥是面向对象. 作为一只单身狗,谈“对象”还是很伤心很伤心的(:′⌒`)...... 先看看百度怎么说? 好吧,百度说的太抽象,我换个简单的说 ...
- Java笔记—— 类与对象的几个例子
问题1 按要求编写java应用程序: 编写西游记人物类,属性有:身高,名字和武器.方法有:显示名字,显示武器. 在main方法中创建两个对象.猪八戒和孙悟空,并分别为他们的两个属性名字和武器赋值,最后 ...
- java笔记 -- 类与对象
封装: 从形式上看, 封装是将数据和行为组合在一个包中, 并对对象的使用者隐藏了数据的实现方式. 对象中的数据称为实例域, 操纵数据的过程称为方法. 对于每个特定的类实例(对象)都有一组特定的实例域值 ...
- Thinking in Java笔记之类及对象的初始化
最近在看<Thinking in Java>这本书,之前一直对类及对象的初始化过程不太清楚,只是感到很模糊.看了这本书关于对象初始化的部分,终于搞明白了. 废话不多说,先上两个例子,实例摘 ...
- JAVA笔记2-面向对象与内存解析
1.java中的变量先声明.再赋值.再使用.(局部变量必须初始化,成员变量默认初始化) 2.基本类型之外的所有类型都是引用类型.基本类型占一块内存,引用类型占两块(所有new出来的东西装在堆内存,因为 ...
- JAVA笔记4__static关键字/对象数组/foreach/方法的可变参数
/** * static关键字:修饰属性(实质就是全局变量).方法(无需本类的对象即可调用此方法).类. * 1.static方法只能调用static方法 * 2.static方法只能访问static ...
- java笔记--String类对象解析与运用
--如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3877236.html "谢谢-- 1.String中的equals和==的 ...
- java笔记1-面向对象思想
合适的方法放在合适的类之中. 设计中,分解出应该具有哪些对象(面向对象),不要再想步骤了(这是面向过程).设计过程: step1:问题中有哪些类和对象(找名词,之后区分是类还是属性) step2:这些 ...
随机推荐
- css基础---->学习html(一)
这里零散的总结一下观看css权威指南书的知识.生命中的诸多告别,比不辞而别更让人难过的,是说一句再见,就再也没见过. 一.首字母与首行的伪类 <dvi> <p>I love y ...
- Kotlin——初级篇(一):最详细的环境搭建
众所周知,Kotlin出来已经良久了.Kotlin有着众多优势,不管是用于Android开发中,还是Java开发,都能缩减很大的代码量,大大提高了工作效率.而小生本人也是才从忙碌的个工作中抽身出来,有 ...
- ubuntu解压命令
.tar.gz 解压缩文件: tar zxvf a.tar.gz 压缩文件命令:tar -zcvf test3.tar.gz test1 test2 此命令是将两个文件夹 或文件同时压缩到一个文件 ...
- OLE工具套件分析OFFICE宏恶意样本
零.绪论:OLE工具套件的介绍 OLE工具套件是一款针对OFFICE文档开发的具有强大分析功能一组工具集.这里主要介绍基于Python2.7的OLEtools的安装和使用. (1)Python版本需求 ...
- 12.文件系统fs
文件系统fs ==> 提供文件的读取, 写入, 更名, 删除, 遍历目录, 链接等POSIX文件系统操作 1.fs.readFile(filename, [encoding], [callbac ...
- C# MVC跳转
MVC方式: 显示提示框,并返回上一页 return Content("<script>alert('暂时没有实践作业!');history.go(-1);</script ...
- Oracle预定义的21个系统异常类型
命名的系统异常 产生原因 ACCESS_INTO_NULL 未定义对象 CASE_NOT_FOUND CASE 中若未包含相应的 WHEN ,并且没有设置 ELSE 时 COLLECTION_IS_N ...
- 从零打造在线网盘系统之Struts2框架配置全解析
欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...
- Java类集框架——List接口
学习目标 掌握List接口与Collection接口的关系. 掌握List接口的常用子类:ArrayList.Vector. 掌握ArrayList与Vector类的区别. Collection ...
- CentOS中为新用户添加sudo权限
1.切换成root权限 su root 2.查看/etc/sudoers文件权限,如果只读权限,修改为可写权限 ls -l /etc/sudoers 3.如果是只读进行如下操作 chmod /etc/ ...