大家一起和snailren学java-(二)一切都是对象
“今天是周末,虽然外面阳光晴好,但是作为一名单身狗,还是除了寝室,就只有图书馆了。Anyway,既然没有对象,那我们就在java中找对象吧,哈哈。没有对象的人,看一切,都是对象!”
在面向对象程序设计语言中,我们最熟悉的就是java和C++。但是最纯粹的还是java。C++虽然也是面向对象语言,但是毕竟它是c语言的扩展,毕竟混杂。
那在java中,我们通过new来生成对象(好想new一个……)。任何一门语言,都有自己操作内存中数据的方式。在java中,我们实际上是通过引用来操作的对象,就像是通过一个遥控器去控制一台电视。举个栗子。当我们写一个String s;这样,我们新建了一个引用(遥控器)。但是此时只有遥控器,没有电视,那明显不能用。只有通过new后,才会生成一个具体的对象,才能用遥控器去操控。
当我们使用new新建一个对象的时候,那对象被创建后放到哪里的呢?
我们知道,有几种数据存储的地方,如寄存器,堆栈,堆,常量存储,非RAM存储等。各种的作用如下
- 寄存器:这个是最快的,在处理器中。主要存储着处理器指令所需要的数据,但是特别小。当然这不是我们对象存储的地方。
- 堆栈:这块是比较常用的,存储一些变量、函数跳转现场保存等等。也是引用的存放点。位于RAM。
- 堆:Here we go!这里就是对象的存储地方了,存放所有的java对象。创建的时候用new就行,回收由GC自动回收。
- 常量存储:这里存放的是一些常量,如static数据、直接写的数据等等。如String s = "SnailRen is so handsome",那s存放在堆栈,这个对象在堆,“SnailRen is so handsome”在常量区。
- 非RAM:即数据持久化,保存在磁盘
基本数据类型,是保存在堆栈中。虽然它们也能通过java的自动装箱机制作为对象,但是由于一般这种数据都比较小,如果都放在堆中不是很好。当然java中还有高精度的数据类BigInteger,BigDecimal。那我们就不用自己单独再去写大数类了。
在我们弄清楚对象保存的地方后,我们就可以研究一下对象的生命周期。
这里其实也是java 的一个优点。java对象和其他数据类型不一样,没有作用域那种情况。只要你new了一个对象,那这个对象将会一直存在。java的垃圾回收器会监控对象的情况,判断对象是不是需要回收。如果要回收,则自动回收。这样就避免了内存泄漏。
对象是一个类的具体的实例,当然我们需要创建类了。在对类进行创建的时候,我们会创建成员以及方法。对成员进行创建时,如果没有直接指定值,那么java会将其设置为默认值。如boolean型为false,int型为0等等。
在设计java程序的时候,我们需要进行命名空间的管理。因为可能在同一个模块里,如果有相同的名字,则会造成冲突。因此在java中,采用自己的internet域名来管理包,将域名反写。接着,如果有一些数据或者方法是脱离具体的实例的时候,我们可以将其设置为static。这样就可以直接用类进行调用,不用通过具体的对象。当然,这个是存放在常量存储区的。
那么我们就开始写java程序了。java有一个特性很多初学者不太知道。我们知道,如果需要在代码中使用一些其他的类,就需要import对应的包。那java其实还会自动的导入java.lang这个包。导入这个包后,那很多常用的操作就能用了。
还有main函数。main函数必须设置为public的,很明显,因为它要被外部所调用嘛。而且java要求它的格式也必须是那样。main(String[] args)里面的参数是在命令行传入的参数。
最后再说java的一个比较好用的工具,那就是javadoc。我们程序员知道写了代码,还得有对应的代码文档。但是编写一个合格的、比较专业的文档很麻烦,大家都不想去写。采用javadoc,在编写代码的同时就能通过特定的语法来编写文档,最后直接生成html格式的,而且更易于维护,超级方便。
那今天就到这儿,明天继续!得给老板汇报工作了……
大家一起和snailren学java-(二)一切都是对象的更多相关文章
- 浅谈《think in java》:二 一切都是对象
清晨坐在图书馆,今天聊聊早晨的“果实”. 清单1. 引用操作:对象创建:存储地方:基本类型:数组 “reference”:引用[操作对象的标识符] 例子:创建String类型的引用,并不是对象. St ...
- java 二维数组和对象数组
1.二维数组:二维数组就是存储一维数组(内存地址/引用)的数组 2.二维数组的初始化 1) int intA[][]={{1,2},{2,3},{3,4,5}}; 2) int [][] intB=n ...
- Java编程思想学习(二)----一切都是对象
2.1用应用操作对象 String s; 这里所创建的只是引用,并不是对象.如果此时向s发送一个消息,就会返回一个运行时错误.这是因为此时s没有和任何事物关联.因此,一种安全的做法是:创建一个引用的同 ...
- Java编程思想之二 一切都是对象
2.1 用引用操作对象 每种编程语言都有自己的操作内存中元素的方式. 在Java中,一切都可以视为对象,因此可以采用单一的固定语法. 2.2 必须由你创建所有对象 一旦创建一个引用,就希望它能与一个新 ...
- 初学者学Java常遇到的问题,我都给你回答了!
前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 春节在家刷知乎,看到了一个知乎的问题:<学 ...
- Java编程思想 4th 第2章 一切都是对象
Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情通过类对象协作来完成 ...
- Java 运算符(引用和对象)
1. 算数运算符 就是+.-.*./.%.++.--这些,没什么好说的,稍微强调下自加,自减: 前缀自增自减法(++i,--i): 先进行自增或者自减运算,再进行表达式运算. 后缀自增自减法(i++, ...
- 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)
Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...
- 从零开始学 Java - Spring 集成 ActiveMQ 配置(二)
从上一篇开始说起 上一篇从零开始学 Java - Spring 集成 ActiveMQ 配置(一)文章中讲了我关于消息队列的思考过程,现在这一篇会讲到 ActivMQ 与 Spring 框架的整合配置 ...
- (二)一起学 Java Collections Framework 源码之 AbstractCollection
. . . . . 目录 (一)一起学 Java Collections Framework 源码之 概述(未完成) (二)一起学 Java Collections Framework 源码之 Abs ...
随机推荐
- PHP __DIR__, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, __NAMESPACE__
PHP has large number of predefined constants. This HOWTO will present the seven most important, most ...
- Mysql 修改密码及重置密码方法
修改密码: //选择数据库 use mysql; //修改密码 update user set password=password('新密码') where user='root'; //立即生效 f ...
- js关于对象键值为数字型时输出的对象自动排序问题的解决方法
一.对象键值为数字型时输出的对象自动排序问题如: var objs = { "1603":{id:"1603"}, "1702" ...
- 探秘重编译(Recompilations)(1/2)
这篇文章我想谈下SQL Server里一个非常重要的性能调优话题:重编译(Recompilations) .当你执行非常简单的存储过程(使用临时表)时,就会发生.今天我想奠定SQL Server里重编 ...
- SQL Server中的事务日志管理(3/9):事务日志,备份与恢复
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
- 设计模式之Iterator模式(2)
这篇文章比较简单,作一个笔记. 模拟Iterator. Iterator接口: package cn.asto.Interator; public interface Iterator { publi ...
- JAVA魔法堂:读取.properties配置文件
一.前言 Java工程中想log4j.数据库连接等配置信息一般都写在.properties文件中,那么如何读取这些配置信息呢?下面把相关方法记录下来供以后查阅. 二..properties文件 配置文 ...
- 用Qt写软件系列一:QCacheViewer(浏览器缓存查看器)
介绍 Cache技术广泛应用于计算机行业的软硬件领域.该技术既是人们对新技术探讨的结果,也是对当前软硬件计算能力的一种妥协.在浏览器中使用cache技术,可以大幅度提高web页面的响应速度,降低数据传 ...
- C#设计模式——生成器模式(Builder Pattern)
一.概述在软件系统中,有时候面临着复杂的对象创建,该对象由一定算法构成的子对象组成,由于需求变化,这些子对象会经常变换,但组合在一起的算法却是稳定的.生成器模式可以处理这类对象的构建,它提供了一种封装 ...
- C#利用NPOI导出Excel类(简单版)
代码: using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; namespac ...