理解:基本数据类型
一.对变量的理解
首先为了下面更好的理解,我们先来看看变量
1.什么是变量?
在程序执行的过程中,在某个范围内其值可以发生改变的量
变量的定义格式:
数据类型 变量名 = 变量值; eg :float f = 1.0f;
float f 声明变量f
f = 1.0f 将1.0幅值给f
2.为什么要定义变量?
用来不断的存放同一类型的常量,并可以重复使用 .
3.对变量有几点理解:
(1).是内存中的一个存储区域.
(2).可在同一数据类型范围内不断变化.
二.基本数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间.
基本数据类型有四类八种 如下表
三.基本数据类型的值在应用时的几点说明
1.几个基本类型的取值范围如下:byte,short,char < int < long < float < double .
2.java中在没有做任何数据类型声明的情况下,
整数默认的类型是int类型;
浮点型的默认数值类型是double类型.
float f = 1.0;报错,因为1.0默认的是double类型,会损失精度.因此在给float赋值时,要在值后面加F或f:float f = 1.0f.
3.java编译器有常量优化机制(能够判断常量的具体值),
如:byte b = 2; //2是默认的int类型的数,在byte的范围内,因此可以赋值
long x = 8888888888888;会出错,因为8888888888888超出了int的取值范围.但没有超出long的取值范围,在给long赋值时,要在值后面加L或l: long x = 8888888888888L;
4.变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断(变量)里面具体的值(在编译的时候无法判断(变量)里面具体的值,在运行的时候才知道其具体值,相加有可能会超出取值范围)
5.类型转换
(1)自动类型提升(隐式转换),小数据类型向大数据类型转换.
在混合运算时,byte、short、char之间不会相互转换,都会自动类型提升为int类型.
除byte、short、char外,其他类型进行混合运算的是小的数据类型提升为大的
boolean类型不能转换为其他的数据类型(java没有规定具体空间)
byte b1 = 3;
byte b2 = 4;
Byte b3 = b1 + b2; b1+b2首先自动类型提升为int类型,可能损失精度
(2)强制类型转换:想让大数据类型其转换成大数据类型.
强制转换的格式
目标类型 变量名 = (目标类型)(运算结果)
byte b = (byte)(a + b);
注意:如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同(强转有风险,需谨慎)Byte b = (byte)(300) 结果44
6.字符型
(1)ASCII码表都可以标识这些字符(ASCII码表int值与字符有一一对应关系),char的取值范围0-65535,97在这个范围内
(2)Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占的两个字节.所以,Java中的字符可以存储一个中文汉字
(3)记住三个值:
‘0‘ 48
‘A‘ 65
‘a‘ 97
小结
变量的值是在其声明的数据类型的范围内变化的,因此要给变量赋值,其值要么能够自动类型提升,要么得强制转换.