【Thinking_in_Java学习笔记】第二章 一切都是对象

阅前说明:本系列笔记仅记录读书过程中本人不会或不熟的知识点。

第2章 一切都是对象

2.2 必须由你创建所有对象

2.2.1存储到什么地方

有五个地方可以存储数据

  • 寄存器
    • 在CPU的内部,最快的存储区,但是空间很小。
    • 无法直接控制,写程序时也感受不到(C、C++允许建议寄存器的分配方式)
  • 堆栈
    • 位于RAM(随机存储器)中,速度仅次于寄存器。
    • 堆栈指针向下(上)移动,则分配新的(释放那些)内存。
    • Java对象的引用就存在这里。
    • Java中的基本数据类型也存在这里。
  • 堆:
    • 位于RAM(随机存储器)中,速度仅次于寄存器。
    • 一种通用的内存池,用来存放所有的Java对象,执行new关键字时就在堆区分配存储。
    • 编译器不需要知道存储的数据在堆里存活多长时间。
    • ∴灵活性高,SO分配存储和清理空间要比堆栈开销大。
  • 常量存储:
    • 常量值通常直接放在程序代码内部,不可更改,但有时(嵌入式系统),存放在ROM(只读存储器)中。
    • 例如字符串池,所有String类型的和具有String的常量表达式都是自动内存限定的,并且置于特殊的静态存储区中。
  • 非RAM存储:
    • 通常指磁盘,不受程序控制,断电可存在
    • 将对象转化成可以存放在其他媒介上的事务,在需要时,可以被恢复到内存中。
    • 两个例子:
      • 流对象:对象转化为字节流,通常发给另一个机器
      • 持久化对象:对象被放在磁盘上。
    • 例如:JDBC和Hibernate这样的机制

2.2.2 特例:基本类型

基本类型大小最小值最大值包装器类型
boolean——————Boolean
char16-bitUnicode 0Unicode 2¹⁶-1Character
byte8 bits-128127Byte
short16 bits-2¹⁵+2¹⁵-1Short
int32 bits-2³¹+2³¹-1Integer
long64 bits-2⁶³+2⁶³Long
float32 bitsIEEE754IEEE755Float
double64 bitsIEEE754IEEE755Double
void——————Void
  • 这些基本数据类型,直接将变量名和值一同存储在堆栈中。
  • 所有的数值类型都有正负号,所以不要去寻找无符号的数值类型。
  • boolean类型所占存储空间大小没有明确指定,仅定义为能够取字面值true或false。
  • 基本数据类型具有的包装器类使得可以在队中创建一个非基本对象,用来表示对应的基本数据类型。

高精度数字类型:BigInteger和BigDecimal

  • ​这俩虽然也属于包装类,但没有对应的基本数据类型。
  • 能作用与int和float的操作,也同样能作用于BigInteger和BigDecimal,只不过必须以方法调用的方式取代运算符的方式来实现,有点复杂,所以运算速度会慢,相当于用时间换了精度

BigInteger:支持任意精度的整数而不会丢失任何数据
BigDecimal:支持任何精度的定点数。

2.4 创建新的数据类型:类

2.4.1字段和方法

​类中基本数据类型字段的默认值:

基本类型默认值
booleanfalse
char/u0000’(null)
byte(byte)0
short(short)0
int0
long0L
float0.0f
double0.0d
  • 如果一个类中的某个字段是基本数据类型,即使没有初始化,Java也会确保它获得一个默认值,如上表所示。
  • 但是如果是在局部变量中(比如方法体里面),例如:int x; 这样的语句,那么变量x得到的可能是任意值,而不会自动初始化为0,在编译时,java编译器会报错。

2.5 方法、参数和返回值

方法名参数列表(合起来叫"方法签名")唯一地标识出某个方法。

public class test01 {
    public static void main(String[] args) {
        //获取所有系统属性,以列表方式打印到控制台
        System.getProperties().list(System.out);
        //获取系统属性中的用户名并且打印到控制台
        System.out.println(System.getProperty("user.name"));
        //获取系统属性中的java.library.path并且打印到控制台
        System.out.println(System.getProperty("java.library.path"));
    }
}

2.8 注释和嵌入式文档

  • javadoc只能识别/** */文档注释
  • javadoc只能为public和protected成员进行文档注释
  • 不要在注释嵌入的html中加入标题标签,因为javadoc会产生自己的标题,可能会和你的发生冲突。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值