强制转换的注意事项

该博客探讨了Java中不同类型之间的转换,特别是整数类型的强制转换以及可能遇到的内存溢出和精度问题。示例代码展示了将int转换为byte时导致的溢出,以及将浮点数转换为整数时的精度损失。此外,还提到了字符到整数的转换以及转换后的类型再转回原始类型。
public class Demo03 {
    public static void main(String[] args) {
        int i=128;
        byte b=(byte) i;//强制转换
        //强制转换  (类型)变量名  高--低
        //自动转换  低--高
        System.out.println(i);
        System.out.println(b);//-128,发生内存溢出,因为byte最大127
        /*
        注意点:
        1.不能对布尔类型进行转换
        2.不能把对象转换成不相干的类型
        3.把高容量转换成低容量的时候,强制转换。
        4.转换的时候可能会存在内存溢出,或者精度问题。
         */
        System.out.println("======================");
        System.out.println((int)231.2313);//231--出现精度问题
        System.out.println((int)-768.78823f);//-768--出现精度问题
        System.out.println("======================");
        char c='A';
        int d=c+1;
        System.out.println(d);
        System.out.println((char) d);
    }
}

在C语言中,强制类型转换(Type Conversion)指的是从一种数据类型转换为另一种数据类型的过程。这通常发生在不同类型的变量之间进行运算或赋值。需要注意以下几点: 1. **隐式转换**(Implicit Conversions): 当兼容的数据类型进行操作,编译器会自动完成转换。例如,整数和浮点数相加,整数会被隐式提升为浮点数。 2. **显式转换**(Explicit Conversions): 使用`((type)expression)`的方式手动进行转换。这是必要的,当需要从一个类型转换到不兼容类型,比如将字符转换为整数。 - **类型提升**(Promotion): 小型类型(如 char, short)向大型类型(如 int, long)转换,但不会丢失精度。 - **类型截断**(Truncation): 大型类型向下转换为小型类型可能会导致信息丢失,例如 `int` 转换为 `char`。 3. **常量转换**(Converting Constants): 对于常量表达式,C语言总是试图找到一个合适的类型使其结果有意义。例如,字符串字面量 "10" 和整数常量 5 相加,它们会先各自转换成整数再进行计算。 4. **指针转换**(Pointer Conversions): 指针类型的转换必须确保地址的有效性和指向的内存类型匹配。例如,从`void *`转换到特定类型指针要小心。 5. **避免潜在风险**: 强制类型转换可能导致意外的行为,特别是对于数值溢出、精度损失或空指针解引用等。因此,在进行转换前,最好理解其影响并确保安全。 6. **标准库中的类型转换函数**(如`atoi()`、`atof()`等)可能提供了更安全的方法来进行字符串到整数或浮点数的转换
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值