目录

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

  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+算法~

还有更多资源等你来拿哦~

视频+图文 String类干货向总结的更多相关文章

  1. java 实现视频转换通用工具类:视频截图-Ffmpeg(四)

    java 实现视频转换通用工具类:获取视频元数据信息(一) java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二) java 实现视频转换通用工具类:视频相互转换-Ffmpeg ...

  2. java 实现视频转换通用工具类:视频相互转换-Ffmpeg(三)

    java 实现视频转换通用工具类:获取视频元数据信息(一) java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二) 这节主要是ffmpeg的相关方法封装,在实际调用中主要使用f ...

  3. java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二)

    1.自动判断格式并调用相应的转换工具,默认方法 /** * 自动判断格式并调用相应的转换工具,默认方法 * @param srcVideoPath * @param tarVideoPath * @r ...

  4. 从C# String类理解Unicode(UTF8/UTF16)

    上一篇博客:从字节理解Unicode(UTF8/UTF16).这次我将从C# code 中再一次阐述上篇博客的内容. C# 代码看UTF8 代码如下: string test = "UTF- ...

  5. String类用法总结

    String类在编程中出现的频率是非常高的,熟练掌握是很有必要的 一.常用方法总结: 获取方法 1.1:字符串中包含的字符数,也就是字符串的长度. int length():获取长度 1.2:根据位置 ...

  6. C#调用mmpeg进行各种视频转换的类实例

    本文实例讲述了C#调用mmpeg进行各种视频转换的类.分享给大家供大家参考.具体如下: 这个C#类封装了视频转换所需的各种方法,基本上是围绕着如何通过mmpeg工具来进行视频转换 using Syst ...

  7. Java入门 - 语言基础 - 14.String类

    原文地址:http://www.work100.net/training/java-string.html 更多教程:光束云 - 免费课程 String类 序号 文内章节 视频 1 概述 2 创建字符 ...

  8. 【视频+图文】带你快速掌握带continue语句的双重for循环

    双重for循环掌握后,我们就一起来看看双重for循环的进阶内容一之带continue语句的双重for循环. 上期双重for循环[视频+图文]讲解传输门:点击这里可去小乔的哔哩哔哩观看for循环视频~ ...

  9. 【视频+图文】带你快速掌握Java中含break语句的双重for循环

    双重for循环掌握后,我们就一起来看看双重for循环的进阶内容一之带break语句的双重for循环. 双重for循环[视频+图文]讲解传输门:点击这里可去小乔的哔哩哔哩观看~ 带continue语句的 ...

随机推荐

  1. IDEA编写 Scala时没有语法检查和错误提示

    #问题描述 在IDEA中写scala程序时,一些明显的语法错误不进行检查,没有像写Java时的红线什么的,当编译运行时,编译失败. https://blog.csdn.net/weizheng1000 ...

  2. 手把手教你学Git

    Git 使用手册独家实战 0.查看本机公钥 步骤: 1.进入.ssh目录 cd ~/.ssh 2.找到id_rsa.pub文件 ls / ll 3.查看文件 cat id_rsa.pub JackFe ...

  3. effective-java学习笔记---优先使用泛型方法30

    泛型类型比需要在客户端代码中强制转换的类型更安全,更易于使用. 当你设计新的类型时,确保它们可以在没有这种强制转换的情况下使用. 这通常意味着使类型泛型化. 如果你有任何现有的类型,应该是泛型的但实际 ...

  4. 走近源码:Redis如何清除过期key

    "叮--",美好的周六就这么被一阵钉钉消息吵醒了. 业务组的同学告诉我说很多用户的帐号今天被强制下线.我们的帐号系统正常的逻辑是用户登录一次后,token的有效期可以维持一天的时间 ...

  5. XCode8 安装模拟器

    1.下载模拟器 参考:http://blog.csdn.net/piratest/article/details/52538978 参考:http://blog.csdn.net/zhangao008 ...

  6. JS 剑指Offer(五) 二叉树的重建

    题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 题目分析:已知二叉树的前序和中序遍历,根据前序遍历和中序遍历的规则,前序遍历的第一 ...

  7. 并发——抽象队列同步器AQS的实现原理

    一.前言   这段时间在研究Java并发相关的内容,一段时间下来算是小有收获了.ReentrantLock是Java并发中的重要部分,所以也是我的首要研究对象,在学习它的过程中,我发现它是基于抽象队列 ...

  8. CountDownLatch是个啥?

    文章篇幅较短,对于一些AQS的顶级方法例如releaseShared并没有做过深的讲解,因为这些算是AQS的范畴,关于AQS可以看下另一篇文章--AQS.  CountDownLatch一般被称作&q ...

  9. 解决MySQL workbench的resultgird不出现的问题

    23:01:37 2019-08-08 鸽了好久 终于开始看怎么使用MySQL workbench了 首先就是遇到了result gird不显示的问题 搜了 重启是一种办法(这方法...至少能用) 其 ...

  10. Html 慕课园编程练习9-22

    题目要求: 制作一个表格,显示班级的学生信息. 要求: 1. 鼠标移到不同行上时背景色改为色值为 #f2f2f2,移开鼠标时则恢复为原背景色 #fff 2. 点击添加按钮,能动态在最后添加一行 3. ...