JAVA中String转byte[],再转回String,为什么和之前的String不相等了?

Stringa="灯光开";byte[]b=a.getBytes();Stringc=newString(b);1——>//if(a=="灯光开")toggleButto... String a = "灯光开";
byte[] b = a.getBytes();
String c = new String(b);
1——> // if (a == "灯光开") toggleButton.setChecked(true);
1——> // textView.setText(a);

2——> // if (c == "灯光开") toggleButton.setChecked(true);
2——> // textView.setText("c");

以上是代码,这是我写的安卓的一段
如果启用标号1的两行代码,可以把toggleButton打开,并在文本框中输出“灯光开”
如果启用标号2的两行代码,无法把toggleButton打开,但也在文本框中输出“灯光开”,看起来并无不同。

我要使用蓝牙的输入输出流来通信,所以信息会历经String转byte[],再转回String的过程,但是转回来就像这样无法操作了,求高人解答!
后来发现,即使这样都不相等,不能设置按钮状态,byte[]到底是个什么东西- -

String a = "灯光开";
byte[] b = a.getBytes();

String c = "灯光开";
byte[] d = c.getBytes();

if (b == d) toggleButton.setChecked(true);
展开
 我来答
yugi111
2013-09-06 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
字符串比较用equals,另外建议常量写在左边,防止空指针!

String a = "灯光开";
byte[] b = a.getBytes();
String c = new String(b);
1——>  //  if ("灯光开".equals(a)) toggleButton.setChecked(true);
1——>  //  textView.setText(a);
        
 2——> //  if ("灯光开".equals(c)) toggleButton.setChecked(true);
 2——> //  textView.setText(c);
 
 
 我们通常使用 getBytes 来转码, 处理中文乱码问题
 
 String tempstr = new String(a.getBytes("ISO-8859-1"),"UTF-8");
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式