本章目标
掌握Java数据类型的划分
掌握Java中的八种基本数据类型
掌握数据类型间的相互转换
Java数据类型划分
Java基本数据类型
整数类型
当数据不带有小数或分数时,即可以声明为整数变量,如3,-147等即为整数。Java中,整数数据类型可以分为long、int、short及byte四种:long为64位,也就是8个字节(bytes),可表示范围为-9223372036854775808 到 9223372036854775807;int为32 位,也就是4个字节,表示范围为-2147483648 到 2147483647;若是数据值的范围在-32768 到 32767之间时,可以声明为short(短整数)类型;若是数据值更小,在-128到127之间时,可以声明为byte类型以节省内存空间。举例来说,想声明一个短整型变量sum时,可以在程序中做出如下的声明:
short sum ; // 声明sum为短整型
数据过长
public class DataDemo1 {
public static void main(String[] args) {
int num=99999999999999999999;//定义整型变量,错误,超出长度范围
}
/*结果:
* 当整数的数据大小超出了可以表示的范围,而程序中又没有做数值范围的检查时,
* 这个整型变量所输出的值将发生紊乱,且不是预期的运行结果。
* */
}
数据的溢出
当整数的数据大小超出了可以表示的范围,而程序中又没有做数值范围的检查时,这个整型变量所输出的值将发生紊乱,且不是预期的运行结果。
将整型的最大值加1和加2
public class DataDemo2 {
public static void main(String[] args) {
int max=Integer.MAX_VALUE;//得到整型的最大值
System.out.println("整型的最大值:"+max);//输出最大值
System.out.println("整型的最大值 + 1:"+(max + 1));//最大值加 1
System.out.println("整型的最大值 + 2:"+(max + 2));//最大值加 2
}
/*结果:
* 整型的最大值:2147483647
* 整型的最大值 + 1:-2147483648
* 整型的最大值 + 2:-2147483647
* */
}
使用强制类型转换,防止数据溢出
public class DataDemo3 {
public static void main(String[] args) {
int max=Integer.MAX_VALUE;//整型的最大值
System.out.println("整型的最大值:"+max);//输出最大值
System.out.println("整型的最大值 + 1:"+(max + 1));//最大值加 1
System.out.println("整型的最大值 + 2:"+(max + 2L));//变为 long 型
System.out.println("整型的最大值 + 2:"+((long)max + 2));//转换为 long 型
}
/*结果:
* 整型的最大值:2147483647
* 整型的最大值 + 1:-2147483648
* 整型的最大值 + 2:2147483649
* 整型的最大值 + 2:2147483649
* */
}
字符类型
字符类型在内存中占有2个字节,可以用来保存英文字母等字符。计算机处理字符类型时,是把这些字符当成不同的整数来看待,因此,严格说来,字符类型也算是整数类型的一种。
public class DataDemo4 {
public static void main(String[] args) {
char ch1='a';//定义字符
char ch2=97;//定义字符,整型转字符
System.out.println("ch1 = "+ch1);//打印输出
System.out.println("ch2 = "+ch2);//打印输出
}
/*结果:
* ch1 = a
* ch2 = a
* */
}
常用的转义字符
转义字符的应用
public class DataDemo5 {
public static void main(String[] args) {
char ch1 = '\"';//定义转义字符
char ch2='\\';//定义转义字符
System.out.println("ch1 ="+ch1);//打印输出
System.out.println("ch2 ="+ch2);//打印输出
System.out.println(ch2+"\"Hello World\""+ch2);//直接输出转义字符
}
/*结果:
* ch1 ="
* ch2 =\
* \"Hello World"\
* */
}
浮点数类型与双精度浮点数类型
在日常生活中经常会使用到小数类型的数值,如身高、体重等需要精确的数值时,整数就不能满足程序设计者的要求了。在数学中,这些带有小数点的数值称为实数,在Java里,这种数据类型称为浮点数类型(float),其长度为32个字节,有效范围为-3.4E1038 到 3.4E1038。当浮点数的表示范围不够大的时候,还有一种双精度(double)浮点数可供使用。双精度浮点数类型的长度为64个字节,有效范围为-1.7E10308 到1.7E10308。
浮点型数据计算
public class DataDemo6 {
public static void main(String[] args) {
float num=3.0f;//定义 float 型变量
System.out.println("两个小数相乘:"+num*num);//计算两数相乘
}
/*结果:
* 两个小数相乘:9.0
* */
}
布尔类型
布尔(boolean)类型的变量,只有true(真)和false(假)两种。也就是说,当将一个变量定义成布尔类型时,它的值只能是true或false,除此之外,没有其他的值可以赋值给这个变量。举例来说,想声明名称为flag变量为的布尔类型,并设置为true值,可以使用下面的语句:
boolean flag = true ; // 声明布尔变量flag,并赋值为true
布尔类型的使用
public class DataDemo7 {
public static void main(String[] args) {
boolean flag = true;//定义布尔型变量
System.out.println("flag = "+flag);//打印输出
}
/*结果:
* flag = true
* */
}
基本数据类型的默认值
数据类型的转换
Java的数据类型在定义时就已经确定了,因此不能随意转换成其它的数据类型,但Java允许用户有限度地做类型转换处理。数据类型的转换方式可分为“自动类型转换”及“强制类型转换”两种。
数据类型的自动转换
在程序中已经定义好了数据类型的变量,若是想用另一种数据类型表示时,Java会在下列的条件皆成立时,自动做数据类型的转换:
1、转换前的数据类型与转换后的类型兼容。
2、转换后的数据类型的表示范围比转换前的类型大。
数据类型的转换
public class DataDemo8 {
public static void main(String[] args) {
int x = 30;//定义整型变量
float y=22.19f;//定义浮点型变量
System.out.println("x/y = "+(x/y));//除法操作
System.out.println("10/3.5 = "+(10/3.5));//直接使用常量进行除法
System.out.println("10/3 = "+(10/3));//直接使用常量进行除法
}
/*结果:
* x/y = 1.3519603
* 10/3.5 = 2.857142857142857
* 10/3 = 3
* */
}
提示:任何类型的数据都向String转型
package J010301;
public class DataDemo9 {
public static void main(String[] args) {
String str = "chaoyi";//定义字符串变量
int x=30;//定义整型变量
str =str+x;//改变字符串变量内容
System.out.println("str = "+str);//打印输出
}
/*结果:
* str = chaoyi30
* */
}
数据类型的强制转换
当两个整数进行运算时,其运算的结果也会是整数。举例来说,当做整数除法8/3的运算,其结果为整数2,并不是实际的2.33333…,因此在Java中若是想要得到计算的结果是浮点数时,就必须将数据类型做强制性的转换,转换的语法如下:
(欲转换的数据类型)变量名称;
public class DataDemo11 {
public static void main(String[] args) {
float f=30.3f;// 定义浮点型变量
int x =(int)f;// 强制转换为int型
System.out.println("x = "+x);// 输出转型之后的值
System.out.println("10/3 = "+((float)10/3));// 常量计算使用强制类型转换
}
/*结果:
* x = 30
* 10/3 = 3.3333333
* */
}