视频+图文 String类干货向总结
一、字符串的介绍及视频讲解
- 字符串是常量,表示方法:用双引号""引起来
- 字符串的值在创建之后就不能修改,每当你觉得字符串发生了变化那就是创建了新的字符串
二、字符串的两种创建方式
方法一:通过new创建
string str = new string("abcd");
方法二:直接创建
string str1 = ("abcd");
三、字符串的长度获取:length()方法
string str1 = ("abcd"); int length = str1.length(); system.out.println("abcd的长度为:"+length);//4
四、使用 == 和equals()方法比较两个字符串
1. 用 == 比较两个字符串(由此分析字符串的两种创建方式的不同)
对于引用类型来说,== 进行的是地址值的比较
string str = new string("abcd");//第一种创建方式:通过new创建 string str1 = new string("abcd");//第一种创建方式:通过new创建 string stra = "abcd";//第二种创建方式:直接创建 string strb = "abcd";//第二种创建方式:直接创建 system.out.println(str == str1);//new出的两个字符串对象之间比较,false system.out.println(str == stra);//new出的字符串对象与直接创建的字符串对象之间比较,false system.out.println(stra == strb);//直接创建的两个字符串对象之间比较,true
(1)对于用new方式创建出的两个字符串之间比较
从system.out.println(str == str1);//new出的两个字符串对象之间比较,false
的代码运行结果我们可以看出:
string str = new string("abcd");//第一种创建方式:通过new创建 string str1 = new string("abcd");//第一种创建方式:通过new创建
- 通过new创建出的str和str1字符串对象虽内容相同
- 但由于是new出的是两个不同的对象所以它们的地址值必然不同
对于引用类型来说 == 比较的是地址值
- 所以运行结果就为false
(2)对于直接创建出的两个字符串之间比较
从system.out.println(stra == strb);//直接创建的两个字符串对象之间比较,true
的代码运行结果我们可以看出:
string stra = "abcd";//第二种创建方式:直接创建 string strb = "abcd";//第二种创建方式:直接创建 system.out.println(stra == strb);//true
-
直接创建出的stra和strb字符串对象内容相同且地址值相同
-
原因如下:
直接创建的字符串对象保存在字符串常量池中
字符串常量池当中不会出现重复的字符串对象对应的地址,这样可以保证字符串不重复
-
所以 stra 和 strb 的地址值是相同的,运行结果就为true
(3)直接创建出的字符串与new创建出的字符串之间比较
从system.out.println(str == stra);//new出的字符串与直接创建的字符串对象之间比较,false
的代码运行结果我们可以看出:
string str = new string("abcd");//第一种创建方式:通过new创建 string stra = "abcd";//第二种创建方式:直接创建
-
通过new创建出的str和直接创建的stra字符串对象虽内容相同
-
但new出的字符串对象存放在堆中,一个是直接创建的字符串对象存放在字符串常量池中
-
所以它们的地址值必然不同
-
所以运行结果就为false
2. 用equals()方法比较两个字符串:比较的是两个字符串的内容是否相同
- 因为这4个字符串的内容均为"abcd"
- 所以用equals()方法比较时,结果均为true
string str = new string("abcd"); string str1 = new string("abcd"); string stra = "abcd"; string strb = "abcd"; system.out.println(str.equals(str1));//true system.out.println(str.equals(stra));//true system.out.println(stra.equals(strb));//true
五、字符串的连接
(1)用“+”连接:可与不同类型相连
string str = new string("abcd"); int a = 12; string b = a + str; system.out.println(b);//12abcd
(2)用concat()方法连接:只能用于字符串与字符串的连接
string str1 = new string("abcd"); string str2 = str.concat(str1); system.out.println(str1);//abcd system.out.println(str2);//abcdabcd
从上面的 str1 和 str2 输出结果 可以很好的理解前面说的:
字符串的值在创建之后就不能修改,每当你觉得字符串发生了变化那就是创建了新的字符串
六、判断一个字符串是否包含指定字符串
这里的“char值序列说的比较深奥”。
在初期,我们可以直接理解为使用contains()方法可以:
-
查看一个字符串中是否包含指定的字符串
-
如:下面的例子是判断 字符串str 中 是否 包含 "ab" 串
string str = new string("abcd"); boolean judge = str.contains("ab"); system.out.println(judge);//true
七、字符串的大小写转换
(1)大写字符串转换为小写
string strc = ("abrea"); system.out.println(strc);//abrea system.out.println(strc.tolowercase(););//abrea
从上面的 strc 和 strc.tolowercase() 输出结果 可以很好的理解前面说的:
字符串的值在创建之后就不能修改,每当你觉得字符串发生了变化那就是创建了新的字符串
(2)小写字符串转换为大写
string str = new string("abcd"); system.out.println(str);//abcd system.out.println(str.touppercase(););//abcd
从上面的 str 和 str.touppercase() 输出结果 可以很好的理解前面说的:
字符串的值在创建之后就不能修改,每当你觉得字符串发生了变化那就是创建了新的字符串
八、得到指定索引对应的字符
注意:字符串的索引从0开始
string str = new string("abcd"); system.out.println(str);//abcd system.out.println(str.charat(1));//b
从上面的 str 和 str.charat(1) 输出结果 可以很好的理解前面说的:
字符串的值在创建之后就不能修改,每当你觉得字符串发生了变化那就是创建了新的字符串
九、得到指定字符串首次出现的索引
从下面两种转换方式的输出结果 可以很好的理解前面说的:
字符串的值在创建之后就不能修改,每当你觉得字符串发生了变化那就是创建了新的字符串
第一种:
string str4 = "012345618a9"; int index = str4.indexof("1");//找到字符串"1"首次出现的索引 system.out.println(index2);//1 system.out.println("====================="); int index1 = str4.indexof("1", index + 1);//从index2 + 1开始找字符串"1"首次出现的索引 system.out.println(index3);//7
- 当index2=1时即索引1记录的是子串"1"第一次出现的位置
- 所以在找子串"1"第二次出现的位置时要从index2+1的位置开始找
- 因为index2的位置已经找过了
- 要是 还从index2=1的位置找,那么找到的索引还是为1
第二种:
string str5 = "012345612a9"; int index4 = str5.indexof('2');//找到字符'2'首次出现的索引 system.out.println(index4);//2 system.out.println("====================="); int index5 = str5.indexof('2', index4 + 1);//从index4 + 1开始找字符'2'首次出现的索引 system.out.println(index5);//8
- 当index4=2时即索引2记录的是字符'2'第一次出现的位置
- 所以在找字符'2'第二次出现的位置时要从index4+1的位置开始找
- 因为index4的位置已经找过了
- 要是 还从index4=1的位置找,那么找到的索引还是为2
十、字符串转换字符数组及字符串与基本数据类型互相转换
(一)字符串转换字符数组
string str = new string("abcd"); char ch[] = str.tochararray();//将字符串转换为字符数组 for(int i =0;i<ch.length;i++) {//遍历得到的字符数组 system.out.println(ch[i]); }
(二)字符串与基本数据类型互相转换
1.字符串转换为基本数据类型:以字符串转换为int型为例
//字符串转换成int型 string stre = "123456"; int a1 = integer.parseint(stre);//对应的包装类.parsexxx 方法 system.out.println(a1+2);//123458,证明是int型
2.基本数据类型转换为字符串:以int型转换为字符串为例
//int型转换成字符串 int num =123; string strs = string.valueof(num);// string.valueof()方法 system.out.println(strs+12);//12312,证明是字符串
到此字符串的干货就总结完啦~~
欢迎大家来公号 “小乔的编程内容分享站”
来找小乔玩~
一起学习java+算法~
还有更多资源等你来拿哦~
上一篇: 关于力扣第一题 ---两数之和(多方法)
下一篇: 司马徽:诸葛亮的师父,本领高强却隐居山林