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:面向对象的理解
面向对象 一切皆对象.程序是对象的集合,它们通过发送消息来告知彼此所要做的.也就是说:以对象为中心,以消息(发送消息即为函数调用)为驱动.对象具有状态,行为和标识. 状态:指类的数据成员,即属性: 行 ...
随机推荐
- 基本控件文档-UISlider属性
CHENYILONG Blog 基本控件文档-UISlider属性 Fullscreen UISlide属性技术博客http://www.cnblogs.com/ChenYilong/ 新浪微 ...
- POJ 1240 Pre-Post-erous! && East Central North America 2002 (由前序后序遍历序列推出M叉树的种类)
题目链接 问题描述 : We are all familiar with pre-order, in-order and post-order traversals of binary trees. ...
- vue_列表渲染
vue列表渲染 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <t ...
- Python练习-不知道弄个什么鬼
Alex大神,今天丢过来一个PDF,结果就成了这个样子! 1. 执行 Python 脚本的两种方式 交互方式: 命令行 文件方式: ...
- 【数据库】软件安全测试之SQL注入
这些年我们发现越来越多的公司开始注重安全测试了,为什么?因为安全测试可以在某种程度上可以排查掉你项目的一些安全漏洞,这样你的系统上线后才会相对安全,才有可能尽量避免来自外部的攻击.每一年互联网都会发生 ...
- C. Polygon for the Angle(几何)
题目链接:http://codeforces.com/contest/1096/problem/C 题目大意:T是测试样例,然后每一次输入一个角度,然后问你在一个n边形里面,能不能构成这个角度,如果能 ...
- std 与标准库
1.命名空间std C++标准中引入命名空间的概念,是为了解决不同模块或者函数库中相同标识符冲突的问题.有了命名空间的概念,标识符就被限制在特定的范围(函数)内,不会引起命名冲突.最典型的例子就是st ...
- hdu 5463 Clarke and minecraft
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5463 Clarke and minecraft Time Limit: 2000/1000 MS (J ...
- 41 - 数据库-pymysql41 - 数据库-pymysql-DBUtils
目录 1 Python操作数据库 2 安装模块 3 基本使用 3.1 创建一个连接 3.2 连接数据库 3.3 游标 3.3.1 利用游标操作数据库 3.3.2 事务管理 3.3.3 执行SQL语句 ...
- Integer to Roman & Roman to Integer
Integer to Roman Given an integer, convert it to a roman numeral. The number is guaranteed to be wit ...