编写博客目的:本系列博客均根据B站黑马程序员系列视频学习和编写目的在于记录自己的学习点滴,方便后续回忆和查找相关知识点,不足之处恳请各位有缘的朋友指正。
一、字符串的特性
- 字符串用加号时都是做拼接操
- 字符串定义后便不能再更改,两字符串拼接产生的是一个新字符串
- 字符串的学习内容有很多,大致掌握这一些即可
总结
二、创建字符串String对象的两种方式
package com.itheima;
public class StringDemo1 {
public static void main(String[] args){
// 1. 直接赋值的方式获取一个字符串
String s1 = "abc";
System.out.println(s1);
// 2. 使用new的方式来获取一个字符串对象
// 空参构造:可以获取一个空白的字符串对象
String s2 = new String();
System.out.println("@" + s2 + "!");
// 传递一个字符串,根据传递的字符串内容在创建一个新的字符串对象
String s3 = new String("abc");
System.out.println(s3);
// 传递一个字符数组,根据字符数组的内容再创建一个新的字符串对象
// 需求:我要修改字符串的内容
char[] chs = {'a','b','c','d'};
String s4 = new String(chs);
System.out.println(s4);
// 传递一个字节数组,根据字节数组的内容再创建一个新的字符串对象
// 应用场景:以后在网络中传输的数据其实都是字节信息
// 我们一般要把字节信息进行转换,转成字符串,此时使用这个构造
byte[] bytes = {97,98,99,100};
String s5 = new String(bytes);
System.out.println(s5);
}
}
Java的内存模型
当使用双引号直接赋值时,系统会检查该字符串,在串池中是否存在,如果存在会直接复用,而不是创建新的
当使用new 生成字符串时,字符串对应的地址不同,相比于上面的方法更加占用空间
三、字符串的比较
java中==号比较的是数据值或者地址值,这个具体看是哪一类数据类型 ,基本数据类型比较的是数据值,引用数据类型比较的是地址值
字符串的比较并不是毫无办法,使用图中这两个方法即可
package com.itheima;
public class StringDemo2 {
public static void main(String[] args){
// 1.创建两个字符串对象
String s1 = new String("abc");
String s2 = "aBc";
// 2.== 号比较
System.out.println(s1==s2);
// 3.比较字符串对象中的内容是否相等
boolean result1 = s1.equals(s2);
System.out.println(result1);
// 4.比较字符串中内容是否相等,忽略大小写
boolean result2 = s1.equalsIgnoreCase(s2);
System.out.println(result2);
}
}