已有101人关注
尊敬的申老师,问题又来了,关于scanner输入流输入回车时的疑惑
发表在Java图书答疑 2020-03-09 《零基础学Java》第2章 Java语言基础
是否精华
版块置顶:

以下代码:

import java.util.Scanner;
public class aaa {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.print("输入:");
		String s = null;
		s = in.nextLine();
		if (s == "") {
			System.out.println("\"\"");
		} else if (s == null) {
			System.out.println("null");
		} else if (s == "\r") {
			System.out.println("回车");
		} else if (s == "\n") {
			System.out.println("换行");
		} else {
			System.out.println("不知道" + s + "是什么");
		}
		in.close();
	}
}

运行后直接输入回车键,运行结果是:

输入:

不知道是什么

说明这时的S值即不是""值,也不是null值,那到底是多少呢?

怎么判断用户输入的只有回车键?

分享到:
精彩评论 6
ywfpclt
学分:577 LV6
2020-03-09
沙发

发现S的值是"",但是s==""表达式的值是false,而s.equals("")的值是true


查了一下,原来是:

想要比较两个字符串对象的内容是否相同,不可以使用“==”运算符,应该使用equals()方法。


ywfpclt
学分:577 LV6
2020-03-09
板凳

补充知识

String str = null;”和“String str = " ";”是两种不同的概念。前者是空对象,没有引用字符串常量,调用StringAPI会抛出NullPointerException空指针异常;但" "是一个字符串,分配了内存空间,可以调用StringAPI,只是没有显示出任何东西而已。

ywfpclt
学分:577 LV6
2020-03-09
地板

再补充:

equalsIgnoreCase()方法的使用方式与equals()方法完全一样,但equalsIgnoreCase()方法在比较字符串内容的时候会忽略字母的大小写。

13018014521
学分:310 LV5
2020-03-10
4L

ywfpclt 发表于2020-03-09 12:46

补充知识

String str = null;”和“String str = " ";”是两种不同的概念。前者是空对象,没有引用字符串常量,调用StringAPI会抛出NullPointerException空指针异常;但" "是一个字符串,分配了内存空间,可以调用StringAPI,只是没有显示出任何东西而已。

你好,请问这里的 "" 中间有空格吗?

ywfpclt
学分:577 LV6
2020-03-10
5L

13018014521 发表于2020-03-10 15:35

你好,请问这里的 "" 中间有空格吗?

没有,空格是一个字符,而这个是一个空字符,空字符好像不能用作char值

13018014521
学分:310 LV5
2020-03-10
6L

ywfpclt 发表于2020-03-10 18:48

没有,空格是一个字符,而这个是一个空字符,空字符好像不能用作char值

好的,谢谢

首页上一页 1 下一页尾页 6 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照