小白日更第四十一天->java中的隐式类型转换和显示类型转换

本文探讨了Java中数值类型转换的问题,特别是浮点数转长整型可能导致的精度丢失。书中指出,强制类型转换虽然可以消除编译错误,但会损失精度。举例说明了short类型加法操作在不同情况下的报错与不报错条件,强调了类型转换的注意事项。
摘要由CSDN通过智能技术生成

先看一段代码

 public static void main(String[] args) {
       float a=1;
       long b= a;
    }

然后报错了。。。。。
在这里插入图片描述
然后我去看了看<Java核心技术++卷1>这本书
书中有一张类型之间相互转换的图在这里插入图片描述
我们经常需要将一种数值类型转换为另一种数值类型。 图中给出了数值类型之间的合法转换。在图中有 6 个实心箭头,表示无信息丢失的转换; 有 3 个虚箭头, 表示可能有精度损失的转换。 例如,123 456 789 是一个大整数, 它所包含的位数比 float 类型所能够表达的位多。当将这个整型数值转换为 float 类型时, 将会得到同样大小的结果,但却失去了一定的精度。
当我们强制类型转换之后程序就不报错了。相当于告诉java我们不怕精度的丢失,那既然你都不怕,人家还怕什么。给你报错是提醒你,上面这种float转long会有精度丢失,可能你自己并不知道,所以人家提醒你。

特殊例子

public static void main(String[] args) {
        short s = 1;
        s = s + 1;
    }

然后报错

java: 不兼容的类型: 从int转换到short可能会有损失

public static void main(String[] args) {
        short s = 1;
        s += 1;
    }

现在这段代码就不报错了,因为s+=1中具有强制转换,相当于s=(short)(s+1)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. bool运算符重载的实现: bool运算符重载可用于自定义类型的布尔值评估。以下是一个示例实现: ``` class MyClass{ public: bool operator()() const { return true; } }; ``` 在这个示例,bool运算符被重载为一个称为MyClass的类的公共成员函数。当在类的实例上调用bool运算符时,该成员函数将返回true。 2. ->运算符重载的实现: ->运算符重载用于实现指针类的成员访问。以下是一个示例实现: ``` class MyClass{ public: int value; MyClass* operator->() { return this; } }; ``` 在这个示例,->运算符被重载为一个称为MyClass的类的公共成员函数。该成员函数返回一个指向该实例的指针,使得该实例的成员可以被访问,如下所示: ``` MyClass myClass; myClass.value = 42; MyClass* ptr = &myClass; int value = ptr->value; ``` 3. *运算符重载的实现: *运算符重载用于实现指针类的解引用。以下是一个示例实现: ``` class MyClass{ public: int value; MyClass operator*() const { return *this; } }; ``` 在这个示例,*运算符被重载为一个称为MyClass的类的公共成员函数。该成员函数返回一个该实例的拷贝,使得该实例的成员可以被访问,如下所示: ``` MyClass myClass; myClass.value = 42; MyClass copy = *myClass; int value = copy.value; ``` 4. 类型转换运算符重载的实现: 类型转换运算符重载用于在自定义类型和其他类型之间进行转换。以下是一个示例实现: ``` class MyClass{ public: operator int() const { return 42; } }; ``` 在这个示例类型转换运算符被重载为一个称为MyClass的类的公共成员函数。该成员函数返回一个int类型的值,使得该类的实例可以隐式转换int类型,如下所示: ``` MyClass myClass; int value = myClass; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值