发布网友 发布时间:2022-04-23 11:28
共14个回答
热心网友 时间:2022-04-22 11:49
java中数据类型的强制转换是通过强制转换语句完成的,强制转换语句的格式为“目标数据类型 变量 = (目标数据类型) 数据;”。下面给出例子:
1、定义两个字节数据类型a、b、c,分别赋予1和2和a+b的值,进行加法运算的式子a+b=3,得出的结果“3”将会被编译环境判定为整形数据,把这个整形数据赋值给c,系统将会报错,这样就需要用到格式为“目标数据类型 变量 = (目标数据类型) 数据;”的强制转换语句。
2、根据强制转换语句的格式,易得“byte c = (byte)(a+b);”;
3、这样就把整形数据的“3”赋值给字节数据类型的c了,其中完成数据的强制类型转换。
扩展资料:
基本类型 转换原则:
1、类型转换主要在在 赋值、方法调用、算术运算 三种情况下发生。
a、赋值和方法调用 转换规则:从低位类型到高位类型自动转换;从高位类型到低位类型需要强制类型转换:
(1)布尔型和其它基本数据类型之间不能相互转换;
(2)byte型可以转换为short、int、、long、float和double;
(3)short可转换为int、long、float和double;
(4)char可转换为int、long、float和double;
(5)int可转换为long、float和double;
(6)long可转换为float和double;
(7)float可转换为double;
b、算术运算 中的类型转换:
1、基本就是先转换为高位数据类型,再参加运算,结果也是最高位的数据类型;
2、byte short char运算会转换为Int;
(1)如操作数之一为double,则另一个操作数先被转化为double,再参与算术运算。
(2)如两操作数均不为double,当操作数之一为float,则另一操作数先被转换为float,再参与运算。
(3)如两操作数均不为double或float,当操作数之一为long,、则另一操作数先被转换为long,再参与算术运算。
(4)如两操作数均不为double、float或long,则两操作数先被转换为int,再参与运算。
特殊:
(1)如采用+=、*=等缩略形式的运算符,系统会自动强制将运算结果转换为目标变量的类型。
(2) 当运算符为自动递增运算符(++)或自动递减运算符(--)时,如果操作数为byte,short或char类型不发生改变;
参考资料:百度百科 - java关键字
热心网友 时间:2022-04-22 13:07
强制类型转换有两种,转换方法如下(都需要使用C语言):
1、显式强制类型转换:
TYPE b = (TYPE) a;其中,TYPE为类型描述符,如int,float等。经强制类型转换运算符运算后,返回一个具有TYPE类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:
int n=0xab65;
char a=(char)n;
2、隐式强制类型转换:
隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。如:
int n;
double d=3.88;
n=d;//执行本句后,n的值为3,而d的值仍是3.88。
扩展资料:
类型转换遵循以下规则:
1、若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
2、转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。
a、若两种类型的字节数不同,转换成字节数高的类型。
b、若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型。
3、所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
4、char型和short型(在visual c++等环境下)参与运算时,必须先转换成int型。
5、在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分直接舍去。
C++语言编译系统提供的内部数据类型的隐式自动转换规则如下:
1、执行算术运算时,低类型(短字节)可以转换为高类型(长字节);例如: int型转换成double型,char型转换成int型等等;
2、赋值表达式中,等号右边表达式的值的类型自动隐式地转换为左边变量的类型,并赋值给它;
3、函数调用时,将实参的值传递给形参,系统首先会自动隐式地把实参的值的类型转换为形参的类型,然后再赋值给形参;
4、函数有返回值时,系统首先会自动隐式地将返回表达式的值的类型转换为函数的返回类型,然后再赋值给调用函数返回;
参考资料:百度百科- 强制类型转换
热心网友 时间:2022-04-22 14:42
强制类型转换分两种形式:
1. 显式强制类型转换 :
C中显式强制类型转换很简单,格式如下: TYPE b = (TYPE) a, 其中,TYPE为类型描述符,如int,float等。
经强制类型转换运算符运算后,返回一个具有TYPE类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变。
2.隐式强制类型转换:
隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。
在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。
在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后面表达式的数值强制转换为函数返回值类型后,再将值返回。
扩展资料:
内部数据类型的隐式自动转换规则如下:
1、执行算术运算时,低类型(短字节)可以转换为高类型(长字节);例如: int型转换成double型,char型转换成int型等等;
2、赋值表达式中,等号右边表达式的值的类型自动隐式地转换为左边变量的类型,并赋值给它;
3、函数调用时,将实参的值传递给形参,系统首先会自动隐式地把实参的值的类型转换为形参的类型,然后再赋值给形参;
4、函数有返回值时,系统首先会自动隐式地将返回表达式的值的类型转换为函数的返回类型,然后再赋值给调用函数返回;
参考资料:百度百科-强制类型转换
热心网友 时间:2022-04-22 16:33
在windows下编译java文件、执行:
1、先创建一个txt,更改为test.java。
2、编写代码,为输出为holloword。
3、找到cmd,并进行打开cmd。
4、编译java文件,输入命令为javac test.java。
5、如果没有报错,查看当前目录下是否有class文件产生。
6、执行class文件,在命令输入java test,输出为holloword。
热心网友 时间:2022-04-22 18:41
Java中的强制类型转换的转换方式如下:
当用一个类型的构造器构造出一个对象时,这个对象的类型就已经确定的,也就说它的本质是不会再发生变化了。
在Java中可以通过继承、向上转型的关系使用父类类型来引用它,这个时候是使用功能较弱的类型引用功能较强的对象。但是将功能较弱的类型强制转功能较强的对象时,就不一定可以行了。
扩展资料:
在Java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。常用的转换方法有Object.toString(),(String)要转换的对象,String.valueOf(Object)等。
强制类型转换具有两种形式:显式强制转换和隐式强制类型转换。
强制类型转换是把父类型转换为子类型。因为子类型比父类型的内涵要丰富,无非就是属性更多功能更强,所以要把父类型转换为子类型,需要强制。
比如:
long a = 10 ;
int b = (int) a。
通过 (int)可以强制转型 , 但是这样会丢失精度 , 比如a如果超过了b的范围 , 那么强转成int型, 只会等于int的最大值。
参考资料来源:百度百科—强制类型转换
热心网友 时间:2022-04-22 21:06
在Java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换。
在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需要强制转换。因为子类拥有比父类更多的属性、更强的功能,所以父类转换为子类需要强制。那么,是不是只要是父类转换为子类就会成功呢?其实不然,他们之间的强制类型转换是有条件的。
当我们用一个类型的构造器构造出一个对象时,这个对象的类型就已经确定的,也就说它的本质是不会再发生变化了。在Java中我们可以通过继承、向上转型的关系使用父类类型来引用它,这个时候我们是使用功能较弱的类型引用功能较强的对象,这是可行的。但是将功能较弱的类型强制转功能较强的对象时,就不一定可以行了。
举个例子来说明。比如系统中存在Father、Son两个对象。首先我们先构造一个Son对象,然后用一个Father类型变量引用它:
Father father = new Son();
在这里Son 对象实例被向上转型为father了,但是请注意这个Son对象实例在内存中的本质还是Son类型的,只不过它的能力临时被消弱了而已,如果我们想变强怎么办?将其对象类型还原!
Son son = (Son)father;
这条语句是可行的,其实father引用仍然是Father类型的,只不过是将它的能力加强了,将其加强后转交给son引用了,Son对象实例在son的变量的引用下,恢复真身,可以使用全部功能了。
前面提到父类强制转换成子类并不是总是成功,那么在什么情况下它会失效呢?当引用类型的真实身份是父类本身的类型时,强制类型转换就会产生错误。例如:
Father father = new Father();
Son son = (Son) father;
这个系统会抛出ClassCastException异常信息。
所以编译器在编译时只会检查类型之间是否存在继承关系,有则通过;而在运行时就会检查它的真实类型,是则通过,否则抛出ClassCastException异常。
所以在继承中,子类可以自动转型为父类,但是父类强制转换为子类时只有当引用类型真正的身份为子类时才会强制转换成功,否则失败。
public class TestCastClassException
{
public static void main(String[] args)
{
Father father = new Son();
//这两句话是不对的,因为一个father类型的引用(指针)是看不见、看不到son中新定义的数据成员或者成员函数的
//虽然这个对象的本质是Son类型的,它也确实有这样的数据成员和成员函数,但是指针的作用范围不够,它看不到。
//代码后面附上模型分析
//father.son = 2;
//father.show_son();
father.show_father();
father.show();
Father father1 = (Father)father;//一个对象在内存中被new出来后,只能选择访问它的方式,不能修改它的布局(包含的成员的个数等)
father1.show();
} //main
}
class Father
{
public int father = 2;
Father(){}
void show()
{
System.out.println("This is father");
}
void show_father()
{
System.out.println("father!!");
}
}
class Son extends Father
{
public int son = 1;
Son(){}
void show()
{
System.out.println("This is son");
}
void show_son()
{
System.out.println("son!!");
}
}
热心网友 时间:2022-04-22 23:47
Java的强制类型转换,可以分成编译和运行两个阶段来分析。
1、编译期间:
被转型变量的编译时类型与目标类型相同;
被转型变量的编译时类型是目标类型的父类;
被转型变量的编译时类型是目标类型的子类,这种情况是自动向上转换。
2、运行期间:
被转型变量所引用的对象的实际类型必须是目标类型的实例,或者是目标类型的子类,实现类的实力,否则运行时将引发ClassCastException异常。
扩展资料:
强制转换是还需要注意一次额问题:
无继承关系的引用类型间的转换是非法的,编译时会出错;
并不是任意的父类类型数据都可以被造型为子类类型,在造型前可以使用 instanceof 操 作符测试一个对象的类型,以避免运行是出错。
参考资料:
百度百科——Java
百度百科——强制类型转换
热心网友 时间:2022-04-23 02:45
强制类型转换分两种形式:
1. 显式强制类型转换 :
C中显式强制类型转换很简单,格式如下: TYPE b = (TYPE) a, 其中,TYPE为类型描述符,如int,float等。
经强制类型转换运算符运算后,返回一个具有TYPE类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变。
2.隐式强制类型转换:
隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。
在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。
在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后面表达式的数值强制转换为函数返回值类型后,再将值返回。
扩展资料:
强制类型转换规则、格式、注意事项及异常处理:
1.转换规则:
从存储范围大的类型到存储范围小的类型。
具体规则为:
double→float→long→int→short(char)→byte
2.语法格式为:
(转换到的类型)需要转换的值
示例代码:
double d = 3.10;
int n = (int)d;
3.注意问题:
强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。
4.异常处理:
方式一:捕获处理
捕获处理的格式:
try{可能发生异常的代码;}catch(捕获的异常类型 变量名){处理异常的代码.... }
捕获处理要注意的细节:
(1) 如果try块中代码出了异常经过了处理之后,那么try-catch块外面的代码可以正常执行。
(2)如果try块中出了异常的代码,那么在try块中出现异常代码后面的代码是不会执行了。
(3) 一个try块后面是可以跟有多个catch块的,也就是一个try块可以捕获多种异常的类型。
(4) 一个try块可以捕获多种异常的类型,但是捕获的异常类型必须从小到大进行捕获,否则编译报错。
方式二:抛出处理
抛出处理要注意的细节:
(1)如果一个方法的内部抛出了一个异常 对象,那么必须要在方法上声明抛出。
(2)如果调用了一个声明抛出异常 的方法,那么调用者必须要处理异常。
(3)如果一个方法内部抛出了一个异常对象,那么throw语句后面的代码都不会再执行了(一个方法遇到了throw关键字,该方法也会马上停止执行的)。
(4) 在一种情况下,只能抛出一种类型异常对象。
参考资料:百度百科-强制类型转换
热心网友 时间:2022-04-23 06:00
1 ) 整数 int 转换成字串 String , 有三种方法 :
String s = String.valueOf(i);
String s = Integer.toString(i);
String s = "" + i;
2 ) String 转 int
int i = Integer.parseInt([String]);
i = Integer.parseInt([String],[int radix]);
int i = Integer.valueOf(my_str).intValue();
3 ) 布尔类型 转 String
1. 第一种方法
boolean bool = true;
String s = new Boolean(bool).toString();//将bool利用对象封装器转化为对象
2. 第二种方法
boolean bool = true;
String s = String.valueOf( bool );
4 ) String 转 Date
1 . 导入 java.util.Date date=null;
2 . date=java.sql.Date.valueOf(String s);
5 ) 数字类型间的转换
转型有两种: 向上转型和向下转型(强制转型)
两种分别如下:
第一种是向上转型
对于基础数据类型 , 可以自动转型 ,比如:
int a = 10;
long b = a;
这里就是把int型转成了long型 , 因为 long范围比int大 , 这样的转型不会有任何影响 , 所以可以自动转型
第二种是向下转型 , 也就是强制
这种需要强转 , 比如
long a = 10 ;
int b = (int) a;
通过 (int)可以强制转型 , 但是这样会丢失精度 , 比如a如果超过了b的范围 , 那么强转成int型, 只会等于int的最大值
又如 : int a = ( int ) 8.8 ;
如果对编程感兴趣可以来我这个看看,希望对您有所帮助!~
热心网友 时间:2022-04-23 09:31
如果这2种类型是兼容的,那么Java 将自动地进行转换。例如,把int 类型的值赋给long 类型的变量,总是可行的。然而,不是所有的类型都是兼容的,因此,不是所有的类型转换都是可以隐式实现的。例如,没有将double 型转换为byte 型的定义。幸好,获得不兼容的类型之间的转换仍然是可能的。要达到这个目的,你必须使用一个强制类型转换,它能完成两个不兼容的类型之间的显式变换。让我们看看自动类型转换和强制类型转换。参考资料:http://www.study888.com
热心网友 时间:2022-04-23 13:19
如何: int i=1; float temp=3,x; x=temp*i; 这时候 里面的x的值肯定是double ,如果你想让x的值是float型,所以 x=(flooat)(temp*i);即可,希望对你有帮助!!热心网友 时间:2022-04-23 17:40
TypeA a=new TypeA();热心网友 时间:2022-04-23 22:18
用括号包住类型热心网友 时间:2022-04-24 03:13
String a = "22";