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 是对象。

面向对象的程序设计通常简单地归纳为“向对象发送消息”。

上一篇:checkbox提交多组数据到action


下一篇:java面试题(杨晓峰)---第四讲强引用、软引用、弱引用、幻想引用有什么区别?