>>就一网友提问:为什么能够强制转换问题,欢迎讨论。在论坛上看到有一位朋友提问Int 和 char 的类型转换问题;;int数据类型 如何转成 char数据类型
很多网友给出的答案int i = 5;
char c = (char)i;//或者
Integer之类的解决方案
小弟不才,请问为什么他们能够相互转型呢? 而String 为什么又不能强转成 int 或 char 呢?

解决方案 »

  1.   

    Integer.parseInt(String s)不就是把String转化成int吗
    至于String转为char,String一般长度是超过1的,你强转为char是保留哪个字符呢?
    用String.charAt(int i)可以把字符串中的某个字符放进一个char中
      

  2.   

    当然,还有一点,Integer.parseInt(String s)你也得保证这个String是能转化为int的才行
    比如System.out.println(Integer.parseInt("123"));你会得到123
    但你如果System.out.println(Integer.parseInt("str"));你就会得到java.lang.NumberFormatException
      

  3.   

    首先java内部获取char的unicode编码值
    int i=(int)char的时候
    i取得值是char这个字符所对应的unicode码关于string不能转化成int
    我个人认为是String是一个引用类型
    引用类型怎么转成基本类型?即使是integer类型也不能转换
    他们之间也不存在继承!
    不同引用类型怎么能互相转换?
      

  4.   

    请问为什么他们能够相互转型呢
    sun在包装类中进行了封装,所以能转换,而String 为什么又不能强转成 int 或 char 呢?
    我只知道通过Integer.parseInt(String str)能把String转化成int,直接转为char还没试过
      

  5.   

    Strign要转应该转成什么叻?是一个char数组,还是类似Integer这样的转换。
      

  6.   

    byte  8位,占用1个字节 
    short 16位,占用2个字节 
    int   32位,占用4个字节   
    long  64位占用8个字节
    char   16位unicode字符
    float  32位,占用4个字节
    double 64位,占用8个字节 
    这些事基本数据类型,可以进行自动类型转换
    byte→short(char)→int→long→float→double
    和强制类型转换
    double→float→long→int→short(char)→byte
    通过toString可以将字符、整数、浮点数、双精度数、逻辑数等类转换为字符串
      

  7.   

    char只是个数值而已,只是输出的时候按相应格式提取了
      

  8.   

    String是个对象 引用怎么能转换成char呢?
      

  9.   

    我错了,那我们姑且不谈String String是比较特殊的类。。
    我们就说 int 和 boolean 类型。
    为什么为什么?
      

  10.   

    ... int和boolean,那你说int类型的20转化为boolean是true还是false呢?在c/c++中好像0表示false,其它表示true,但也不能转吧,何况是java,你转之前要考虑下转过去要以什么规则为标准啊,转过去变成什么,有些就是完全不能转的2种类型
      

  11.   

    boolean不行 因为java规定boolean不是整数类型 这点和C不一样
      

  12.   

       注意了    boolean类型不能和其他类型之间进行转换
      

  13.   

    char,int,short和long本质上都是整数,只是char在显示的时候,是以字符的形式显示。
      

  14.   

    虽然在虚拟机中boolean类型的true就是0,但在程序中boolean类型的值不能用数字代替,Java虚拟机的规范中就这样规定的
      

  15.   

    规定.可以相互转换.简单的说,我写一个
    class Dog{
        private name;    
        //getter and setter
    }class Cat{
        private name;
        //getter and setter
    }class myUtil{
        public Dog cat2Dog(Cat cat){
            Dog dog = new Dog();
            dog.setName(cat.getName);
            return dog;
        }
    }这里就规定,传入一个猫,然后返回一个狗.楼主给的例子:
    int i = 65;//这里改成65,好理解
    char c = (char)i;//打印c得到A.为什么,因为A的ASCII码是65.这就是它规定的转换规则.
      

  16.   

    我在老师那得到了比较满意的答复。。是这样说的:“如果 两个不同类型的数据,能够强制转换,他们一定继续于相同的父类”。果真,我查看了api文档, int , float , double ,byte 他们都 extends Number 同一父类.