在使用 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);
}
以上就是两者之间最主要的区别。
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 相关的知识就写到这里啦,可能还有很多的没有涉及到,有疑问的或者有疏漏的地方,欢迎
各位小伙伴指出,共同进步,加油!