java数据类型之间转换应用方法
当一个对象不能直接类型转换。就需要造型。
例如:
一个int型能直接转换为double ,就不需要造型。
一个double型不能直接转换为int,就需要造型。
int a =1 ;
double d1 = a; //不需要造型
int a2 = (int)d1 //需要造型。
注意:
1)boolean不能造型为其他任何类型,其他任何类型也不能造型为boolean型。
2)子类能够直接转换为父类,不需要造型。父类不能够直接转换为子类,需要造型。
3)在强制造型时,不一定造型成功,此时编译对,但执行时出错。
数据类型转换
class StringConversions {
public static void main(String args[]) {
int num = 19648;System.out.println(num + " in binary: " + Integer.toBinaryString(num));
System.out.println(num + " in octal: " + Integer.toOctalString(num));
System.out.println(num + " in hexadecimal: " + Integer.toHexString(num));
}
}
所谓“造型”,并不是将一个类型的对象“变成”为某个类型,而是“看作”某个类型。比如有父类human,子类man与woman,如果new一个man的话,不需要显式造型,就可以被“看作”是一个human。(比如:human aHuman = new man();)当你拿到一个human对象时,实际上有可能是一个man,也可能是个woman,甚至干脆就是个human。如果你把刚才new的man还“看作”是个man的话(也就是说:man m1 = (man)aHuman;,这就是所谓“下溯造型”),是不会有错的;但如果你要是把他“看作”woman(就像这样:woman w1 = (woman)aHuman;),就会出现异常。
所以“上溯造型”一定是安全的,而“下溯造型”是不安全的
实例二
class Animal {
public String toString() {
return "This is an animal ";
}
}
class Dog extends Animal {
public void sound() {
System.out.println("Woof Woof");
}
}
class Cat extends Animal {
public Cat(String aName) {
name = aName;
}
public String toString() {
return super.toString() + "nIt's " + name + " the " + breed;
}
public void sound() {
System.out.println("Miiaooww");
}
private String name;
private String breed;
}
public class MainClass {
public static void main(String[] a) {
Cat aPet = new Cat("Fang");
Animal theAnimal = (Animal) aPet;
}
}
补充:Jsp教程,Java技巧及代码