HeadFirst Java
本人有C语言基础,通过阅读Java廖雪峰网站,简单速成了java,但对其中一些入门概念有所疏漏,阅读本书以弥补。
第一章 Java入门
第二章 面向对象
第三章 变量
变量的类型
- primitive 主数据
- 引用
变量
primitive主数据类型
- 要素:类型 + 名称
- boolean:
- char: 16bits
- 数值类:
- byte 8bits -127~128
- short 16bits -2^15 - 2 ^15
- int 32bits
- long 64bits
- 浮点数
- float 32
- double 64
**类型安全:**小变量 不能 赋值 大变量,如int n=0; byte = n;
声明与赋值:int x;x=10;int x = 10;
如何控制对象
引用变量:
- 没有对象变量,只有引用到对象的变量,引用变量 是指向对象的 指针(对象的地址),JVM才会使用 引用获取对象
- 引用变量的值:取得特定对象的位表示(字节组合码) ,不在乎这个值 - 引用变量:是某类杯子放入了一个指向 该类对象的 指针
对象的声明、创建与赋值:
1.声明一个引用变量 Dog myDog; JVM分配空间给引用变量,固定为Dog类,是指向Dog类模板创建的对象的指针(控制Dog的遥控)
2.创建对象:new Dog(); JVM分配堆空间给新对象
3. 连接: Dog myDog = new Dog(); 连接,将指针 具体的Dog对象
思考:
- 引用变量的大小?与JVM有关,不同平台不同,其表示方式未知;考虑内存应考虑建立的对象大小数量
- 引用对象与C的指针不同,不能进行计算!int num[]; int* p = num; p++
Exp1:
Dog temp = new Dog(); temp = new Dog();这建立了俩个对象,一个引用变量;该引用变量指向第二个建立对象
若 final Dog temp = new Dog(); 不再指向其他对象
Exp2:
Book a = new Book();Book b = new Book();
Book c = a; a的值赋给c,即引用变量的值(取得某对象的位表示),c此时与a指向同一个对象
a = b ; 此时 a与b指向同一个了
上述过程,三个引用,两个对象,某2个遥控控制1个电视~
Exp3:
Book a = new Book();Book b = new Book();
Book a = b; 此时 原先a指向的对象没有遥控了,无法引用,对象1会被抛弃
b = null; 不指向任何对象,但还能用
数组
变量犹如杯子,数组就是存放杯子的杯架。
数组 是 对象,数组的元素 可能是主数据、引用变量(装的不是Dog对象,而是Dog类指针,遥控器)。
int[] nums; 声明一个int[] 变量(引用变量)
nums = new int[n]; nums指向一个数组对象 int array object (有n个杯子的杯架)
nums[0]=1; 对数组的元素赋值
Dog[] pets;
pets = new Dog[7]; pets指向 一个Dog数组对象,(有7个装指针的杯子的杯架)
Dog[0] = new Dog(); 指向具体对象,Dog[0]是一个引用变量,默认会指向null
Java注重类型,一旦数组声明,只能装入声明类型的元素,除了隐含展开情况(byte放入int[]的元素)
存取Dog数组中的Dog,通过数组的索引得到引用变量,使用.符号进行方法、实例变量的存取,不需要变量名(也没有命名)