Java变量类型

Mir*_*vod 2 java variables types

对不起,如果这是一个愚蠢的问题.我是Java的新手(来自PHP背景).所以这就是我所拥有的.

    String variable = new String("whatever");
    //instanceof String == true here
    variable = null;
    //whereas here instanceof String == false
    variable = new Integer(3);// error
Run Code Online (Sandbox Code Playgroud)

不将变量设置为null会删除它的引用,因为我用对象类型实例化它?有没有办法可以保留变量名称但更改它的数据类型?谢谢

Ash*_*Ash 9

Java是一种强类型语言.

当您指定variable为a时String,它始终是String.如果您尝试为其分配无效类型,编译器将给您一个错误,因为您尝试混合类型.

在Java中将某些内容设置为null不会更改类型.当然,您可以允许变量超出范围并创建另一个具有不同类型的变量,例如:

if ( x == 1 ) {
  String variable = "whatever";
  ...
}
else {
  Integer variable = new Integer( 3 );
  ...
}
Run Code Online (Sandbox Code Playgroud)

(重用变量名称当然可能会令人困惑).

您将注意到的另一件事是可以将子类分配给指定为超类的类型.例如,该类Integer是该类的子类Number,因此您可以这样做:

Number variable = new Integer( 3 );
Run Code Online (Sandbox Code Playgroud)