首页 > 编程知识 正文

java类型转换疑惑(java在什么情况下会发生自动类型转换)

时间:2023-12-21 10:48:45 阅读:318606 作者:UNOH

本文目录一览:

java中类型转换异常问题

这有点像下面这道面试题原理

Father father = new Son();

Son son = (Son)father;

//以下出错,ClassCastException

Father father = new Father();

Son son = (Son) father;

在第一个例子中,father被指向一个子类对象,子类也可以指向子类对象。而第二个例子中,father被传给一个父类对象,子类引用不能指向父类对象。即很重要的概念是:父类引用指向子类对象。将父类转换为子类之前,应该用instanceof检查。

你直接new 父类对象 子类来强转就会CCE

望采纳 谢谢~

如何解决java中数据类型转换异常?

数据类型转换异常即ClassCastException,在Java应用程序中,有时候需要对数据类型进行转换。这个转换包括显示的转换与隐式的转换。不过无论怎么转换,都必须要符合一个前提的条件,即数据类型的兼容性。如果在数据转换的过程中,违反了这个原则,那么就会触发数据类型转换异常。如现在在应用程序中,开发人员需要将一个字符型的日期数据转换为数据库所能够接受的日期型数据,此时只需要在前台应用程序中进行控制,一般不会有问题。但是,如果前台应用程序缺乏相关的控制,如用户在输入日期的时候只输入月、日信息,而没有年份的信息。此时应用程序在进行数据类型转换的时候,就会出现异常。 数据类型转换异常在应用程序开发中使一个出现的比较多的异常,也是一个比较低级的异常。因为大部分情况下,都可以在应用程序窗口中对数据类型进行一些强制的控制。即在数据类型进行转换之前,就保证数据类型的兼容性。如此的话,就不容易造成数据类型的转换异常。如在只允许数值类型的字段中,可以设置不允许用户输入数值以外的字符。虽然说有了异常处理机制,可以保证应用程序不会被错误的运行。但是在实际开发中,还是要尽可能多的预见错误发生的原因,尽量避免异常的发生。

Java强制类型转换的疑惑

我们一般把java类型分为编译时类型与运行时类型。java程序运行后,对象的类型就不会发生改变。而强制类型转换只不过是用某种类型去引用内存中的实体,这种类型只是编译时类型,与运行后的实体并没有联系

java中类型转换问题

B 是因为String是引用类型,而int是值类型,所以不能进行比较

C i+s 使用一个整形加一个字符串,这是不允许的,A 正确是因为,字符串在+号的前面,则会调用String类内重写的+运算符,是相当于用s和i拼接了一个新的字符串

D +号后面缺少参数,如果这里用++那就对了

E 没有问题三目运算符,判断字符串是否为空,为空则i=0 不为空则i等于字符串的长度

java 强制类型转换的规则是什么?

1、执行算术运算时,低类型(短字节)可以转换为高类型(长字节);例如: int型转换成double型,char型转换成int型等等;

2、赋值表达式中,等号右边表达式的值的类型自动隐式地转换为左边变量的类型,并赋值给它;

3、函数调用时,将实参的值传递给形参,系统首先会自动隐式地把实参的值的类型转换为形参的类型,然后再赋值给形参;

4、函数有返回值时,系统首先会自动隐式地将返回表达式的值的类型转换为函数的返回类型,然后再赋值给调用函数返回。

扩展资料

C++中强制类型转换函数有4个:

1、const_cast(用于去除const属性)。

2、static_cast(用于基本类型的强制转换)。

3、dynamic_cast(用于多态类型之间的类型转换)。

4、reinterpreter_cast(用于不同类型之间的指针之间的转换,最常用的就是不同类型之间函数指针的转换)。

隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。

在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。

在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后面表达式的数值强制转换为函数返回值类型后,再将值返回。

参考资料

百度百科-强制类型转换

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。