Thinking in Java Reading Note(2.一切都是对象)
1.用引用操纵对象
如果向没有指向对象的引用发送一个消息,就会返回一个运行时错误。因此一种安全的做法是:创建一个引用的同时便进行初始化。
2.必须由你创建所有对象
1)存储到什么地方
程序运行时,对象是怎么进行放置安排的呢?特别是内存是怎样分配的呢?有五个不同的地方可以存储数据。
a.寄存器。这是最快的存储区,因为它位于处理器内部。由于寄存器的数量有限,你不能直接控制。
b.堆栈。位于通用RAM(随机访问存储器)中,但通过堆栈指针可以从处理器哪里获得直接支持。某些Java数据存储于堆栈中---特别是对象引用,但是Java对象并不存储于其中。
c.堆。一种通用的内存池(也位于RAM区),用于存放所有的Java对象。当需要一个对象时,只需用new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。
d.常量存储。常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。
e.非RAM存储。如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。其中两个基本的例子是流对象和持久化对象。
2)特例:基本类型
不用new来创建变量,而是创建一个并非是引用的"自动变量“。这个变量直接存储”值“,并置于堆栈中,因此更加高效。
Java提供了连个用于高精度计算的类:BigInteger和BigDecimal。能作用于int和float的操作,也同样能作用于BigInteger或BigDecimal。只不过必须以方法调用的形式。
3)Java中的数组
Java确保数组会被初始化,而且不能在它的范围之外被访问。这种范围检查,是以每个数组上少量的内存开销及运行时的下标检查为代价的。
当创建一个数组对象时,实际上就是创建了一个引用数组,并且每个引用都会自动被初始化为null。
3.永远不需要销毁对象
1)作用域
作用域决定了在其内定义的变量名的可见性和生命周期。
2)对象的作用域
由new创建的对象,只要你需要,就会一直保留下去。不需要时,垃圾回收器会自动回收,防止内存泄露。
4.方法
Java的方法决定了一个对象能够接收什么样的信息。面向对象的程序设计通常简单地归纳为”向对象发送信息“。
5.static关键字
通常来说,当创建类时,就是在描述那个类的对象的外观与行为。执行new来创建对象,数据存储空间才被分配,其方法才供外界调用。
有两种情形用上述方法是无法解决的。一种情形是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象。另一种情形是,希望某个方法不与包含它的类的任何对象关联在一起。
通过static关键字可以满足这两方面的需要。
static方法常常拿来做”牧羊人“的角色,负责看护与其隶属同一类型的实例群。
6.import
有一个特定类会自动被导入到每一个Java文件中:java.lang。
转载于:https://www.cnblogs.com/Miromiaosang/p/8891477.html
Thinking in Java Reading Note(2.一切都是对象)相关推荐
- 细读 Thinking in Java (一)一切都是对象
前言 <Thinking in Java>做为Java最经典的学习书籍之一,不论是对于学习java的新手或是有一定经验的程序员来说都有不同的学习价值,在工作的这两年多当中由于种种杂事一直没 ...
- Thinking in Java Reading Note(5.初始化与清理)
1.用构造器确保初始化 可以假想为编写的每个类都定义一个initialize()方法.该方法的名称提醒你在使用其对象之前,应首先调用initialize().然而,这同时意味着用户必须记得自己去调用此 ...
- Java - Thinking in Java 第2章 一切都是对象
Java是"纯粹"的面向对象的语言. 操作的标示符是对象的一个引用, new是创建一个对象. 存储位置: 寄存器\堆栈(引用)\堆(new)\常量存储(程序代码内部)\非RAM存储 ...
- GAN-overview reading note(3)Wasserstein GAN
文章目录 了解WGAN 强行写点理解 2019.4.13--子涣 了解WGAN 继续读GAN overview,在第一部分基本了解了GAN的基本概念,又在第二部分了解了LSGAN对其的改进,同时也基本 ...
- idea两个好用的插件-Code Reading Note与RestfulTool
1.问题描述 介绍两个idea插件,感觉很好用,记录下. 2.问题描述解决 2.1 Code Reading Note插件--代码阅读笔记 这个插件的原始功能是:对指定代码记录阅读笔记,然后增加到指定 ...
- Reading Note(8) ——GNN for DSE Optimization
这篇博客是一篇论文阅读札记,这篇论文的主题是使用GNN来优化加速器设计中的设计空间探索耗时过长的问题. 这篇文章的标题是<Enabling Automated FPGA Accelerator ...
- 琐记之零散知识点(java相关的零散知识都丢这里)
2.EJB(Enterprise JavaBeans)使得开发者方便地创建.部署和管理跨平台的基于组件的企业应用.3.Java RMI(Java Remote Method Invocation)用来 ...
- 搬书匠 mysql_如何java进阶,我一直都有在学习,可是感觉好久都没进步了,心里好焦急?...
首先我觉得java真正的进阶如果都说是技术的话我认为太片面了!我给你分析一下我对初中高级开发的理解. 初级开发:其实就是有些java基础和一些框架运用的小白,技术栈不会太广也不会太深,很多技术可能停留 ...
- 学Java需要下载什么软件?都有什么作用?
学习java并非大家想象中的那么简单,除了书本和老师面授,软件的使用也有很大的作用,接下来小编为大家分享的就是关于"学Java需要下载什么软件?都有什么作用?"的内容,希望能够给正 ...
- 一切都是对象---JAVA编程思想
一切都是对象 "如果我们说另一种不同的语言,那么我们就会发觉一个有些不同的世界."--Luduing Wittgerstein(1889-1951) 尽管Java是基于C++的,但 ...
最新文章
- php读取mysql分页查询
- RabbitMQ研究与应用
- P1297-[国家集训队]单选错位【期望概率】
- oracle path函数,自定义类似 sys_connect_by_path 功能的函数
- 纯前端开发案例:用 SpreadJS 搭建信息系统软件开发平台
- MonGoDB 常见操作, 设置管理员和用户登入
- MapXtreme2005中关于使用动画图层的一个方法
- ntp server
- css3 图标效果,css3图标_纯CSS3图标旋转效果代码
- python 余弦值,Python向量余弦值 Python 求向量的余弦值操作
- 凯文·凯利又出预言:未来科技将由这四股力量推动!
- mac os sierra卸载java_如何删除Install macOS High Sierra.app
- 目前最全的IT技术问答、社区、科技服务网站合集
- 荣耀play4t能升级鸿蒙吗,荣耀30 Pro已开始测试华为鸿蒙HarmonyOS 2.0 荣耀Play4 Pro下月升级...
- element表格重新布局,element表格显示不全,doLayout
- 软件工程导论张海蕃书籍pdf_[计算机科学与技术] VB6仓库管理系统本科论文+源码...
- 关于05.轮播图.html:177 Uncaught TypeError: Cannot set properties of null (setting ‘onclick’)
- 通俗易懂的NCE Loss
- Java面试题整理_P1
- Android驾驶证拍照识别技术