基础数据类型总结:
一、八中基础数据类型占用字节
类型 |
占用字节 |
取值范围 |
默认值 |
封装类 |
boolean |
1位(不是一个字节) |
true/false |
false |
Boolean |
char |
2 |
0~65535 |
\u0000 |
Character |
byte |
1 |
-128 ~ 127 |
0 |
Byte |
short |
2 |
-32768 ~ 32767 |
0 |
Short |
int |
4 |
+-21亿左右 |
0 |
Integer |
long |
8 |
+-2的63次方 |
0L |
Long |
float |
4 |
+-10的+-38次方 |
0.0f |
Float |
double |
8 |
+-10的+-308次方 |
0.0d |
Double |
二、进一步解析:
1、boolean类型不能跟其他类型进行转换;
2、 char类型用来表示Unicode编码表中的字符,参与运算时可以当成整数来用;
举例:
char a = 'a';
int d = a + 3;
System.out.println(d); //输出值为:100
如果要将a+3的值变为字母,可以这么做:
System.out.println((char)d);
3、整数型的值默认类型为int,但:
byte b = 1; //表达式正确
short s = 2; //表达式正确
byte b2 = 200;//错误,200超过了byte的取值范围;
short s2 = 70000; //错误,70000超过了short的取值范围;
解释:整数类型数值默认为int,但在没有超过所赋值的变量的取值范围时,可以正常赋值,超过所赋值的变量的取值范围则报错;
4、如果整形数值大于int的最大取值范围,则数据值加 L;
int i1 = 2200000000;//错误,超过了int的取值范围
int i2 = 2200000000L;//错误,Long类型超过了int范围
long i3 = 2200000000L;//正确
5、浮点型默认为double,小数据类型必须加 f;(double取值范围> float)
//以下表达式均正确,因为:精度高的不能赋给精度低的,精度低的可以赋给精度高的。
//所以double d8=1.0f是可以的,double d2=1也是可以的
//至于double d5=1D,可以理解为变量d5的值是1, D是双精度数的后缀,然后再将值赋给d5
double d1 = 1; //正确,默认为int,int自动转换为double
double d2 =1.0;
double d3 = 1d;
double d4 = 1.0d;
double d5 = 1D;
double d6 = 1.0D;
double d7 = 1.0f;
double d8 = 1.0F;
float f1 = 1;//正确,默认为int,int自动转换为float
float f2 = 1.0;//错误,默认为double
float f3 = 1f;
float f4 = 1.0f;
float f5 = 1F;
float f6 = 1.0F;
float f7 = 3L;//正确,因为long类型容量没有float大
三、基本数据类型转换:从容量小的类型到容量大的类型的转换为自动类型转换,把容量大的数据类转赋值给容量小的数据类需要强制类型转换 (是容量,即取值范围,不是字节占用大小):(低)byte、short、char->int->long->float->double(高)
解读:
1、byte类型数据可以自动转换成short类型;short类型数据和char类型数据之间相互转换只能强制类型转换,因为它们虽然内存占用相同但是表数范围不一样(short是-32768~ 32767,char是0~65535)。
2、在参与计算的时候,byte、short、char之间计算不会互相转换,而是转换成int再计算,即使是同类型间计算也会先转换成int再计算,计算后赋值给byte、short、char需要强制类型转换(我理解因为这时是将一个int变量赋值给byte、short、char,因不知道具体指是多少所以java会认为可能会溢出,所以需要强转)。举例:
byte b1 = 1;
short s1 = 2;
char c1 = 'c';
int sum = b1+ s1 + c1;
System.out.println("sum:" + sum);// sum:102
byte sum2 = sum;//表达式错误,需要强制转型
3、有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。
//多种类型混合运算
char cc1 = 'a';
byte bb1 = 1;
short ss1 = 2;
int ii1 = 3;
long ll1 = 4;
float ff1 = 5f;
double dd1 = 6;
double summ3 = cc1 + bb1 + ss1 + ii1 + ll1 + ff1 + dd1;//summ3必须声明为double,否则报错
System.out.println("summ3:" +summ3);// summ3:118.0
4、float f7 = 3L;//正确
解释:因为long类型取值范围容量没有float大
System.out.println(Long.SIZE);
System.out.println(Long.MAX_VALUE);
System.out.println(Float.SIZE);
System.out.println(Float.MAX_VALUE);
输出:
64
9223372036854775807
32
3.4028235E38
显然,long的容量没有float的大
5、类型转换,可能会造成精度降低或溢出。
举例:
精度降低:
举例:
int a = 3;
double b = 0.03;
double c = 0.03;
double d = a+b+c;
System.out.println("d:" + d);//输出:d:3.0599999999999996
解决:使用java.math包中的BigDecima类并用String来构造,不想举例了,手都写痛了,各位看官自己去度娘搜吧。
溢出:
例子1:
int money=1000000000; //10亿
int year=20;
int total=money*year;
System.out.println(total);// 输出结果:-1474836480
错误写法:
int total=money*year//超过int范围
long total=money*year; //因为money和year都是int型,所以他俩的乘积也是int型,超出int型就会出现溢出
long total=(long)(money*year);//道理同上
正确写法:
long total=(long)money*year;//因为long类型乘以int类型仍然是long类型;
例子2:
//一个人70年心跳多少次,输出结果:-2087447296
long times=70*60*24*365*60;
System.out.println(times);
解决:在这条语句long times=70*60*24*365*60;的第一个数字后面加L,这样的话防止前面的相乘结果已溢出如:long times=70L*60*24*365*60;
(全文完)
相关推荐
Java基础数据类型及操作实验报告 Java是一种面向对象的编程语言,具有强大的数据类型系统。了解Java中的基本数据类型及其操作是java编程的基础。本实验报告将介绍Java中的基本数据类型、数据类型转换、控制台输入...
主要介绍了Java基本数据类型与类型转换,结合实例形式分析了Java基本数据类型分类、用法,类型转换及相关操作注意事项,需要的朋友可以参考下
有了这个 对最基础的类型转换不再发愁!!
二进制的转换;数据类型的由来,java的进制转换,数据的类型范围,转码,补码,反码的算法
Java语言基础——Java主类结构、基本数据类型、变量与常量、运算符、数据类型、数据类型转换、代码注释 写了挺久的,谢谢支持(*^▽^*)
第02章 Java编程基础 04 基本数据类型转换
java基础知识之数据类型转换、运算符等的入门级资料,具有一定的参考价值
这是一个用Java语言编写的音频转换源码。ConvertAudioFileFormat_Code.rar内是Myeclipse工程文件,导入Myeclipse即可调试使用。代码只演示了从wav转到Mp3,需要其他的类型的转换,请参考JAVE-Manual。
大数据必学Java基础(十三):基本数据类型的转换
北京动力节点-Java编程零基础教程-069-Java基本语法-数据类型转换-byte、short、char型数据间的运算.avi 北京动力节点-Java编程零基础教程-070-Java基本语法-数据类型-String类型.avi 北京动力节点-Java编程零...
JAVA 语法基础 - 表达式、类型转换、运算符 JAVA 语言中的表达式、类型转换、运算符是编程的基础知识,了解这些概念对于编写高效、正确的代码至关重要。在本文中,我们将详细讲解表达式、类型转换、运算符的概念、...
文章目录Java笔记(9)类型转换与包装类对象类型转换(Casting)基本数据类型的Casting:对Java对象的强制类型转换称为造型==操作符与equals方法==:equals():String对象的创建代码练习题包装类(Wrapper)基本数据...
Java基础、Java语言概述、常量、关键字、标识符、数据类型转换
【IT十八掌徐培成】Java基础第02天-03.数据类型-强制类型转换.zip
一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...
计算机后端-Java-Java核心基础-第14章 面向对象06 22. 基本数据类型转换为包装类.avi
基本数据类型及转换。 3. Java类库中对简单数据类型的类包装。 4. 运算符和表达式运算。 5. 数组和字符串。 五、 Java语言的基本语句 1. 表达式语句。 2. 条件语句。 3. 循环语句。 4. 注释语句。 5. 异常处理。 六...
目前支持基础数据类型int、long、foloat、double、const char *、bool的转换,也支持将数组装换为JAVA中的ArrayList。目前有个难点是将枚举类型直接转换为JAVA中的枚举,这个目前还搞不定,如果有朋友知道怎么搞,...
本文档详细介绍了 Java 中常用的零基础数据类型,包括 `char`、整数型、转义字符、精度损失、浮点型、布尔型和类型转换。给出了每个数据类型的示例代码和输出结果,以帮助初学者理解和使用这些数据类型。同时提供了...
jtsgen :将Java类型转换为TypeScript tl; dr在TypeScript项目中启用Java类型的代码完成。 注释: 处理器: 特征 该项目从Java源发出TypeScript类型。 jtsgen被实现为注释处理器,因此应该轻松地将其集成到当前的...