第2章 一切都是对象
第2章一切都是对象
对象的定义(类型)、创建、存储、操纵、销毁、组成,引用(基本变量名)的初始化
2.1 用引用操纵对象
·编程语言操纵内存中元素的方式:
·C、C++:基于特殊语法的间接表示—指针
·Java:操纵对象引用 ->对象
·创建引用
·创建对象
·关联:“=”
·String类型:用带引号的文本初始化
·对引用的初始化
2.2 必须由你创建所有对象
·存储位置
·寄存器:最快;CPU内;数量有限;按需分配;无法直接控制;觉察不到存在(C、C++允许向编译 器建议寄存器的分配方式);【谁在操控寄存器?】
·堆栈:速度仅次于寄存器;RAM中;堆栈指针控制;
·堆栈指针:{向下移动:分配内存;向上移动:释放内存}
·灵活受限:统必须知道存储在堆栈内所有项的确切生命周期,以便上下移动指针;
·{对象引用:堆栈;new出的对象:堆}
·堆:比栈慢;RAM中;用于存放所有的Java对象
·和堆栈相比:
·好处:编译器不需要知道存储的数据在堆里存活多长时间,更灵活
·坏处:进行存储分配和清理比堆栈要更多时间
·常量存储:通常放在程序代码内,安全,永不改变
·嵌入式系统:同代码分离,存放在ROM中
·非RAM存储:流对象 & 持久化对象——完全存活于程序之外;不受程序的 任何控制
·流对象(序列化 - 轻量级持久化):对象转化成字节流,通常被发送给另一台机器
·持久化对象:存在磁盘上;需要时可恢复成基于RAM的对象
·严格持久化:JDBC、Hibernate机制
·特例:基本类型:并非是引用的“自动”变量,直接存“值”,堆栈中
·占据存储空间的大小不变
·boolean类型~存储空间(大小):没有明确指定,仅定义为能够取字面量true或false
·void是基本类型(返回类型)但没有值,有包装器类型
·什么是拆箱比较?
·BigInteger & BigDecimal:大体上属于“包装器类”,但没有对应的基本类型
·方法调用方式 而非运算符方式
·速度换取了精度
·Java中的数组
·C、C++中的数组 = 内存块:
·问题:
1.可能在初始化前被使用(内存);
2.访问自身内存块之外的数组
·Java:
·确保数组会被初始化后才能使用——每个数组上少量的内存开销
·不能在它的范围之外被访问——运行时的下标检查
·Java有时可以优化以上操作
·Java KO. C、C++:更安全,效率更高
·Java编译器初始化数组:
·引用数组:null
·基本数据类型数组:0
2.3 永远不需要销毁对象
·作用域决定变量名的可见性、生命周期
·(作用域内的)代码(一般)存在于堆栈中
·Java对象:和基本类型生命周期不同——new出来的对象在堆中,可以存活于作用域之外
·存活于作用域之外:也就是说,作用域内的东西被清理后,垃圾回收器会在任意时间回收它
·Java垃圾回收器监视new创建的对象,辨别不会再被引用的对象,随后【什么时候?】释放这些对象的内存空间~消除了“内存泄漏”
·不用new创建对象的方式:
·Class或Constructor类的newInstance()方法
·clone()
·反序列化
·那么问题来了,这些对象怎么清理?finalize()?
2.4 创建新的数据类型:类
·类[字段不是局部变量,方法]
·基本类型成员默认值
2.5 方法、参数和返回值
·方法[名称,参数,返回值,方法体]
·方法签名[方法名,参数列表]
·发送消息给对象 = 调用方法的行为
·参数列表:传递对象时,传递的是对象引用或基本类型值
·字符串中每个字符(2字节):来支持Unicode字符集
2.6 构建一个Java程序
·名字(可见性):反转域名
·运用其他构件:使用import定位文件
·static关键字:
·为某特定域分配单一存储空间
·创建不与对象关联的方法
2.7 你的第一个Java程序
·编译,运行
2.8 注释和嵌入式文档
·注释文档
·javadoc:提取注释的工具
·语法:
·javadoc命令只能在"/**----*/"中出现
·使用方式:
1.嵌入HTML
2.使用“文档标签”:以“@”开头
·三类注释文档位置:类、域、方法之前
·只有public、protected成员的文档注释才能被输出(可用-private进行标记输出private注释)
·不要嵌入html标题标签:如<h1>或<hr>
·提取注释:javadoc
2.9编码风格
·驼峰风格
转载于:https://www.cnblogs.com/InformationGod/p/8510714.html
第2章 一切都是对象相关推荐
- Java编程思想学习-《第二章 一切都是对象》
第2章 一切都是对象 尽管Java是基于C++的,但是相比之下,Java是一种更"纯粹"的面向对象程序设计语言.Java语言假设我们只进行面向对象的程序设计.也就是说,在开始用Ja ...
- Java - Thinking in Java 第2章 一切都是对象
Java是"纯粹"的面向对象的语言. 操作的标示符是对象的一个引用, new是创建一个对象. 存储位置: 寄存器\堆栈(引用)\堆(new)\常量存储(程序代码内部)\非RAM存储 ...
- 细读 Thinking in Java (一)一切都是对象
前言 <Thinking in Java>做为Java最经典的学习书籍之一,不论是对于学习java的新手或是有一定经验的程序员来说都有不同的学习价值,在工作的这两年多当中由于种种杂事一直没 ...
- 读TIJ -2 一切都是对象
<第2 章一切都是对象> 1.一切都是对象.不是Bruce Eckel说的,而是Alan Kay 总结的Smalltalk 五大基本特征的第一条. 从程序设计者或源码的角度,我觉得:&qu ...
- Windows核心编程 第九章 线程与内核对象的同步(上)
第9章 线程与内核对象的同步 上一章介绍了如何使用允许线程保留在用户方式中的机制来实现线程同步的方法.用户方式同步的优点是它的同步速度非常快.如果强调线程的运行速度,那么首先应该确定用户方式的线程同步 ...
- 《Effective Java》学习笔记 第二章 创建和销毁对象
第二章 创建和销毁对象 何时以及如何创建对象,何时以及如何避免创建对象,如何确保他们能够适时地销毁,以及如何管理对象销毁之前必须进行的各种清理动作. 1 考虑用静态工厂方法代替构造器 一般在某处获取一 ...
- 一切都是对象---JAVA编程思想
一切都是对象 "如果我们说另一种不同的语言,那么我们就会发觉一个有些不同的世界."--Luduing Wittgerstein(1889-1951) 尽管Java是基于C++的,但 ...
- [Effective Java]第二章 创建和销毁对象
第一章 前言 略... 第二章 创建和销毁对象 1. 考虑用静态工厂方法代替构造器 创建对象方法:一是最常用的公有构造器,二是静态工厂方法.下面是一个Bool ...
- python 宝典 笔记 第十二章 存储数据和对象 (各种对象转换成字符串)
第十二章 存储数据和对象 12.1数据存储概述 12.1.1文本与二进制对比 文本格式易于阅读和调试,跨平台性能好.二进制格式占用空间小,适于按记录存取. 12.1.2压缩 假如对象的大小开始成为问题 ...
最新文章
- oracle存储过程 多条件,Oracle多条件查询实际分页存储过程实操
- 计算机专业数控,数控专业的月薪是多少 数控专业能干什么
- 我来悟微服务(3)-需求管理
- 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
- 利用js实现 禁用浏览器后退| 去除上一个历史记录链接
- 培生同意以3亿美元出售华尔街英语
- 数字IC后端设计实现流程之initial design
- 真正解决办法:FTP 执行命令时500 Illegal PORT command
- i2c-tools安装与使用总结
- 2021 泰迪杯 C 思路
- matlab数学实验 课件,MATLAB数学实验课件.PPT
- [ CSOL ] - zihao + 自适应 + 文字滚动 + 媒体查询 + fullpage + 手风琴 + 延时动画
- 用c#查询各快递物流信息
- Stemming and lemmatization
- 108. 将有序数组转换为二叉搜索树
- 乾颐堂安德华为数通HCNA真题解析版(第2部分)
- 蓝桥杯刷题007——七段码
- fragment 中调用getactivity()的时候报 nullpoint错误
- Multi-armed Bandit Experiments
- 文佳夹操作之获取指定目录下的所有文件及文件夹