李晓晗的博客 Java Coder

headfirstjava第三章笔记

2019-07-25
lxh

head first Java第三章

primitive主数据类型

byte short int long float double boolean char

注意事项
  • 变量的声明必须要有类型(type)和名称(name)。
int count;
类型 名称;
  • float类型的值必须加上f,否则所有带小数点的值都会被Java当作double处理。
float f = 32.5f;
  • 编译器不允许将大杯的内容放到小杯中,哪怕肉眼可以辨别出是安全的。但反过来可以。
int x = 24;
byte b = x;//不行!
  1. 名称必须以字母、下划线_或$符号开头,不能用数字开头。
  2. 除了第一个字符外,后面就可以用数字。反正不要用在第一个字符就行。
  3. 只要符合上述两条规则,你就可以随意地命名,但还得要避开Java的保留字(关键字keyword)。

对象要怎么处理

  1. 事实上没有对象变量这样的东西存在。
  2. 只有引用(reference)到对象的变量。
  3. 对象引用变量保存的是存取对象的方法。
  4. 它并不是对象的容器,而是类似指向对象的指针。或者可以说是地址。但在Java中我们不会也不该知道引用变量中实际装载的是什么,它只是用来代表单一的对象。只有Java虚拟机才会知道如何使用引用来取得该对象。
  • 你无法将对象装进变量中,并没有超巨型的杯子可以放大到能够装在所有的对象。对象只会存在于可回收垃圾的堆上。
  • 虽然primitive主数据类型变量是以字节来代表实际的变量值,但对象引用变量却是以字节来表示取得对象的方法。
对象引用也只是个变量值。
还是会有东西放进杯子中,只是引用放进去的是遥控器。
Book b = new Book();//声明引用变量b,在堆创建一个Book对象(假设是Book1),b的值是字节组代表Book1的地址(引用)
Book c = new Book();//声明引用变量c,在堆创建一个Book对象(假设是Book2),c的值是字节组代表Book2的地址(引用)
Book d = c;//声明新的Book引用变量d,并把c的字节组拷贝给d,d和c同时引用Book2
b = c;//将c的值赋给b,b由引用Book1变成了引用Book2
//此时Book1没有了引用,变成无法存取的对象,已经可以作为垃圾收集器(GC)
c = null;//将null赋值给c,这代表c不再引用任何事物,但还是个可以被指定引用其他Book的引用变量
//Book2还在被b和d引用这,因此不能作为垃圾收集器(GC)

数组

数组也是对象
  • 数组中的每个元素都是变量。不是primitive主数据类型变量就是引用变量
  • Book数组不会保存一组Book,而是保存的Book对象的引用(遥控器)
  • 不管保存的是主数据类型变量还是引用变量,数组都是对象
一旦数组被声明出来,你就只能装入所声明类型的元素

举例来说,你不能将Cat放到Dog数组中(如果有人尝试让数组中的每个元素都汪汪叫一次会出现什么状况?)。double也不能放进int数组中。但是你可以将byte放进int的数组中,因为byte可以放进int尺寸的杯子中。这被称为隐含展开(implicit widening

Books[] myBooks = new Books[3];//这只是声明了一个Books类型大小为3的数组对象,里面什么都没有
myBooks[0] = new Books();//这里才创建了一个Books对象

李晓晗

更新于2019-7-25 下午


Similar Posts

Comments