Java数据类型划分.docx
《Java数据类型划分.docx》由会员分享,可在线阅读,更多相关《Java数据类型划分.docx(15页珍藏版)》请在冰豆网上搜索。
![Java数据类型划分.docx](https://file1.bdocx.com/fileroot1/2023-3/18/a2f4e81e-f8d6-4707-a595-071dcc5bb202/a2f4e81e-f8d6-4707-a595-071dcc5bb2021.gif)
Java数据类型划分
1、课程名称:
Java数据类型划分
2、知识点
2.1、上次课程的主要知识点
Java注释、关键字和标识符。
2.2、本次预计讲解的知识点
1、Java数据类型划分方式;
2、各个常用数据类型的使用。
3、具体内容(★★★★★)
程序的本质实际上就是在于数据的处理上。
所以如果要想进行程序处理,那么必须要有相应的数据类型。
在Java中针对于数据类型一共可以划分为两类:
·基本数据类型:
是进行内容的操作,而不是内存的操作;
|-数值型:
|-整型:
byte、short、int、long;默认值:
0
|-浮点型:
float、double;默认值:
0.0
|-字符型:
char;默认值:
'\u0000'
|-布尔型:
boolean;默认值:
false。
·引用数据类型:
在数据交互过程之中会占用内存空间指向
|-分为:
数组、类、接口;默认值:
null。
对于给出的八种基本数据类型,有其自己特定的使用环境:
·表示整数首先考虑的就是int,例如:
年龄;
·表示小数一定使用double;
·表示日期时间数字、文件、内存大小使用long(字节);
·进行编码转换、数据传输使用byte类型;
·处理中文使用char类型;
·处理逻辑使用boolean类型;
以后考虑代码的时候,float与short可以暂时不考虑。
通过以上的数据范围表就可以发现,double保存的数据范围是最大的。
3.1、整型
在程序开发之中如果要想表示整数就使用整型,同时如果要想定义整型可以使用byte、short、int、long,但是一定要记住,在Java之中有一个特点:
默认的一个整数,其对应的类型永恒是int。
范例:
定义整型变量
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
//定义变量的语法:
数据类型变量名称=默认值;
//10作为一个常量其类型是int型
intnum=10;//定义一个num的int型变量,其内容为10
//代码从等号右边开始执行
//int型变量=int型变量+int型常量
num=num+20;//使用num变量的内容(10)+20的常量,将结果设置给num变量
System.out.println(num);//输出num的内容
}
}
变量的内容在开发之中是允许修改的,而常量的内容是不允许修改的。
范例:
数据溢出
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
intmax=Integer.MAX_VALUE;//int的最大值
intmin=Integer.MIN_VALUE;//int的最小值
System.out.println(max);//2147483647
System.out.println(min);//-2147483648
//max是int型变量+int型常量=int型
System.out.println(max+1);//-2147483648
System.out.println(max+2);//-2147483647
//min是int型变量-int型常量=int型
System.out.println(min-1);//2147483647
}
}
之所以会出现数据的溢出操作,那么本质的问题就在于数据类型的操作位数太短了,那么在这种情况下(正常代码基本不会出现)、所以要想解决此时int的问题,那么就必须扩展操作类型,比int大的是long数据类型。
那么现在就会出现一个问题,给出了一个常量或者是变量怎么变为long呢?
·将int变量转换为long:
(long)int变量;
·将int常量转换为long:
常量L。
·如果小范围的数据类型变量或常量与大范围的变量或常量计算时,向转换到大范围数据类型。
范例:
解决数据溢出
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
intmax=Integer.MAX_VALUE;//int的最大值
intmin=Integer.MIN_VALUE;//int的最小值
System.out.println(max);//2147483647
System.out.println(min);//-2147483648
//int型变量+long常量=long类型
System.out.println(max+1L);//2147483648
//强制将int型变为long+int型常量=long类型
System.out.println((long)min-1);//-2147483649
}
}
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
System.out.println(11+1l);//12
}
}
这样的转换操作确实是很少出现的。
但是通过以上的代码实际上发现了一种数据类型的自动转换功能。
不同种数据类型之间是可以进行转换的,而转换原则有如下:
·数据范围保存大的数据类型要转换为数据范围保存小的数据类型,使用强制转换;
·数据范围保存小的数据类型可以自动转换为数据范围保存大的数据类型。
范例:
数据的自动转换
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
intx=10;//整型变量
longnum=x;//int自动变为long型
System.out.println(num);//10
}
}
范例:
强制转换
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
//10是int型常量,将int型自动转换为long
longx=10;//整型变量
intnum=(int)x;//long强制变为int型
System.out.println(num);//10
}
}
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
//10是int型常量,将int型自动转换为long
longx=3777777777L;//整型变量
intnum=(int)x;//long强制变为int型
System.out.println(num);//-517189519
}
}
在数据类型之中byte表示字节数据,字节数据的范围:
-128~127。
那么下面来看一下int与byte的转换。
范例:
byte转换为int
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
bytex=10;//定义byte变量
intnum=x;//byte转换为int
System.out.println(num);
}
}
在Java中,由于byte类型较为特殊,那么进行赋值处理时,如果设置的整型数据(常量)在byte范围内,那么它会帮助用户自动转型,如果超过了byte的范围,那么则需要进行向下的强制转换。
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
bytex=(byte)130;//定义byte变量
intnum=x;//byte转换为int
System.out.println(num);//-126
}
}
现阶段表示数字就使用int。
3.2、浮点型
如果要表示小数(收入、成绩、身高)使用float、double。
但是在Java之中,任何的一个小数常量其对应类型都是double。
范例:
double操作
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
//10.0是一个小数常量,其类型为double
doublex=10.0;
doubley=12.9;
System.out.println(x*y);
}
}
但是千万不要忘记一点,double是整个Java数据类型之中保存范围最大的一个类型。
所以任何的数据类型与double类型进行数学计算时,都会自动转换为double类型。
范例:
double与其他类型操作
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
//10.0是一个小数常量,其类型为double
doublex=10.0;
inty=10;
longz=120;
//double型变量+int型自动变为double型+long型自动变为long型=double型;
System.out.println(x+y+z);
}
}
但是double并不是唯一的小数表示,对于小数还可以使用float表示。
但是有一个问题:
如果要想定义float变量,那么必须将double型的常量转换为float型。
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
floatx=10.2F;
floaty=(float)10.2;
System.out.println(x);
System.out.println(y);
}
}
但是这样的操作是有些啰嗦,之所以提出是因为很多时候,Java也许会用在一些内存操作严格的情况下。
手机。
但是除了小数操作中要使用double类型之外,在一些计算中也需要使用到。
范例:
除法计算
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
intx=10;
inty=4;
System.out.println(x/y);//2
}
}
因为整型是不保存小数位的,所以如果利用整型进行数学计算,那么最终的结果小数位将全部被忽略掉。
范例:
利用float、double进行小数位的保留
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
intx=10;
inty=4;
//int型÷double型=double型
System.out.println(x/(double)y);//2.5
}
}
在大部分情况下,只要有小数点有关的一切操作都使用double完成。
关于默认值的说明
默认值现在不起作用。
范例:
定义变量不设置内容
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
intx;
System.out.println(x);
}
}
正常情况下,变量一定要设置内容之后才可以正常使用。
而事实上,发现默认值没有用处。
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
intx;
x=10;//使用前赋值
System.out.println(x);//10
}
}
这个代码在JDK1.5之后才可以使用,而JDK1.5之前此代码是错误的。
范例:
绝对正确
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
intx=10;//使用前赋值
System.out.println(x);//10
}
}
以后一定要养成习惯,方法中定义变量一定要设置默认值。
3.3、字符型
char主要是保存单个字符,并且单个字符要使用“'”声明。
范例:
char类型
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
charc='A';//字符变量
System.out.println(c);//A
}
}
以后只要是使用了单引号声明的内容都表示单个字符。
在Java里面,由于使用的是UNICODE这种十六进制编码,所以char可以保存中文。
范例:
保存中文
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
charc='好';//字符变量
System.out.println(c);//好
}
}
首先明确的是,计算机的世界里面能保存的数据只是01010101,所以来讲如果要保存字符那么也需要有其对应的编码出现,而Java使用的是UNICODE编码,这个编码的特点:
包含了ASCII码。
那么在这样的情况下,char可以和int互相转换,而char转换为int之后就是具体的编码数据。
范例:
观察转换
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
charc='A';//字符变量
intnum=c;
System.out.println(num);//好
}
}
常用字符范围:
·大写字母:
'A'(65)~'Z'(90);
·小写字母:
'a'(97)~'z'(122);
·数字字母:
'0'(48)~'9'(57)。
可以发现大写字母和小写字母的编码之间差了32个内容。
范例:
大写与小写字母转换
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
charc='A';//字符变量0
intnum=c;//将字符转换为数字(保存的是编码)
num=num+32;//大写字母和小写字母之间差了32
c=(char)num;//将数字强制变为char
System.out.println(c);//a
}
}
综合所述,char最大的优势只在一点上:
可以保存中文。
而byte是保存字节的。
3.4、布尔型
boolean表示的是布尔型数据类型,布尔是一个数学家的名字,它发明了布尔类型。
所谓的布尔类型指的就是有两个内容的概念:
true(真)、false(假)。
一般情况下boolean类型往往都要结合判断语句完成处理。
范例:
使用布尔型
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
booleanflag=true;
//if语句判断的是boolean型数据
if(flag){//如果flag的内容是true,那么就执行
System.out.println("好好学习,天天向上!
");
}
}
}
很多的编程语言实际上本身并没有直接提供布尔型数据,例如:
C语言之中,将0表示为false,而非0表示为true,但是Java并没有这样的0、1描述,只有true、false。
但是可以借助于此概念在数据库设计上的时候使用。
做一个超级管理员的标志位:
1(是超级管理员)、0(普通管理员)。
3.5、字符串:
String
利用char只能够保存单个字符,这在很大程度上是有限制的,所以如果要想表示多个字符,就可以利用String完成。
但是String本身是一个类,但是这个类的使用较为特殊,可以像基本数据类型那样完成。
在程序中使用双引号声明的数据就是字符串。
范例:
定义字符串
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
Stringstr="HelloWorld.";//字符串
//在字符串之中可以使用“+”进行字符串的连接操作
str=str+"HelloMLDN.";
str+="Hello瞌睡虫们";
System.out.println(str);
}
}
现在发现在String进行连接的操作过程之中使用了“+”进行了连接操作,可是“+”也属于数学运算。
范例:
观察如下代码
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
intx=10;
doubley=20.3;
//所有的数据类型与String进行“+”操作中都会自动变为String型
//字符串+double变为字符串+int变为字符串
Stringstr1="计算结果:
"+y+x;//计算结果:
20.310
Stringstr2="计算结果:
"+(y+x);//计算结果:
30.3
System.out.println(str1);
System.out.println(str2);
}
}
另外一点,在程序中还存在有转义字符,包括:
“\n”、“\\”、“\"”、“\'”、“\t”。
范例:
观察转义字符
publicclassTestDemo{
publicstaticvoidmain(Stringargs[]){
Stringstr="hello\"world\",\\hello\n\thaha";
System.out.println(str);
}
}
4、总结
1、数据类型划分以及默认值;
2、表示年龄使用int、表示成绩使用double、表示姓名使用String、表示逻辑使用boolean。