位和字节(bit and Byte)
众所周知,计算机是由0和1表示的二进制代码组成运算系统。二进制中的每一位数字要么是0,要么是1,一位这样的数字是计算机中的最小的数值单位,我们称为位(bit)。
计算机中其次小的单位是字节(Byte),1 Byte是由8 bit组成的,2的8次方等于256,所以1 Byte可以表示256个整数。我们常说的网络带宽10兆,100兆,兆中的单位即使Bps,即字节每秒。
其实,在计算机发展的早期,1 Byte并不恒等于8 bit,有些系统等于6 bit或10 bit也是有的,只不过后来,人们发现1 Byte等于8 bit最方便计算,于是在1980年代,主流计算机处理器中的1 Byte就变成了8 bit大小了。
我们的计算机的内存可以看作是一组由Byte组成数组,计算机读写的最小单位也是按照Byte来的。
在Java中的数据类型分两种:基本数据类型和引用类型(对象)。
基本数据类型
基本数据类型有如下特征:
- 基本数据类型的变量直接存储在内存中
- 基本数据类型,当拷贝一个变量给另一个变量时, 传递的是这个变量的值本身, 两个变量除了值相等以外没有任何关系
- 基本数据类型的变量可以直接施加数学运算符进行计算,如+-*/等
Java中有8种基本数据类型:
类型 | 实例 | 描述 |
---|---|---|
int | int a = 0; | 32位有符号整型 |
double | double b = 123.4; | 64位浮点数,精度高,可以表示十进制的16位有效数字 |
float | float c = 2.0; | 32位浮点数,精度低,可以表示十进制7位有效数字,相比double,内存空间占有小,速度快 |
boolean | boolean d = true; | 8位 一个字节,只有2个值true和false,转换成int后,false用0表示,true用非零表示 |
char | char e = 'a'; | 16位 Unicode字符,最小值'\u0000'(即为0)最大值'\uffff'(即为65535) |
byte | byte f = 2; | 8位 有符号的整数,最小值-128,最大值127。byte占用的空间只有int类型的四分之一 |
short | short g = 3; | 16位 有符号的整数 |
long | long h = 3000000000; | 64位 有符号的整数 |
对象
引用类型(对象) 是面向对象语言的基础,它的主旨是把自然界和生活中存在的任何事物看作是一个对象,每一个对象都有特定的属性和行为。把相同属性和行为的对象归纳在一起就是类,比如,People, Employee等。
对象有如下特征:
- 对象本身涵盖众多的属性和方法
- 对象中的属性可以是基本数据类型和其他对象
- 对象其实是一个指针,当拷贝一个变量给另一个变量时,是把内存地址传递给新变量,对任何一方的修改都影响到另一方
- 操作对象不能直接使用数学运算符,而是使用对象本身提供的方法
Null
对象的默认值是Null,是指没有对象,所以不能对Null的对象进行任何操作。另外Null也不是一个空对象。
String temp;
temp.length(); // 会报错 "Null Pointer Exception"
String empty="";
empty.length(); // 返回 0
注:基本数据类型和引用类型的区别
基本数据类型,比如两个人A和B,
A.age=15 ; B.age=A.age;
A和B的年龄相同,但是他们是俩个不同的人。
引用类型,比如在我们中国一个人有多个名字,在家有一个乳名,在学校和公司有一个正式名字,无论是称呼哪一个名字,人都是同一个。还有,无论我是坐在A位置上或坐在B位置上,我都是我。我坐在A位置上理完发以后,再去坐B位置,B位置上的我已经也理过发了。