Java中面向对象的理解
按照惯例,先做一个简单的介绍,现在开始学习 Thinging in Java 4 ,一边看,一边记录,我都不想给自己设定时间安排了,毕竟很少实现过。所以就这样吧!不定期的更新,我都会放到博客中的。
所以我可能会有很多表述和书中是一样的,外加一些自己的理解吧。
我们常说的一句话是“一切皆对象”这话也就说说吧,理解吗?其实并不理解。没关系,我们可以假装理解了。那我就来结合书中的观点说一下面向对象的概念吧!若是你没有一点面向对象的概念,那你不用看了,去玩吧!
首先问一下自己编程是什么呢 ?数据结构 + 算法 = 编程 ,算法说的简单一点就是事情的解决步骤。编程语言(C,C++,Java,Python…)只是一种工具,我们学习Java无非就是为了编程,所以我们对于Java中的数据结构的理解就显得尤其重要了。数据结构又是什么呢?就是在研究数据以及数据之间的关系和操作。在Java中数据就体现为对象。所以我们要学习的也就是对象以及对象之间的关系和对象相关的操作。
前面说到Java中一切皆是对象,那我们怎么去操作这些对象呢?这些对象又放在哪里的呢?在Java中我们通过引用的方式来操作对象,打个比方来说,我们的引用就相当于遥控器,而电视机就是对象,我们对电视机(对象)的操作(加减声音,换台)都是通过操作遥控器(引用)实现的。举个具体的例子:
String s = ‘learn Java’;
这里的s就是一个引用,引用的数据也就是learn Java,这里涉及一个Java中的知识点,字符串这个对象可以用引号直接为其赋值。我们需要用到什么对象都由我们自己创建,那么一般的对象我们是怎么创建的呢?使用关键字 new 即可创建一个对象。
例如:String s = new String("learn java"); 这就是创建一个名为learn java字符串的对象并且用s引用它。那我辛辛苦苦创建的对象都放在哪里了呢?不得不多,这里就涉及计算机硬件方面的知识了,不懂就去补吧。我们创建的对象的引用,还有一些基本数据类型的变量会存放在栈中,而创建的对象会放在堆内存中(目前是只可意会不可言传的阶段)有必要说一下,有些对象是可以脱离程序存在的,在程序没有运行的时候也可以存在,比方说流对象和持久化对象。在流对象中,对象转化成字节流,通常被发送给另一台机器。在”持久化对象中“对象被存放于磁盘上因此,即使程序结束,它也可以保存自己的状态。
总会存在特例,Java中的数据类型可以分为基本数据类型和引用数据类型,对于基本数据类型一种有8种,分别是 byte short int long float double char(2个字节 16 bit)boolean ,为什么会出现这些基本数据类型,原来是因为它们使用太频繁,我们说过,对象是存放在堆中的,而对于这种小型的频繁使用的数据放在堆中加大了对象创建和使用的时间,所以就单独列出来,用于提高Java的效率。
对于基本数据类型在JDK5中提供了自动包装功能,就是说本来是基本数据类型的自动转化为包装类。int i = 2; <==> Integer j = new Integer(i); 每一种基本数据类型所占用的存储空间都是固定的。这也是Java可移植性性的保证!
另外Java中提供了两个高精度的类BigInteger 和 BigDecimal ,它们就是用于支持任意精度的整数和任意精度的定点数。
所有的对象都是由我们自己创建,那我们创建的对象都是什么类型的呢?除了一些JDK内置的类型,我们可以使用关键字class 来自定义对象的类型。也就是我们常说的类。在类中我们可以定义对象的属性和方法,每创建一个对象都拥有自己的副本。属性也叫成员变量,在类中的成员变量都有自己的初始化值,但是局部变量若是不赋初值的话就会报错,类的另一个组成就是方法了,也叫函数,可以理解为对象的功能,我们定义方法的目的就在于和对象进行对话或“交互”。我们调用方法的行为通常被称为发送消息给对象。
例如:a.f(); 可以理解为消息是 f() ,a 是对象。
面向对象的程序设计通常简单地归纳为“向对象发送消息”。
Java中面向对象的理解的更多相关文章
- Java中面向对象三大特征
也就是说在这里"人"是多态的, 在不同的形态时,特征行为是不一样的, 这里的"人", 同时有两种形态,一种是教师形态,一种是学生形态,所对应的特征行为分别是&q ...
- Java中hashcode的理解
Java中hashcode的理解 原文链接http://blog.csdn.net/chinayuan/article/details/3345559 怎样理解hashCode的作用: 以 java. ...
- 谈谈我对Java中CallBack的理解
谈谈我对Java中CallBack的理解 http://www.cnblogs.com/codingmyworld/archive/2011/07/22/2113514.html CallBack是回 ...
- 沉淀再出发:关于java中的AQS理解
沉淀再出发:关于java中的AQS理解 一.前言 在java中有很多锁结构都继承自AQS(AbstractQueuedSynchronizer)这个抽象类如果我们仔细了解可以发现AQS的作用是非常大的 ...
- java中面向对象的三大特性小结
java中面向对象的三大特性:封装.继承.多态 封装 把抽象的数据和对数据的操作封装在一起,隐藏变量的实现细节.数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行访问. 1 ...
- java中ThrealLocal的理解
目录 java中threadlocal的理解 一.threadlocal的生命周期和ThreadLocalMap的生命周期 二.ThreadLocal的作用 三.threadlocal示例 四.Inh ...
- java中threadlocal的理解
[TOC] #java中threadlocal的理解##一.threadlocal的生命周期和ThreadLocalMap的生命周期可以吧TreadLocal看做是一个map来使用,只不过这个map是 ...
- 2017.12.25 Java中面向对象思想的深刻理解
今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 * A: 面向过程与面 ...
- Java:面向对象的理解
面向对象 一切皆对象.程序是对象的集合,它们通过发送消息来告知彼此所要做的.也就是说:以对象为中心,以消息(发送消息即为函数调用)为驱动.对象具有状态,行为和标识. 状态:指类的数据成员,即属性: 行 ...
随机推荐
- R5—字符串处理/正则表达式
R通常被用来进行数值计算比较多,字符串处理相对较少,而且关于字符串的函数也不多,用得多的就是substr.strsplit.paste.regexpr这几个了.实际上R关于字符串处理的功能是非常强大的 ...
- HDU 1176 排列2 全排列
解题报告:给出四个数,然后要你把这四个数组合成的各不相同的四位数按照从小到大的顺序输出来,然后如果最高位是0的话不能输出来,还有最高位是数字如果一样的话,则放在同一行输出. 本来是个比较简单的生成全排 ...
- summernote 文本编辑器使用时,选择上传图片、链接、录像时,弹出的对话框被遮挡住
更多内容推荐微信公众号,欢迎关注: 即问题如下链接内的情况: http://bbs.csdn.net/topics/392004332 这个一般属于CSS中样式出现了问题,可以在点开的时候,F12查看 ...
- 利用Object.defineProperty 简化 Chrome插件本地存储操作
通常谷歌插件本地存储写法很别扭☹,如 chrome.storage.sync.get(null,function(data){ //todo console.log(data); }); 如果get ...
- Understanding the Space Used by ZFS -- (转)
Understanding the Space Used by ZFS By Brian Leonard on Sep 28, 2010 Until recently, I've been confu ...
- Once you eliminate all the other factors,the only thing remaining must be the truth.
Once you eliminate all the other factors,the only thing remaining must be the truth. 一旦你排除了杂因,剩下的一定是 ...
- mysql基准测试工具tpcc-mysql安装、使用、结果解读
TPCC是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统,tpcc-mysql是percona基于TPC-C(下面简写成TPCC)衍生出来的产品,专用于My ...
- linux音频alsa-uda134x驱动文档阅读之一转自http://blog.csdn.net/wantianpei/article/details/7817293
前言 目前,linux系统常用的音频驱动有两种形式:alsa oss alsa:现在是linux下音频驱动的主要形式,与简单的oss兼容.oss:过去的形式而我们板子上的uda1341用的就是alsa ...
- ps查看CPU和内存占用前10的进程
内存增序 ps aux --sort rss 内存减序 ps aux --sort -rss cpu增序 ps auxw --sort=%cpu cpu减序 ps auxw --sort=-%cpu ...
- Fiddler是最强大最好用的Web调试工具
Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大 ...