可能我没说明白。
谁不知道是强制转换,delphi中是用有返回值的方法 int()我们如果在类里定义了一个这样转换功能的 静态char()方法,肯定不能这么用,我想问,怎么写代码才可以在类外部这么使用

解决方案 »

  1.   

    我说不清楚 举个例子看你明白不啊 
    就是本来一个数据左边是float型的 而右边是double型的 现在要左右一致 右边就(float)你是不是这个意思 ???
      

  2.   

    楼主的问题真的是让人一头雾水。public class Convert {
      public static char getLowerCaseChar(char c) {
        return (char)(c+26);
      }
    }另一个类的方法中
    char resultChar = Convert.getLowerCaseChar('A');还是不知道楼主什么意思。但愿有点帮助吧。
      

  3.   

    看来我还没说清楚:举例:class A{
    static int yy( int a ){
    return a;
    }在B中调用class B{
    int b= yy(6);
    }我意思是,我们怎么在A类中写代码,
    在B中象java的(int)或(char)这样用
    int b=(yy)(6);问的有些变态,只是想弄明白
      

  4.   

    在比如说为什么不可以这么用:
    char c =char(26+'A');
      

  5.   

    给我的感觉你是想用类似C/C++里面的MACRO定义?
    Java好像没有这种语法吧。>>为什么不可以这么用:
    char c =char(26+'A');
    因为char不是方法。
      

  6.   

    英文名叫"type cast",语法为:(new_type)expression
      

  7.   

    以上不少朋友提到是"强制类型转换",这是没错的,但都没有解释清楚,我认为:
    在Java中,char c =(char)(26+'A');26这个是int类型,做"+"运算之后返回int类型,而要赋给char类型的c变量,当然需要(char)做强制转换了.
      

  8.   

    强制类型转换 转换成char类型
      

  9.   

    “我意思是,我们怎么在A类中写代码,在B中象java的(int)或(char)这样用
    int b=(yy)(6);”这是不可能的,Java的方法不是这样调用的,Delphi也不是这样调用的。Java中把一种数据类型的名字放在括号里就是强制类型转换的意思,虚拟机提供了特别支持,而不像Delphi中那样是通过调用方法来达到的。
      

  10.   

    谢谢所有热心帮助的兄弟。
    就是说,强制类型转换是 “虚拟机提供了特别支持”,我们编码时并没有这样的规范,也就没法写成在A类中写代码,在B中象java的(int)或(char)这样用 int b=(yy)(6)
      

  11.   

    楼主,我想你上面的理解可能也不很全面。我们可以对我们自定义的类使用上面的语法,例如:class One {}
    class Two extends One{}...Object o = new Two(); // 保存为Object
    One o1 = (One)o; // 由Object强制转换为One
    Two o2 = (Two)o1; // 由One强制转换为Two
    Two o3 = (Two)o;  // 由Object强制转换为Two...
      

  12.   

    Java是一种强类型语言,对于类型的检查是很严格的,只有“相关”类型才能转换,而且转换时精度不能受损,例如从int转到float,从float到double都不用强制类型转换。
    int i=10;
    float f=i;
    double d=f;char本质上是一个int(这是从C语言继承下来的),所以char和int之间不用强制转换:
    char c=65; //输出'A' 
    char c=2+'A';
    float f=c;
    double d=c;但是从高精度到低精度必须强制转型:
    float f=65.1231241f;
    double d=65.5125125;
    char c=(char)(f+2);   //输出'C'
    char c=(char)(d+3);   //'D'
      

  13.   

    感谢sean_gao(大胃)提醒,忘了父类子类之间可以转换了。早想到这里该比较清楚了,看e版书看晕了。结帖