本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
8分33秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 步骤 1 : 转换规则 步骤 2 : 低精度向高精度转换 步骤 3 : 高精度向低精度转换 步骤 4 : 练习-类型转换 步骤 5 : 答案-类型转换
转换规则如图所示
精度高的数据类型就像容量大的杯子,可以放更大的数据 精度低的数据类型就像容量小的杯子,只能放更小的数据 小杯子往大杯子里倒东西,大杯子怎么都放得下 大杯子往小杯子里倒东西,有的时候放的下,有的时候就会有溢出 需要注意的一点是 虽然short和char都是16位的,长度是一样的 但是彼此之间,依然需要进行强制转换 public class HelloWorld {
public static void main(String[] args) {
char c = 'A';
short s = 80;
//虽然short和char都是16位的,长度是一样的
//但是彼此之间,依然需要进行强制转换
c = (char) s;
//直接进行转换,会出现编译错误
s = c;
}
}
public class HelloWorld { public static void main(String[] args) { char c = 'A'; short s = 80; //虽然short和char都是16位的,长度是一样的 //但是彼此之间,依然需要进行强制转换 c = (char) s; //直接进行转换,会出现编译错误 s = c; } } long l = 50; int i = 50; l 是long类型的,其类型长度是64位 i 是int类型的,其类型长度是32位 所以l的精度,比i的精度要高 l = i; 把i的值赋给l, 首先l和i彼此的类型是不一样的,那么能否转换就取决于彼此的精度 这个例子,是低精度向高精度转换 是可以正常转换的 换句话说,int比较小,要放进比较大的long,随便怎么样,都放的进去 public class HelloWorld {
public static void main(String[] args) {
long l = 50;
int i = 50;
//int比较小,要放进比较大的long,随便怎么样,都放的进去
l = i;
}
}
public class HelloWorld { public static void main(String[] args) { long l = 50; int i = 50; //int比较小,要放进比较大的long,随便怎么样,都放的进去 l = i; } } byte b = 5; int i1 = 10; int i2 = 300; b = i1; b=i2; b的类型是byte,其长度是8,最大只能放127 i1 的类型是int, 其长度是32,最大,反正就是很大了,超过127 所以, 把int类型的数据转成为byte类型的数据,是有风险的 有的时候是可以转换的,比如 b = i1 (i1=10); 有的时候不可以转换 比如 b= i2 (i2=300) 因为放不下了 编译器就会提示错误 这个时候就只能采用强制转换,强制转换的意思就是,转是可以转的,但是不对转换之后的值负责。 风险自担,后果自负 public class HelloWorld {
public static void main(String[] args) {
byte b = 5;
int i1 = 10;
int i2 = 300;
b = (byte) i1;
//因为i1的值是在byte范围之内,所以即便进行强制转换
//最后得到的值,也是10
System.out.println(b);
//因为i2的值是在byte范围之外,所以就会按照byte的长度进行截取
//i2的值是300,其对应的二进制数是 100101100
//按照byte的长度8位进行截取后,其值为 00101100 即44
b =(byte) i2;
System.out.println(b);
//查看一个整数对应的二进制的方法:
System.out.println(Integer.toBinaryString(i2));
}
}
short a = 1;
short b = 2; 那么 a+b 是什么类型?
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
1分14秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 public class HelloWorld {
public void method1(final int j) {
short a = 1;
short b = 2;
short c = (short) (a+b);
}
}
public class HelloWorld { public void method1(final int j) { short a = 1; short b = 2; short c = (short) (a+b); } }
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2022-09-04
有点蒙圈
15 个答案
hs20040602 跳转到问题位置 答案时间:2024-06-09 tew 跳转到问题位置 答案时间:2024-05-09 <u>a
<u>a 余三岁 跳转到问题位置 答案时间:2023-10-12 //强制类型转换 short a = 1; short b = 2; System.out.println(a + b); //short byte char在进行计算时,会自动转换成int类型; 余三岁 跳转到问题位置 答案时间:2023-10-12 //强制类型转换 short a = 1; short b = 2; 12345yida 跳转到问题位置 答案时间:2023-08-14 应该整数运算默认是int类型,所以只有不管是byte还是short最后运算得到的都是int类型的值
YWC992 跳转到问题位置 答案时间:2023-04-17 Java中进行二元与运算类型的提升规则
整数运算:
如果两个操作数有一个为long,则结果也为long;
没有long时,结果为int。即使操作数全为short、byte,结果也是int。
浮点运算:
如果两个操作数有一个为double,则结果为double;
只有两个操作数都是float,则结果才为float。
注意:int 与 float 运算,结果为 float。
徐秉然 跳转到问题位置 答案时间:2023-04-01 short a = 1;
short b1 = 2;
int o =a+b1;
short t = (short) (a+b1);
LWAN 跳转到问题位置 答案时间:2023-03-20 short a = 1;
short b = 2;
那么 a+b 是什么类型?
even87Equ 跳转到问题位置 答案时间:2023-01-16 short a=1; short b=2; //是int byte short char 运算会自动类型提升 System.out.println(a+b); learn杜 跳转到问题位置 答案时间:2023-01-06 Java中进行二元与运算类型的提升规则
整数运算:
如果两个操作数有一个为long,则结果也为long;
没有long时,结果为int。即使操作数全为short、byte,结果也是int。
浮点运算:
如果两个操作数有一个为double,则结果为double;
只有两个操作数都是float,则结果才为float。
注意:int 与 float 运算,结果为 float。
07758633759 跳转到问题位置 答案时间:2022-12-06 就是如果直接输出结果它会是int类型或者更大可以向上述一样大杯装小杯强制转换它的值,
//强制字符转换 short a = 1; short b = 2; short c =(byte)(a+b); System.out.println(c); 南苛 跳转到问题位置 答案时间:2022-11-02 short a=1;
short b=2;
//a+b为int(会自动提升为int)
short c=(short)(a+b);//强制类型转换可以克服自动提升的问题
南苛 跳转到问题位置 答案时间:2022-11-02 short a=1;
short b=2;
System.out.println(a+b);
//a+b为short类型
panda1 跳转到问题位置 答案时间:2022-10-31 int类型
A|Ace 跳转到问题位置 答案时间:2022-09-12 3只是可以用byte类型变量储存,没说储存3的就是byte类型变量,你就算用double类型变量储存3,它也不会因为这样就变成byte
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2022-04-25
int转换为低精度为什么用int型变量转低精度报错但int型数值转就没问题
12 个答案
tew 跳转到问题位置 答案时间:2024-05-09 <u>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
<u>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 木宇 跳转到问题位置 答案时间:2024-04-18
public class HelloWorld2 {
//强制转换,高精度像低精度转换,需要进行强制转换
public static void main(String[] args) {
int a = 127;
byte b = 10;
b=(byte)a;
System.out.println(b);
//练习
//short a = 1;
//short b = 2;
//那么 a+b 是什么类型?
short a1 = 1;
short b1 = 2;
System.out.println(a1+b1);
/*
Java中进行二元与运算类型的提升规则
整数运算:
如果两个操作数有一个为long,则结果也为long;
没有long时,结果为int。即使操作数全为short、byte,结果也是int。
浮点运算:
如果两个操作数有一个为double,则结果为double;
只有两个操作数都是float,则结果才为float。
注意:int 与 float 运算,结果为 float*/
}
}
怪异的羊 跳转到问题位置 答案时间:2023-02-26 完成
云帆早日上岸 跳转到问题位置 答案时间:2023-02-09 看上一节字面值里说,byte,short,int和long的值都可以通过int类型的字面值来创建,d=26是使用字面值来赋值,所以不存在类型转换的问题
开八月 跳转到问题位置 答案时间:2023-02-02 public class HelloWorld {
public static String getType(Object obj) {
return obj.getClass().toString();
}
public static void main(String[] args) {
short i=1;
short b=2;
System.out.println(getType(i+b));
}
}
seek_for_what 跳转到问题位置 答案时间:2022-10-19 d=26中26不应该是int型吗,据我查阅资料java整型默认是int而不是byte
阿文6 跳转到问题位置 答案时间:2022-10-12 int 型
海蓝蓝心爽爽 跳转到问题位置 答案时间:2022-08-22 short a = 1;
short b1 = 2;
int cc = a + b1;
cy20000529 跳转到问题位置 答案时间:2022-06-16 public class bian {
public static void main(String[] args){
short a = 1;
short b = 2;
short c = (short) (a+b);
System.out.println(c);
}
A安1_ 跳转到问题位置 答案时间:2022-04-29 上面说错了,强制转换应该是Byte类型的,英文字母有误哈
A安1_ 跳转到问题位置 答案时间:2022-04-29 什么说错了,强制转换应该是Byte类型的,英文字母有误哈
xiaoba_java 跳转到问题位置 答案时间:2022-04-26 d=26是bety型变量可以接收符合bety型范围的数据
而d=decVal,d是bety型变量,decVal是int型变量,int型变量不能直接转成bety型变量,需要强制转换d=(bety)decVal;
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2021-08-09
答案视频没声音
2021-07-31
我如何知道运算结果是多少
2021-07-04
高低精度转换
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 40 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|