Java基础: String 与 StringBuffer 及 String 的两种读取方式

next() 和 nextLine 的用法和区别:

	在使用 String 字符串时我们应该先知道怎么通过控制台进行读入字符串。
	可以通过 Scanner 类实例化一个 input 对象进行输入:
	
	Scanner input = new Scanner(System.in);

两者之间的区别:

next()	  不接收 空格、回车,并且将回车、空格作为终止符号.

nextine() 接收空格、回车.

案例:
next():

  public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String str = input.next();
        System.out.println(str);
    }

效果图:
有空格、换行符号时:
在这里插入图片描述

从效果图中我们可以看到, next() 遇到 空格后就停止,不再进行录入。

nextLine():

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String str = input.nextLine();
        System.out.println(str);
    }

效果图:
在这里插入图片描述

以上就是两者之间最主要的区别。

Sting 和 StringBuffer 之间的区别:

String 是一个类,为什么这样说呢?首先,它的首字母是大写的,其次,它有很多的方法能够用来进行
处理字符串,我们常常用 String str = "abc" ;进行赋值,实际上 也可以这样 :
String str = new String(); 进行创建。
关于 String 的一些常见方法在此不再多加赘述,可以在 idea 中创建一个对象利用 '.' 进行逐个
测试,本文重点说下 String 和 StringBuffer 之间的区别。

在使用 String 时,该对象一旦成功创建,再修改时 会重新创建一个内存地址进行存储,看下面这个例子


    public static void main(String[] args) {
        String str = "a";
        for(int i = 1; i <= 10; i ++) {
            System.out.println(str + i);
        }
    }
	首先,我们知道,任何类型和字符串类型进行拼接都会强制转换成字符串类型。
	看上面的代码,每次拼接时 str 都和之前的不一样,都需要重新开辟空间,如果有 1e8 个循环呢
	我们就需要一直开辟空间,这是十分浪费空间资源的(~~虽然现在空间已经不值钱啦,哈哈~~ )。
	用 StringBuffer 就可以解决这个问题(至于 StringBuffer 是怎么具体实现的,本小菜鸡就
	不得而知啦)

StringBuffer 是在原来的基础上进行修改,不会开辟新的内存空间。
String 更新时会开辟新的内存空间,原有的内容在等待垃圾回收站进行回收。

另外:

StringBuffer 比 String 更加强大,方法相对来说也更多:比如常见的 字符串反转(reverse)、
字符串追加(append) 、and so on ,在此不再多加赘述啦,*(嘻嘻,你怎么这么懒)

后记:

关于String 相关的知识就写到这里啦,可能还有很多的没有涉及到,有疑问的或者有疏漏的地方,欢迎
各位小伙伴指出,共同进步,加油!

猜你喜欢

转载自blog.csdn.net/qq_43619271/article/details/106219068