开发手册 欢迎您!
软件开发者资料库

Java 数据类型转换(Casting)

Java中,经常可以遇到类型转换的场景,从变量的定义到复制、数值变量的计算到方法的参数传递、基类与派生类间的造型等,随处可见类型转换的身影。Java中的类型转换在Java编码中具有重要的作用。本文主要介绍一下Java 数据类型转换(Casting)

1、Java 类型转换

类型转换是将一种数据类型的值分配给另一种类型时的类型转换。

在Java中,有两种类型的转换:

  • 自动转换(自动)-将较小的类型转换为较大的类型
    byte -> short -> char -> int -> long -> float -> double

  • 强制转换(手动)-将较大的类型转换为较小的类型
    double -> float -> long -> int -> char -> short -> byte

2、自动数据类型转换

将较小数据的类型传给较大数据的类型时,将自动完成转换:

例如:

public class main {  public static void main(String[] args) {    int myInt = 9;    double myDouble = myInt; // 自动转换: int 转换成 double    System.out.println(myInt);      // 输出 9    System.out.println(myDouble);   // 输出 9.0  }}

3、强制数据类型转换

强制数据类型转换是手动将较大范围数据转换较小数据类型,格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。有的数据经过转型运算后,精度会丢失,而有的会更加精确。

例如:

public class main {  public static void main(String[] args) {    double myDouble = 9.78;    int myInt = (int) myDouble; // 手动转换: double 转换成 int    System.out.println(myDouble);   // 输出 9.78    System.out.println(myInt);      // 输出 9    int x;    double y;    x = (int)34.56 + (int)11.2;  // 丢失精度    y = (double)x + (double)10 + 1;  // 提高精度    System.out.println("x=" + x);    System.out.println("y=" + y);  }}

4、各种数据类型的互相转换

数据类型转换为其他类型转换为字符串转换为字符串
 byte Byte.parseByte(str) String.valueOf([byte] bt) Byte.toString([byte] bt)
 int Integer.parseInt(str) String.valueOf([int] i) Int.toString([int] i)
 long Long.parseLong(str) String.valueOf([long] l) Long.toString([long] l)
 float Float.parseFloat(str) String.valueOf([float] f) Float.toString([float] f)
 double double.parseDouble(str) String.valueOf([double] d) Double.toString([double] b)
 char str.charAt() String.valueOf([char] c) Character.toString([char] c)
 boolean Boolean.getBoolean(str) String.valueOf([boolean] b) Boolean.toString([boolean] b)

StringBuilder转化为String

    String str = "abcdefghijklmnopqrs";    StringBuilder stb = new StringBuilder(str);

整型数组转化为字符串

    StringBuilder s = new StringBuilder();    for(i=1;i<=n;i++) {        s.append(String.valueOf(a[i]));    }    String str = ""+s;           

字符串转化为整形数组

    String str="123456";    int[] a = new int[str.length()];    for(int i=0;i

字符串转化为字符数组

    String str="123456";    char[] c = str.toCharArray() ;    System.out.println(c);

字符数组转化为字符串

char[] c = {'a','s','d','4','5',};    String str = new String(c);    System.out.println(str);

字符数组转化为整型数组

public class main {   public static void main(String[] args) {         String str="12345p";        int[] a = new int[str.length()];        for(int i=0;i

整型数组转化为字符数组

int[] a = {1,2,3,4,5};    char[] c = new char[a.length];    for (int i = 0; i < 5; i++) {        c[i] = (char) (a[i]+'0');        System.out.println(c[i]);    }

整型数转化为字符串

String str = Integer.toString(i);String s = String.valueOf(i);String s = "" + i;

字符串转化为整型数

int i = Integer.valueOf(str).intValue();