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.一切都是对象)相关推荐

  1. 细读 Thinking in Java (一)一切都是对象

    前言 <Thinking in Java>做为Java最经典的学习书籍之一,不论是对于学习java的新手或是有一定经验的程序员来说都有不同的学习价值,在工作的这两年多当中由于种种杂事一直没 ...

  2. Thinking in Java Reading Note(5.初始化与清理)

    1.用构造器确保初始化 可以假想为编写的每个类都定义一个initialize()方法.该方法的名称提醒你在使用其对象之前,应首先调用initialize().然而,这同时意味着用户必须记得自己去调用此 ...

  3. Java - Thinking in Java 第2章 一切都是对象

    Java是"纯粹"的面向对象的语言. 操作的标示符是对象的一个引用, new是创建一个对象. 存储位置: 寄存器\堆栈(引用)\堆(new)\常量存储(程序代码内部)\非RAM存储 ...

  4. GAN-overview reading note(3)Wasserstein GAN

    文章目录 了解WGAN 强行写点理解 2019.4.13--子涣 了解WGAN 继续读GAN overview,在第一部分基本了解了GAN的基本概念,又在第二部分了解了LSGAN对其的改进,同时也基本 ...

  5. idea两个好用的插件-Code Reading Note与RestfulTool

    1.问题描述 介绍两个idea插件,感觉很好用,记录下. 2.问题描述解决 2.1 Code Reading Note插件--代码阅读笔记 这个插件的原始功能是:对指定代码记录阅读笔记,然后增加到指定 ...

  6. Reading Note(8) ——GNN for DSE Optimization

    这篇博客是一篇论文阅读札记,这篇论文的主题是使用GNN来优化加速器设计中的设计空间探索耗时过长的问题. 这篇文章的标题是<Enabling Automated FPGA Accelerator ...

  7. 琐记之零散知识点(java相关的零散知识都丢这里)

    2.EJB(Enterprise JavaBeans)使得开发者方便地创建.部署和管理跨平台的基于组件的企业应用.3.Java RMI(Java Remote Method Invocation)用来 ...

  8. 搬书匠 mysql_如何java进阶,我一直都有在学习,可是感觉好久都没进步了,心里好焦急?...

    首先我觉得java真正的进阶如果都说是技术的话我认为太片面了!我给你分析一下我对初中高级开发的理解. 初级开发:其实就是有些java基础和一些框架运用的小白,技术栈不会太广也不会太深,很多技术可能停留 ...

  9. 学Java需要下载什么软件?都有什么作用?

    学习java并非大家想象中的那么简单,除了书本和老师面授,软件的使用也有很大的作用,接下来小编为大家分享的就是关于"学Java需要下载什么软件?都有什么作用?"的内容,希望能够给正 ...

  10. 一切都是对象---JAVA编程思想

    一切都是对象 "如果我们说另一种不同的语言,那么我们就会发觉一个有些不同的世界."--Luduing Wittgerstein(1889-1951) 尽管Java是基于C++的,但 ...

最新文章

  1. php读取mysql分页查询
  2. RabbitMQ研究与应用
  3. P1297-[国家集训队]单选错位【期望概率】
  4. oracle path函数,自定义类似 sys_connect_by_path 功能的函数
  5. 纯前端开发案例:用 SpreadJS 搭建信息系统软件开发平台
  6. MonGoDB 常见操作, 设置管理员和用户登入
  7. MapXtreme2005中关于使用动画图层的一个方法
  8. ntp server
  9. css3 图标效果,css3图标_纯CSS3图标旋转效果代码
  10. python 余弦值,Python向量余弦值 Python 求向量的余弦值操作
  11. 凯文·凯利又出预言:未来科技将由这四股力量推动!
  12. mac os sierra卸载java_如何删除Install macOS High Sierra.app
  13. 目前最全的IT技术问答、社区、科技服务网站合集
  14. 荣耀play4t能升级鸿蒙吗,荣耀30 Pro已开始测试华为鸿蒙HarmonyOS 2.0 荣耀Play4 Pro下月升级...
  15. element表格重新布局,element表格显示不全,doLayout
  16. 软件工程导论张海蕃书籍pdf_[计算机科学与技术] VB6仓库管理系统本科论文+源码...
  17. 关于05.轮播图.html:177 Uncaught TypeError: Cannot set properties of null (setting ‘onclick’)
  18. 通俗易懂的NCE Loss
  19. Java面试题整理_P1
  20. Android驾驶证拍照识别技术

热门文章

  1. windows 2008 64位oracle11g部署问题(1)之警告-启动database control时出错
  2. POJ1338 Ugly Numbers
  3. 《JavaScript 模式》读书笔记
  4. GdiPlus[15]: IGPLinearGradientBrush 之 GammaCorrection
  5. RMDB与hadoop的实时整合
  6. Struts,Spring 等开源项目svn 地址
  7. Windows server 2012体验之活动目录回收站
  8. 性能测试中的jvm监控
  9. hashmap-put方法过程
  10. netty权威指南学习笔记一——NIO入门(4)AIO