java中数据类型转换、ASCII编码

数据类型转换:

JAVA语言中要求参与计算的数据类型要保持一致,如果不一致则会发生数据类型转换,数据类型转换可分为:自动类型转换(隐式转换)和强制类型转换(显式转换)。

自动类型转换:代码不需要特殊处理,自动转换;要求数据范围从小到大(数据范围小的可以向数据范围大的转换)。

/*注意:如果注释中含中文,那么在编译时会获取操作系统的编码格式gbk,此时会报错: 编码 GBK 的不可映射字符;
        其中一种解决方法是在编译时指明编码格式,加-encoding UTF-8字符,如:javac -encoding UTF-8 DataType.java
*/
public class DataType{
    public static void main(String[] args){
        // 1.整数默认是int类型:
        System.out.println(88);//88
        // 2.浮点数默认是double类型:
        System.out.println(5.21);//5.21

        // 3.int类型转long类型:long类型的变量在赋值时后面要加L,但是不加也会自动加上,不会报错,如:
        long num1 = 5L;
        System.out.println(num1);//5
        long num2 = 5;
        System.out.println(num2);//5

        // 4.float类型可以自动转double类型,但是double类型不能被自动转换为float类型:
        double num3 = 5.2F;
        System.out.println(num3);//5.199999809265137

        // 5.当取值范围大的数据类型向取值范围小的数据类型自动转换时,会报错:
        float num4 = 5.2;
        System.out.println(num4);//报错:不兼容的类型: 从double转换到float可能会有损失
    }
}

强制类型转换:自动转换只能对取值范围小的向取值范围大的数据类型转换,若想要取值范围大的向取值范围小的数据类型转换,此时就需要强制转换对代码进行格式处理,其格式:取值小范围数据类型关键字 变量名 = (取值范围小的数据类型关键字)取值范围大的数据

数据溢出:当取值范围大的数据的值本身不是很大或很小时,可以正常转换且值不变,但是当值本身特别大或特别小时,此时会发生数据溢出,即数据增大或减小到某类型的取值范围内。

精度损失:当浮点型向整型转换时,会自动丢弃小数部分,并非四舍五入。

public class DataType2 {
    public static void main(String[] args){
        // 1.整数型默认数据类型为int:
        int num1 = 8;
        System.out.println(num1);//8

        // 2.long数据类型的取值范围比int数据类型的取值范围大,取值范围大的向取值范围小的自动转换时会报错,此时可以强制转换:
        // int num2 = 6L;
        // System.out.println(num2);//错误: 不兼容的类型: 从long转换到int可能会有损失

        // 3.强制类型转换:格式:小范围数据类型关键字  变量名  =  (小范围数据类型关键字) 取值范围大的数据
        int num3 = (int) 6L;
        System.out.println(num3);//6

        // 4.数据溢出:当转换后的值不在某个数据取值范围内时,会发生数据溢出(可理解为装不下)。
        int num4 = (int) 8888888888L;
        System.out.println(num4);//298954296

        // 5.精度损失:小数转整数时,小数部分会舍弃,并非四舍五入,只留下整数部分:
        int num5 = (int) 5.20;
        System.out.println(num5);//5

        // 6.byte、char、short三类型可以发生数学运算,在运算前首先会提升为int类型后在参与计算,如:
        char str = 'f';
        System.out.println(str + 1);//103,数据在计算机中是二进制储存的,二进制本身就是数字形式,

        // 7.BOOlean类型不能发生数据类型转换:
        boolean flag = false;
        int num6 = (int) flag;
        System.out.println(flag);//错误: 不兼容的类型: boolean无法转换为int
    }
}

ASCII编码表:

在计算机的内部都是二进制的0、1数据,为让计算机可以直接识别人类文字,于是产生了编码表的概念。

ASCII全称American Standard Code for Information Interchange ,意为:美国标准信息交换码,它只包含了美国语言中所对应的将所有的英文字母,数字,符号都和十进制数字进行了一一对应的关系,它属于Unicode(万国表)中的一部分。
在这里插入图片描述

public class Ascii {
    public static void main(String[] args){
        // char类型数据可以发生数学运算,运算时先提升为int类型,则可以推出a的ASCII编码:
        char a = 'a';
        System.out.println(a + 0);//97,a在计算机底层编码为:97
    }
}

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦海123

快乐每一天!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值