解决方案 »
- webview如何阻止某些url的加载
- android 相对布局
- android怎样写入一个文件到 /data目录下?
- 这段代码有什么问题?
- 求问大家怎样在点击Tab时也让每个标签上字的颜色变化呢?
- 奔溃,ImageView及分辨率问题!
- 请指教:android的WifiP2PManager里CreateGroup方法用处?
- android 微信 分享
- Android自带分享没有朋友圈,是否可添加?
- android 集成了facebook之后再有app的情况下不能登录
- Android 4.4源码编译之后system.img和factory image size为什么相差很大
- 求助如图结构如何实现
sSex为null,但是if(sSex == "男")也是可以编译通过并执行的,只是不会执行到分支里去。
要比较字符串应该用String.equals方法,==只是指针比较。
在比较基本数据类型的时候使用==号是没有问题的,因为基本数据类型本身就是存储在堆栈中;但是在比较对象的时候,如果你想比较的是对象的“值”,使用==号的话可能会出现错误,比如你题目中使用sSex == "男",这种方式得到的结果是正确的,因为String虽然不是基本数据类型,但是JAVA进行了封装,允许你直接使用String a="XXX"的方式定义,在更多的时候例如,String s1=new String("abc");
String s2=new String("abc");
if(s1==s2){
//永远也不会执行到这,s1 和s2不是同一个对象
}
在JAVA中在更多的时候,我们使用==比较对象时是代表他们是指向同一个堆栈,而不是比较堆栈指向对象的值相等。
以上是科普,回到问题,if( sSex.equals(getString(R.string.sexMale))) 正常情况是没有问题的,运行时候报错基本上是你的R.string.sexMale为null值或者sSex为null值。