第三章 primitive主数据类型和引用
java中常见的基本数据类型
类型 | 位数 | 值域 |
boolean(布尔型) | java虚拟机决定 | true或false |
char(字符型) | 16bits | 0~65535 |
byte(字节型) | 8bits | -128~127 |
short(短整数型) | 16bits | -32768~32767 |
int(整数型) | 32bits | -2147483648~2147483647 |
long(长整数型) | 64bits | -很大~+很大 |
float(单精度浮点数) | 32bits | 范围规模可变 |
double(双精度浮点数) | 64bits | 范围规模可变 |
int x;
x = 234;
byte = 89;
boolean isFun = true;
double d = 3456.98;
char c = 'f';
int z = x;
boolean isPunkRock;
isPunkRock = false;
boolean powerOn;
powerOn = isFun;
long big = 3456789;
float f = 32.5f;//注意这个地方要加上f,否则所有带小数点的值都会被java当做double来处理
你无法用小杯子装大值。不然了能会损失某些信息,也就是所说的溢位。当判断到所使用的容器不足以装载时,编译器会试着防止这种情况发生。距离来说,你无法像下面这样把int 大小的东西装进byte的容器中:
int x = 25;
byte b = x;
//不行!
为什么不行呢?毕竟byte绝对装得下25这个值。因为对编译器来说,你正在将大物体装进小容器中,所以会有溢位的可能。
对象引用
非primitive主数据类型的变量又该如何处理呢?换句话说,对象要怎么处理?
事实上没有对象变量这样的东西存在,只有引用到对象的变量,对象引用变量保存的是存取对象的方法。它并不是对象的容器,而是类似指向对象的指针。或者可以说是地址。但在java中我们不会也不该知道引用变量中实际装载的是什么,它只是用来代表单一的对象。只有java虚拟机才知道如何使用引用来取得该对象。
对象的声明、创建与赋值有3个步骤:
Dog myDog = new Dog();
以上面的代码为例:
1. Dog myDog的意思是声明一个引用变量。要求java虚拟机分配空间给引用变量,并将此变量名命名为myDog。此引用变量将永远被固定为Dog类型
2. new Dog()的意思是创建对象。要求java虚拟机分配堆空间给新建立的Dog对象
3. 赋值运算符“=” 指示链接上面的对象和引用。将新的Dog赋值给myDog这个引用变量。
对象本身并没有放进引用中,只是通过赋值运算符链接了对象和引用。
操作对象
操作对象中的数据和方法使用圆点运算符“.”。
class Dog{
String name;
public void bark(){}
}
Dog d = new Dog();
d.name = "joy";
d.bark();
数组
int[] nums; //声明一个int型数组
nums = new int[7]; //创建大小为7的数组,并把它赋值给之前声明为int[]的变量nums
nums[0] = 6;
nums[1] = 19;
nums[2] = 44;
nums[3] = 42;
nums[4] = 10;
nums[5] = 20;
nums[6] = 1; //赋予int数组的每一个元素一个int值。要记得在int数组中的每个元素皆为int类型的变量
//使用 数组名.length可以获取数组的长度
int[] x = {1,2,3}; //创建数组比较快捷的方式
int len = x.length;
//此时len的值为3
数组的角标从0开始。数组也是对象。