1. "=="用于比较两个变量、引用是否指向同一个对象。
2.equals()方法比较两个对象中的内容是否相同。
在windows中回车有两个字符"\r"和"\n",在判断回车动作时要对"\r"进行处理
linux系统只有"\n",所有有时候在JBuider下运行良好,在windows中会多出'\r'。
附代码如下:
public class readfromkeyboard {
public static void main(String [] args)
{
byte[] buf = new byte[1024];//存放字节数组中
String str = null;//得出一行后转为字符串,方法中的变量必须显示初始化?但不初始化好像也没啥?
int length = 0;//记录有多长的字节数组
int i = 0;//读取到的字节内容,为什么是int型
System.out.println("please input");
while(true)//不停的读取输入
{
try{ i = System.in.read();}
catch(Exception e)
{
}
switch(i)
{
case '\r'://windows里回车有\r,同样要处理,linux里没有
{
break;
}
case '\n'://换行,将所有字节转换成字符串打印出来
{
str = new String(buf, 0, length);
if(str.equals("bye"))//不要用等号,等号是两个引用是否指向同一个,如果比较对象内容,使用equals
{
return;//直接结束程序的运行
}
else
{
System.out.println(str);//将字符串打印出来
length = 0;//归零
break;
}
}
default:
buf[length++] = (byte)i;
}
}
}
}