❶ 在java中什么是强制类型转换!
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 ;
如果对编程感兴趣可以来我这个看看,希望对您有所帮助!~
❷ java对象类型强制转换问题
HashMap 的key,value是两个泛型,因此你new出这个对象的话,如果你确定了value值就是一个User对象,你可以把它写死,就像这样
Map<String,User> users = new HashMap<String,User>();
这样编译器就知道了你value是一个User类型,下次它就不用强制类型转换了。
你说本身就是个User对象,那只是你觉得,编译器是不知道的,所以它就会报错。
如果你没指定泛型的具体类型,你可以添加任意Object类型,你可以试一下!!
❸ java中如何进行强制转换
可以直接通过参数前面加上要转行的类型的形式实现。
举例:
int i =97;
char c = (char)i;
System.out.print(c);
输出结果:a。
备注:并不是所有的类型都可以强制转换的,所有在开发过程中要遵循对象转换规则(相关类型才可以转换)。
❹ java 对象强制转换的
instanceof是测类型是否一样的
p是person类型的,student也继承自person
❺ Java强制类型转换
原因有如下:
Object数组中可以存储int ,string, class等类型,对于计算机来说它不清楚用户最终存储的是什么类型的数据,例如可以存储:
mm[0] = new String("123");
mm[1] = new MyClass();
如果存储以上数据类型,那么你强制转换就是失败的,Object数组存储未知类型,所以无法强制转换某一固定类型的数据,强制转换就会异常。
针对Object数组中某一个具体数据进行强制转换时,可以根据存储的实际类型进行转换处理,能够正常进行,所以是正确的。
以上的说明希望你能明白。
❻ JAVA中如何对父类对象强制转换子类对象的引用
父类对象无法转化子类对象。
子类对象有父类对象不具备的属性、初始化需要用到的参数、内存空间。所以父类对象无法转换为子类对象。
补充:
Java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用。比如说男孩和女孩都人,但要是人都是男孩就不对的。所以说子类可以转父类,但父类不能转子类。
❼ java对象间的强制转换会发生哪些错误或异常
Class类里面有一个方法cast
public T cast(Object obj)将一个对象强制转换成此 Class 对象所表示的类或接口。
所以你这里这么写就是了。。
Class clazz = null;
try {
clazz = Class.forName(className);//这个类名必须是全名 有包的话必须加上
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
clazz.cast(obj);//但是这个的返回值是Object 如果你想使用它里面的属性或者方法 只能用反射了
❽ JAVA对象强制转换
理论上来讲是不能这么干的~
除非
父类引用指向子类对象~
如果非要转的话那么肯定会抛
类型转换错误
的异常
❾ Java中的强制类型转换是如何转换的
java中数据类型的强制转换是通过强制转换语句完成的,强制转换语句的格式为“目标数据类型 变量 = (目标数据类型) 数据;”。下面给出例子:
1、定义两个字节数据类型a、b、c,分别赋予1和2和a+b的值,进行加法运算的式子a+b=3,得出的结果“3”将会被编译环境判定为整形数据,把这个整形数据赋值给c,系统将会报错,这样就需要用到格式为“目标数据类型 变量 = (目标数据类型) 数据;”的强制转换语句。
2、根据强制转换语句的格式,易得“byte c = (byte)(a+b);”;
3、这样就把整形数据的“3”赋值给字节数据类型的c了,其中完成数据的强制类型转换。
(9)java对象强制转换扩展阅读:
基本类型 转换原则:
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中的强制类型转换
在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!!");
}
}