zoukankan      html  css  js  c++  java
  • 视频+图文 String类干货向总结

    一、字符串的介绍及视频讲解

    1. 字符串是常量,表示方法:用双引号""引起来
    2. 字符串的创建之后就不能修改,每当你觉得字符串发生了变化那就是创建了新的字符串

    点击这里去B站观看视频

    二、字符串的两种创建方式

    方法一:通过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
    

    在这里插入图片描述

    1. 直接创建出的stra和strb字符串对象内容相同地址值相同

    2. 原因如下:

      直接创建的字符串对象保存在字符串常量池

      字符串常量池当中不会出现重复字符串对象对应的地址,这样可以保证字符串不重复

    3. 所以 strastrb地址值相同的,运行结果就为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+算法~
    还有更多资源等你来拿哦~
    在这里插入图片描述

  • 相关阅读:
    对象接口
    final关键字
    面向对象----多态,抽象,接口
    面向对象中的继承、封装、构造与析构函数
    PHP类与对象
    JS项目
    AppStore IAP 客户端校验代码
    Android线程计时器实现
    Cocos2d-x java 通过jni调用c++的方法
    ios7 uuid的获取方法
  • 原文地址:https://www.cnblogs.com/Qpgshare/p/12760074.html
Copyright © 2011-2022 走看看