: HelloWorld.java:7: 错误: 不兼容的类型: 从int转换到byte可能会有损失 byte c = a + b; // wrong ^ HelloWorld.java...:9: 错误: 不兼容的类型: 从int转换到byte可能会有损失 byte d = 127 + 1; //wrong 这是一道很常见的面试题,其中错误的原因有两点: 编译器可以识别常量,但是无法识别变量...编译器在编译期将该值作为int类型进行预编译计算后发现超出byte的取值范围,但是又是通过一个byte类型的变量去接收,所以就会出现可能会损失精度的异常。...这里很好的体现了整数类型的默认计算类型就是int类型~ 浮点类型 浮点型有两种,一种是32位的float类型(单精度),一种是64位的double类型(双精度)。 ?...其实,这也诠释了另外一个浮点数问题,因为计算机是二进制的,所以无法精确的表示出浮点数,但是Java也给我们了一种解决方案,那就是我们在涉及到浮点数比较敏感的地方(比如经纬度,金钱)的时候,一定要注意使用
浮点型变量 1.双精度浮点型 double d = 3.14; int a = 1; int b = 2; System.out.println(a / b); // 实际输出 0...6.双精度浮点型的范围:有范围,但是一般不关注 Double.MIN_VALUE输出的是最小值。...f = (float)d; // double-->float, 数据范围由大到小,需要强转d前面加(float),否则编译失败 a = d; // double-->int 报错,类型不兼容...不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型 2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失 3....: 从int转换到byte可能会有损失 byte c = a + b; 结论: byte 和 byte 都是相同类型, 但是出现编译报错.
这就好比买衣服时的尺码: 3.4 浮点型变量 3.4.1 双精度浮点型 double d = 3.14; System.Out.println(d); 神奇的代码一: int a = 1; int...-->float, 数据范围由大到小,需要强转,否则编译失败 a = d; // 报错,类型不兼容 a = (int)d; // int没有double表示的数据范围大,需要强转,小数点之后全部丢弃 byte...flag = true; a = flag; // 编译失败:类型不兼容 flag = a; // 编译失败:类型不兼容 注意事项: 1....不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型 2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失 3....转换到byte可能会有损失 byte c = a + b; ^ 结论: byte 和 byte 都是相同类型, 但是出现编译报错.
; System.out.println(Float.MAX_VALUE); System.out.println(Float.MIN_VALUE); } } 双精度浮点型最值求法...boolean的取值只有两种true or false,用于逻辑判断,整型值与浮点型数值和布尔型的值是无法转换的。...强制类型转换如同将大瓶子中的水倒入到小瓶子里最终瓶子虽然也装满水了,但是会造成溢出部分水(数据的缺失);隐式转换如同小瓶子中的水倒入到大瓶子里。...// 编译出错, 提示不兼容的类型....(c); // 编译报错 Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失 byte c = a + b; 结论: byte 和 byte 都是相同类型, 但是出现编译报错
三、双精度浮点型变量 基本语法 double 变量名 = 初始值; 代码示例 double num = 1.0; System.out.println(num); 注意事项 示例一 public class...// 编译出错, 提示不兼容的类型....总结 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失....(c); // 编译报错 Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失 byte c = a + b; ^ 结论: byte 和 byte 都是相同类型...String.valueOf(double d) 这个方法将一个双精度浮点数类型的值转换为字符串。它返回一个表示参数值的字符串。
2.int 和 String 之间的相互转换 总结 ---- 前言 之前有写过IDEA如何从创建项目到类的详细步骤。...50.5 -->浮点数(小数)字面量,默认是double类型。 ”abc“ -->字符串型字面量,默认是String类。...b = a; // 编译通过. 2.如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失. int a = 0; double b = 10.5; a = (int)b; /.../精度会丢失 int a = 10; boolean b = false; b = (boolean)a; // 编译出错, 提示不兼容的类型,boolean不能转换 强制类型转换不是一定能成功,...Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失 结论: 1.byte 和 byte 都是相同类型, 但是出现编译报错.
,所有出现精度损失,所以需要强制转换; *boolean 类型不能转换成任何其它数据类型; byte b2 = 120; //没报错的原因: //编译时候,进行检查,看赋值大小是否超过变量的类型所容纳的范围...int i2 = d2; //错误: 不兼容的类型: 从double转换到int可能会有损失 char c1 = 'a'; int i3 = c1; //自动转换 int i4 = 100; //char...c2 = i4;// 错误: 不兼容的类型: 从int转换到char可能会有损失 4.四则运算中 /* 1、如果两个操作数中有一个是double类型,另一个就会转换为double类型; 2、否则,如果有一个操作数是...*/ *面试陷阱 byte b1 = 10; byte b2 = 11; //错误: 不兼容的类型: 从int转换到byte可能会有损失 //否则,两个操作数都将转换为int类型。...byte b3 = b1 + b2 //错误 byte b3 = (byte)(b1 + b2); //正确 *面试陷阱2: short s1 = 1; s1 = s1 + 1; //错误: 不兼容的类型
3.14; // 浮点数常量默认是 double 类型 float pi = 3.14F; // float 类型常量需在浮点数后添加 f 或 F 后缀 float pi = 3.14; // 错误...: 不兼容的类型: 从 double 转换到 float 可能会有损失 3.14 == 3.14F; // false 3.14 == 3.14D; // true float a = 1.0f - 0.9f...2 涉及到类型转换的问题需要特别注意。...),i = -12 这里想重点提一下,强制类型转换过程可能造成溢出或损失精度。...short s = 5; // 自动类型转换(int转short,大转小) s = s - 2; 输出s提示错误: "不兼容的类型: 从int转换到short可能会有损失"。
用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 float 基本数据类型之一,单精度浮点数类型 for 一种循环结构的引导词 goto 保留关键字,没有具体含义 if 条件语句的引导词...例如十进制的127,用二进制表示为011111八进制表示为017,用十六进制表示为0x7F或者0X7F。 浮点数常量 分为foat单精度浮点数和double双精度浮点数两种类型。...其中,单精度浮点数后面以F或f结尾,而双精度浮点数则以D或d结尾。当然,在使用浮点数时也可以在结尾处不加任何的后缀,此时虚拟机会默认为double双精度浮点数。浮点数常量还可以通过指数形式来表示。...我们来看浮点数类型 浮点数类型分为两种,一个是double,这个是双精度的,一个是float,这个是单精度的。说白了,双精度的变量类型就是比单精度的变量类型小数的保留位数多而已,这是使用上的区别。...Error:(6, 18) java: 不兼容的类型: 从int转换到byte可能会有损失 我们这样写是不对的 那我们非要这样写,又不想让它出现错误,我们这样写看看 public class var
运行第一个会报错,因为1是int类型,而s是short类型,通过+运算后s1自动转换成int型。...错误提示:Error:(21, 17) java: 不兼容的类型: 从int转换到short可能会有损失 运行第二个是正确的,s1=2,+1是int类型的操作,s1自动转换int类型 4、int 和Integer...3.4是双精度。...将双精度型(double) 赋值给浮点型(float)属于下转型( down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float...:高级需要强制转换成低级,可能会丢失精度 规则: = 右边先自动转换成表达式中最高级的数据类型,再进行运算。
2.浮点型 float----float型即单精度浮点型,使用float关键字来定义float型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。...double---double型即双精度浮点型,使用double关键字来定义double型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。...强制转换为byte类型之后,因为200大于了byte类型的最大取值范围127,所以会在从头开始,也就是再从byte类型的最小值-128开始数(200-127)位,得出-56。...将i的值赋给s,类型不兼容,int的最大值超过了short的最大的范围 4. public class Test1 { public static void main(String[] args...char short byte 进行运算的时候,默认取值为int 显式转换:也叫作强制类型转换,可能会导致精度丢失,精度由高到低,需要声明 隐式转换:精度由低到高,不需要声明 变量赋值练习:
定义:强制类型转换是把变量从一种类型转换为另一种数据类型。 强制类型转换算是C语言中常见常考的一项内容,如对于类型处理不好,将会产生错误结果。...其一般形式为:(类型说明符)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。自动转换是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型到另一类的转换。...● 当较低类型的数据转换为较高类型时,一般只是形式上有所改变, 而不影响数据的实质内容, 而较高类型的数据转换为较低类型时则可能有些数据丢失。...具体的转换如下: (1) 浮点型与整型 ● 将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分, 只保留整数部分。 ...(2) 单、双精度浮点型 ● 由于c语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为doub1e型数据参加运算,然后直接赋值。
特点:数据范围小的转为数据范围大的时会自动进行 System.Out.println(1024); // 整型默认情况下是int System.Out.println(3.14); // 浮点型默认情况下是...-->float, 数据范围由大到小,需要强转,否则编译失败 a = d; // 报错,类型不兼容 a = (int)d; // int没有double表示的数据范围大,需要强转,小数点之后全部丢弃 byte...flag = true; a = flag; // 编译失败:类型不兼容 flag = a; // 编译失败:类型不兼容 注意事项: 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型...如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查 强制类型转换不一定能成功,不相干的类型不能互相转换...: 不兼容的类型: 从int转换到byte可能会有损失 byte c = a + b; ^ byte 和 byte 都是相同类型, 但是出现编译报错.
-263~263-1 单精度浮点数 float 4字节 有范围,一般不关注 双精度浮点数 double 8字节 有范围,一般不关注 字符型 char 2字节 0~65535 布尔型 boolean 没有明确规定...字节的包装类型为Byte 3.4 浮点型变量 3.4.1 双精度浮点型 double d = 3.14; System.out.println(d); 代码一: int a = 1; int b = 2...类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势 必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值 3.4.2 单精度浮点型 loat...)d; // double-->float, 数据范围由大到小,需要强转,否则编译失败 a = d; // 报错,类型不兼容 a = (int)d; // int没有double表示的数据范围大...,超过byte范围,需要显示转换,否则报错 boolean flag = true; a = flag; // 编译失败:类型不兼容 flag = a; // 编译失败:类型不兼容 注意事项:
、刷题神器点击跳转进入网站 数据类型 基础数据类型 整数类型 浮点数类型 字符类型 布尔型 字符串类型 引用数据类型 数据类型转换 自动类型转换 强制类型转换 结束语 基础数据类型 整数类型 Java...static void main(String[] args) { int a = 1; System.out.println(a); } } 1 浮点数类型 浮点型常量是可以带小数点的数据类型...例如2.34,12.76 浮点型数据可以分为单精度浮点数(float)和双精度浮点数(double) 浮点数类型 占用字节数 数据位 范围 float 4 32位 -3.4e38~3.4e38 double...数据类型转换 数据范围从小到大 byte < char,short< int < long < float < double 自动类型转换 把一个表示数据范围小的数值或者变量赋值给另一个表示范围大的变量...例如:int h = (int)77.77; 如果直接double转换int会报错 这时需要强制类型转换为int类型(不建议使用,使用会有损耗) public class User {
当操作来自网络或文件的数据流时 byte 类型的变量特别有用 当操作与java的其他内置类型不直接兼容的原始二进制数据时 byte 类型的变量也很有用 byte b,c short short是有符号的...~2147483647 long long是有符号的64位类型对于那些int类型不足以容纳期望数值的情况 long类型是有用的 long类型的范围相当大 这使当需要很大的整数时它非常有用 浮点数 float...32位 存储的单精度数值 在某些处理器上 单精度运算速度更快 并且占用的空间是双精度的一半 但是当数值非常大或非常小时会变得不精确 如果需要小数部分 并且精度要求不是很高时 float类型变量是很有用的...double 双精度使用double关键字表示 并使用64位存储数值 在针对高速数学运算进行优化的某些现代处理器上 实际上双精度数值运算速度更快 字符型 在java正式规范中 char被当作整数类型...不能转换成任何数字表示形式 在 java中 true 不等于1 字面值 false 也不等于0 字符型字面值
如果你用 Java 或 C 语言编过程,那你一定知道用于存储值的不同数据类型。我们在前面的讨论中将考虑两种数据类型:整数型和浮点型。 整数型存储整数,而浮点型存储小数。...Exponent(指数)表示小数点需要向左或向右移动的步数。 现在,有两种显示浮点数的方法:单精度和双精度。在进行浮点运算时,单精度使用 32 位,而双精度使用 64 位。...与许多其他编程语言不同,JavaScript 并未定义不同类型的数字数据类型,而是始终遵循国际 IEEE 754 标准,将数字存储为双精度浮点数。...这种格式以 64 位存储数字,其中数字(分数)存储在位 0 到 51 中,指数存储在位 52 到 62 中,符号存储在位 63 中。 ? IEEE754 双精度标准。...转换为浮点数,它变成: ? 这就是 0.1 + 0.2 = 0.30000000000000004 的原因。
从引言中的基本数据类型的回顾中,我们可以看出,int是比char范围更大的,因此,这些错误主要便是会出现在从int转到char的过程中。...char c4 = 65536; System.out.println(c4); 输出: Error:(33, 19) java: 不兼容的类型: 从int转换到char可能会有损失 报错是报在了上面代码中的第...types, Required: char, Found: int,即类型不匹配,而如果我们直接运行,或者用javac来编译的话,都会报出如下的错误: Error:(34, 19) java: 不兼容的类型...: 从int转换到char可能会有损失 而如果我们先初始化一个char型的变量c6,将这个变量赋给一个int型的变量呢?...,由于是强制转换,将一个较多位数的类型转换成一个较少位数的类型,因此,可能会有损失发生,若int的数字大于65535,则会丢弃16位以外的数字,如下例: int num8 = 65536 + 97; char
领取专属 10元无门槛券
手把手带您无忧上云