目录
变量
变量的作用:用于在内存中保存数据
1 内存中的一个存储区域(内存空间,可以存放数据)
2 该区域的数据可以在同一类型范围内不断变化
3 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值
String a = “abc”;
变量的作用域和生命周期
在java中,大括号即一个作用域,每个变量都有所属的作用域,作用域是变量生效的范围
一个变量的作用域,从其定义位置开始,一直到所属作用域结束。
函数的参数的作用域:整个函数的作用域
生命周期:变量的生命周期,即变量存活的时间范围,变量的生命周期,从执行到变量定义的位置开始,到函数结束。
使用变量注意
1 Java中每个变量必须先声明,再赋值,再使用
2 使用变量名来访问这块局域的数据
3 变量的作用域:其定义所在的{内}
4 变量只有在其作用域内才有效
5 同一个作用域内,不能定义同名的变量
变量就是申请内存来存储值。也就是说,在创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。因此,通过定义不同类型的变量,可以在内存中储存整数、小数或字符
两大数据类型
1 基本数据类型(又叫内置类型或值类型)
2 引用类型,默认值是null(空值)
基本数据类型:保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。
引用数据类型:保存在栈内存中的引用名指向保存在堆内存中的对象,类似一个指针,java中除了基本数据类型其他的都是引用数据类型。
1 基本数据类型
整数类型 | 浮点型 | 字符型 | 布尔型 |
byte 8 | float 32 | char | boolean |
short 16 | double 64 | ||
int 32 | |||
long 64 |
1.1byte
1 一个byte类型在内存中占用8位二进制,即 1byte = 8bit;
2 有正负号10000001
3 最小值-128(-2^7)
4 最大值127(2^7-1)
5 默认值0
6 应用:byte类型用在大数组中节约空间,主要代替int类型,因为byte类型的变量占用的内存空间只有int类型的四分之一
7 示例:byte no=12;
bit byte与字节(Byte)的关系
bit比特: 表示一位二进制位
byte是基本数据类型 1byte = 8 bit
Byte字节,是计算机存储空间大小的单位,简称B;1字节= 8bit ,千字节KB
兆字节MB 千兆字节GB
1.2short
1 内存占用16二进制位2个字节
2 有正负号
3最小值-32768(-2^15)
4最大值32767(2^15-1)
5 默认值0
6应用:short数据类型也可以像byte那样节约空间。一个short变量是int类型变量所占空间的二分之一
7 示例: short no= 12;
1.3int
1 内存占用32
2 有正负号
3最小值(-2^31)
4最大值(2^31-1)
5 默认值0
6应用:一般地整型变量默认为int类型
7 示例: int no= 12;
1.4long
1 内存占用64
2 有正负号
3最小值(-2^63)
4最大值(2^63-1)
5 默认值0L
6应用:这种类型主要使用在需要比较大整数的系统上
7 示例: long no= 120000L;
1.5float
1 float数据类型是单精度、32位、符合IEEE 754标准的浮点数
2 最小值
3最大值
4 默认值0.0f
5示例 float no= 12.123f;
1.6double
1 double数据类型是双精度、64位、符合IEEE 754标准的浮点数
2 最小值
3最大值
4 默认值0.0d
5示例 double no= 12.1234d;
单精度和双精度的概念和区别
1.7char
char 类型是一个单一的16位Unicode字符
char数据类型可以储存任何字符
1.8boolean
boolean数据类型表示1位信息
只取两个值 true和false
默认值是false
2 自动转换类型
数值的范围越大,表示该数据类型的精度越高,根据精度由低到高排序为:
byte->short,char->int->long->float->double
根据上面的顺序,低精度数据类型的变量,可以自动地转为高精度类型的变量,如:
byte a = 12;
int b = a;
数据类型转换规则:
1 不能对boolean类型进行类型转换
2 把高精度类型转换为低精度类型时,必须使用强制类型转换;
3 转换过程中可能导致溢出或损失精度(高精度转低精度)
4 浮点型到整数的转换,舍弃小数部分,而不是四舍五入
3强制类型转换
强制类型转换只发生在高精度类型转化为低精度类型的情况下,必须显示在变量声明要转换的数据类型,且会损失数据精度。
4 引用类型
引用类型包括三部分:对象名,对象的引用,对象
示例:Student s = new Student();
栈中保存的是:s = 对象的引用 即对象名和对象的内存地址
堆中保存的是:new Student();即对象本身
对象,数组, 集合, String 都是引用数据类型
所有引用数据类型默认值都是null
5数据类型在内存中的空间分配
基本数据类型只有一块存储空间(分配在栈stack中);
引用数据类型有两块存储空间(一块在栈stack中,一块在堆heap中)
对于引用数据类型的对象,对象名和对象的引用在栈上,对象放在堆中。引用就是指向对象在堆中的地址
6 装箱与拆箱
提供一种机制,使得基本数据类型可以与引用类型互相转换
针对每一种基本数据类型提供了对应的引用类型
包装器:Boolean,Character,Integer,Byte,Short,Long,Float,Double
包装类型是引用类型,说白了就是一个类,既然是类,里面可以有属性和方法,每个包装类型和基本数据类型都是大同小异的
装箱(将基本数据类型转化为引用类型)
装箱过程是通过调用包装类的valueOf方法实现的
拆箱(将引用类型转化为基本数据类型)
拆箱过程是通过调用包装类的xxxVaulue方法实现的(xxx代表对应的基本数据类型)
自动装箱、自动拆箱
基本数据类型的自动装箱、拆箱 自JDK1.5开始提供的功能