Java 可变范围行为

Java 可变范围行为,java,android,scope,Java,Android,Scope,我有一个android应用程序,在应用程序的一个区域中,我有一个字符串变量设置为”(我也尝试过null)。紧接着,我正在执行一个if函数。在if中,我更改了变量,然后在if函数之外使用它,但结果是“”或null 有人能解释一下吗 String device = ""; if(DataModel.isTablet(getBaseContext())){ device = "Tablet"; } else{ device = "Phone"; } DataModel.displayC

我有一个android应用程序,在应用程序的一个区域中,我有一个字符串变量设置为
(我也尝试过null)。紧接着,我正在执行一个if函数。在if中,我更改了变量,然后在if函数之外使用它,但结果是“”或null

有人能解释一下吗

String device = "";
if(DataModel.isTablet(getBaseContext())){
    device = "Tablet";
}
else{
    device = "Phone";
}
DataModel.displayConfirmNewDevice("New Device", String.format(DataModel.CONFIRM_NEW_DEVICE, device), code, ExistingMemberActivity.this);
设备
是我指的对象。即使代码运行两条if-else语句中的至少一条,之后
设备
对象仍然为空


知道吗?

在给设备字符串赋值后,如何检查它?我强烈怀疑您误诊了。根据您给出的代码,
device
的值肯定会在
if
语句之后引用
“Tablet”
“Phone”
。我怀疑您是通过使用if(device==“”)而不是if(device.equals(“”)来检查设备字符串的。似乎设备对象实际上不是null或“”。调试程序在中断时显示了一个“device=null”的弹出窗口,因为这就是它的实例化方式,给我的印象是它为null。我的糟糕!愚蠢的弹出窗口:(