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
    }
}
复制代码

 

posted @   生如逆旅,一苇以航  阅读(33)  评论(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应用必不可少的技术
点击右上角即可分享
微信分享提示