求助:发信号码与字符串比较恒为否,怎么回事?
程序接收了短信广播,从中获取了发信人号码,然后与预设的号码比较,结果却是恒为否。代码如下:Object[] pdus = (Object[]) intent.getExtras().get("pdus");
for(Object p : pdus){
byte[] sms = (byte[]) p;
SmsMessage message = SmsMessage.createFromPdu(sms);
String number = message.getOriginatingAddress();
if(number=="661"); // DO……
}
明明发送号码是661结果判断就是为否,Log.i输出number显示也为"661"
另外如何从在这个intent中获取收信号码呢?(因为手机是双卡双待,需要区别一下是发到哪个卡的短信)
android第一问,可能问题比较弱智,请大家指教。 --------------------编程问答-------------------- 用equals --------------------编程问答-------------------- 别看java的String可以用+号,但java是不支持操作符重载的。所以那个+号只是特例,所以String的==号其实是对对象引用的比较,相当于比较它们的指针(java里没指针,但其实所有对象本质上来说就是指针)。若要比较内容,可以调用equals方法,这是Object类的方法,所以理论上任何一个java类都带有这个方法,至于有没有实现,就是另一回事了。不过一般系统自带的对象类型都是实现了的 --------------------编程问答-------------------- 用equals成功,java也不懂,equals和==有什么区别,这里为什么不能用==呢 --------------------编程问答-------------------- 同2L,用obj.equals(o) --------------------编程问答-------------------- "661".equals(number);
==比较的是两个对象,
equals比较的是对象的值
虽然值相等,但是是两个对象,各自的地址不同,所有不相等。 --------------------编程问答-------------------- 明白了,第二个问题有朋友指教一下吗?
补充:移动开发 , Android