Java 零基础视频教程 P96-P100
P97 Java零基础---整数没有超范围可以直接赋值给char
/* 1.整数是否直接赋值给char 2.char x=97; 这个java语句是允许的,并且输出的结果是'a' 经过这个测试得出两个结论: 第一个结论:当一个整数赋值给char类型变量的时候,会自动转换成char字符型。 最终的结果是一个字符。 第二个结论:当一个整数没有超出byte short char 的取值范围的时候 这个整数可以直接赋值给byte short char 类型的变量。 */ public class CharTest03{ public static void main(String[] args){ char c1='a'; System.out.println(c1); //这里会自动做类型转换吗? //97是int类型(这是java中规定,默认当做int处理) //c2是char类型 char c2=97; System.out.println(c2); //char类型取值范围:[0-65535] char c3=65535;//实际上最终是一个 看不懂 的字符。 System.out.println(c3); //错误:不兼容的类型;从int转换到char可能会有损失。 char c4=(char)65536; System.out.println(c4); } }
P98 Java零基础---二进制原码补码反码
/* 1.计算机在任何情况下都只能识别二进制 2.计算机在底层存储数据的时候,一律存储的是 二进制的补码形式 计算机采用补码形式存储数据的原因是:补码形式效率最高。 3.什么是补码那: 二进制有:原码、反码、补码形式效率最高。 4. 对于一个正整数:二进制的原码、反码、补码是同一个,完全相同。 int i=1; 对应的二进制原码:00000000 00000000 00000000 00000001 对应的二进制反码:00000000 00000000 00000000 00000001 对应的二进制补码:00000000 00000000 00000000 00000001 对于一个负数:二进制的原码、反码、补码是什么关系: byte i=-1;【二进制数最左端的数字位符号位:0代表正,1代表负】 对应的二进制原码:10000001 对应的二进制反码(符号位不变,其他位取反):11111110 对应的二进制补码(反码+1):11111111 5.分析:byte b=(byte)150; 这个b是多少那: int类型的4个字节的150的二进制是什么那: 00000000 00000000 00000000 10010110 将以上的int类型强制类型转为1个字节的byte,最终在计算机中的二进制码是: 10010110 计算机永远存储的都是二进制补码形式。 10010110这个是二进制的补码形式,你可以采用逆推的方式推算出 这个二进制补码对应的原码是什么。 10010110 --->二进制的补码形式 10010101 --->二进制的反码形式 11101010 --->二进制的原码形式 */ public class IntTest05{ public static void main(String[] args){ //编译报错:因为150已经超出了byte取值范围,不能直接赋值,需要强转: //byte b=150; byte b=(byte)150; //这个结果输出多少: System.out.println(b); } }
P99 Java零基础---byte short char的混合运算
/* 结论:byte、char、short做混合运算的时候,各自先转换成int在做运算。 */ public class IntTest06{ public static void main(String[] args){ char c1='a'; byte b=1; //注意:这里的是”+”是负责求和的 System.out.println(c1+b); //98 //错误:不兼容的类型,从int转换到short可能会有损失: //short s=c1+b; //编译器不知道这个加法最后的结果是多少,只知道是int short s=(short)(c1+b); System.out.println(s); int a=1; //错误:不兼容的类型,从int转换到short可能会有损失, //short x=1;可以 short x=a;//不可以,编译器只知道a是int类型,不知道a中存储的是那个值。 System.out.println(x); } }
P100 Java零基础---多种数据类型混合运算
/* 多种数据类型做混合运算的时候。 最终的结果是”最大容量”对应的类型 char+short+byte 这个除外。 因为三者混合运算的时候,会各自先转换成int在做运算。 */ public class IntTest07{ public static void main(String[] args){ long a=10L; char c='a'; short s=100; int i=30; //求和: System.out.println(a+c+s+i); //237 //错误:不兼容的类型,从long转换到int可能会有损失 //计算结果是Long类型: //int x=a+c+s+i; int x=(int)(a+c+s+i); System.out.println(x); //一下程序执行的结果是: //java规定:int类型和int类型最终的结果还是int类型。 int temp=10/3; // /是除号(最终取整) System.out.println(temp);//3 //在java中计算结果不一定是精确的。 int temp2=1/2; // System.out.println(temp2);//0 } }
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术