相同的代码在不同的系统打印不同的结果,
在windows xp下运行打印“bbb”字符串;在linux中运行打印“aaa”字符串。
代码如下,求解释
package pkg15;import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;public class treeTest { public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Tree Test");
shell.setSize(300, 300);
shell.setLayout(new FillLayout()); Text text = new Text(shell, SWT.BOLD);
text.setText("");
String string = text.getText();
System.out.println(string); if (string != "") {
System.out.println("aaa");
} else {
System.out.println("bbb");
} shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose(); }}
在windows xp下运行打印“bbb”字符串;在linux中运行打印“aaa”字符串。
代码如下,求解释
package pkg15;import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;public class treeTest { public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Tree Test");
shell.setSize(300, 300);
shell.setLayout(new FillLayout()); Text text = new Text(shell, SWT.BOLD);
text.setText("");
String string = text.getText();
System.out.println(string); if (string != "") {
System.out.println("aaa");
} else {
System.out.println("bbb");
} shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose(); }}
解决方案 »
- java中的SerialBlob什么情况下用
- 求助:数学函数接口
- 我学完J2SE 下步应该怎么打算
- AWT 中一画图问题
- 及时通信在线信息保存的问题
- 请问:用java制作的产品如何控制时间限制(比如:30天)?
- 请帮看看这个client向server发信息的程序问题出在哪里?
- resin的配置问题
- 请问在JBUILDER6企业版编辑器中每输入一个关键字后,打入空格就会出现光标错位怎么解决?
- 在本地测试没问题,在服务器(Linux测试环境)测试出现问题
- Java中static final语句能优化掉不?
- statement.executeUpdate()执行返回0,sql语句放在plsql里面是正确的
if (string != "") {
System.out.println("aaa");
} else {
System.out.println("bbb");
}
中string !=""改成 string.equals(""),即可。
java中字符串比较不要用“==”“!=”
一个是在linux下,一个是在windows下
你说的这点我知道的,
但是我要问的不是你说的这样,在windows下 ( string !="" )能够编译和运行通过
我想问题应该是两个操作系统编译会编译成不同的汇编,从而结论不同,
所有现在想要知道是不是这个?
那就跟两个系统的寻址实现有关,当然机器代码是不一样的。
java中用==或!=来比较字符串本来就是不可取的,所以造成以上差异也是正常的。
现在我的问题不是 == 与 equals()的区别,它们的区别现在不考虑
而是同一份代码不同系统中的区别,现在是 (!=)在windows中能够通过这个前提下来问的
String string = text.getText();
System.out.println(string); if (string != "123") {
改成这样看看是否还有差异~
if (string != "")
这个判断