基础数据类型总结:
一、八中基础数据类型占用字节
类型 |
占用字节 |
取值范围 |
默认值 |
封装类 |
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数据类型的转换是编程基础中的重要一环,理解和熟练运用这些转换技巧对于编写高效、安全的代码至关重要。这个压缩包的代码实例和中文注释无疑为初学者提供了一个很好的学习资源。
Kettle 中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转换,job 则完成整个工作流的控制。Kettle 的四大块分别是 Chef、Kitchen、Spoon 和 Span,分别负责工作设计、工作执行、转换...
在“java 常用基础类型之强制转换”这个主题中,我们将深入探讨Java中的基本数据类型转换规则和注意事项。 1. **基本数据类型的转换** Java中有八种基本数据类型:`byte`, `short`, `int`, `long`, `float`, `...
Java基础数据类型及操作实验报告 Java是一种面向对象的编程语言,具有强大的数据类型系统。了解Java中的基本数据类型及其操作是java编程的基础。本实验报告将介绍Java中的基本数据类型、数据类型转换、控制台输入...
标题“java数据类型转换.pdf”表明本文档是关于Java编程语言中的数据类型转换的技术文档。在Java中,数据类型转换是指将一种数据类型转换为另一种数据类型的过程。Java语言中有两种类型的数据类型转换:自动(隐式)...
根据提供的文件信息,我们可以总结出以下关于如何在Java中将各种数据类型转换为JSON格式的相关知识点: ### Java中任何类型转换成JSON数据格式 #### 一、简介 在现代Web开发中,JSON(JavaScript Object Notation...
Java 类型转换是 Java 编程语言中的一部分,它是 Java 编程的基础,但很多时候偏偏就会在这样的基础细节部分出错。Java 中的数据类型可以分为两大类:简单类型(Primitive)和引用类型(Reference)。简单类型变量中...
在Java中,Jython是一个非常有用的工具,它允许我们在Java应用程序中嵌入Python代码,并能够无缝地在Python数据类型和Java数据类型之间进行转换。这极大地扩展了Java的生态系统,让我们能够利用Python丰富的库和简洁...
### Java基础之类型转换详解 #### 一、概述 在Java编程中,类型转换是一项非常重要的概念,它涉及数据在不同类型之间的变换。本篇文章将详细介绍Java中的类型转换规则及其应用场景,帮助读者深入理解并正确运用...
自动包装是 Java 提供的特性,它允许基础数据类型与它们对应的包装类对象之间无缝转换。例如,`int` 到 `Integer`,反之亦然。这在使用集合框架或其他需要对象而不是基础类型的地方非常有用。自动包装和解包在隐式...
总的来说,JSON与Java数据的相互转换是Web开发中的常见任务,理解并熟练掌握这些转换方法对于提升开发效率至关重要。开发者应根据项目需求和团队习惯选择合适的JSON处理库,并确保在处理过程中正确处理可能的异常,...
在IT行业中,数据类型的转换是一项基础且至关重要的任务。在编程时,我们常常需要将一个数据类型转换为另一个数据类型,以满足特定的程序需求。Struts1框架,作为一个经典的MVC(Model-View-Controller)框架,在...
本文详细介绍了Java的数据类型及其相关的概念,包括原始数据类型、引用数据类型、数据类型转换、对象包装器类以及字符串等内容。了解这些基础知识对于学习Java编程至关重要,特别是对于初学者来说更是如此。希望本文...
Java 数据类型是编程的基础,了解并熟练掌握它们的特性及转换方式对于任何Java开发者来说都至关重要。Java的数据类型主要分为两大类:基本数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)...
标题中的"C# Java互相转换工具"指的是一个软件或库,旨在帮助开发者在C#和Java之间进行代码迁移或互操作。这个工具可能是为了方便那些在两个不同平台间工作或者需要跨语言共享代码的开发人员。从描述中的链接来看,...
### Java 数据格式转换成 JSON 的全面解析 #### 一、JSON 概述 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,最初由 Douglas Crockford 提出。它基于 JavaScript 的语法,但独立于任何编程语言...
Java 数据类型是编程的基础,它分为两种主要类别:简单类型(Primitive)和引用类型(Reference)。简单类型包括基本的数据结构,如整数、浮点数、字符和布尔值,它们在内存中直接存储值,而引用类型则指向内存中的...
1. **数据结构**:为了存储和处理不同单位及转换关系,可能需要设计一个合适的数据结构,如树形结构或图,以方便查找和计算转换路径。 2. **错误处理**:在处理用户输入时,应进行有效性检查,确保提供的单位存在于...