视频+图文 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+算法~
还有更多资源等你来拿哦~
视频+图文 String类干货向总结的更多相关文章
- java 实现视频转换通用工具类:视频截图-Ffmpeg(四)
java 实现视频转换通用工具类:获取视频元数据信息(一) java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二) java 实现视频转换通用工具类:视频相互转换-Ffmpeg ...
- java 实现视频转换通用工具类:视频相互转换-Ffmpeg(三)
java 实现视频转换通用工具类:获取视频元数据信息(一) java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二) 这节主要是ffmpeg的相关方法封装,在实际调用中主要使用f ...
- java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二)
1.自动判断格式并调用相应的转换工具,默认方法 /** * 自动判断格式并调用相应的转换工具,默认方法 * @param srcVideoPath * @param tarVideoPath * @r ...
- 从C# String类理解Unicode(UTF8/UTF16)
上一篇博客:从字节理解Unicode(UTF8/UTF16).这次我将从C# code 中再一次阐述上篇博客的内容. C# 代码看UTF8 代码如下: string test = "UTF- ...
- String类用法总结
String类在编程中出现的频率是非常高的,熟练掌握是很有必要的 一.常用方法总结: 获取方法 1.1:字符串中包含的字符数,也就是字符串的长度. int length():获取长度 1.2:根据位置 ...
- C#调用mmpeg进行各种视频转换的类实例
本文实例讲述了C#调用mmpeg进行各种视频转换的类.分享给大家供大家参考.具体如下: 这个C#类封装了视频转换所需的各种方法,基本上是围绕着如何通过mmpeg工具来进行视频转换 using Syst ...
- Java入门 - 语言基础 - 14.String类
原文地址:http://www.work100.net/training/java-string.html 更多教程:光束云 - 免费课程 String类 序号 文内章节 视频 1 概述 2 创建字符 ...
- 【视频+图文】带你快速掌握带continue语句的双重for循环
双重for循环掌握后,我们就一起来看看双重for循环的进阶内容一之带continue语句的双重for循环. 上期双重for循环[视频+图文]讲解传输门:点击这里可去小乔的哔哩哔哩观看for循环视频~ ...
- 【视频+图文】带你快速掌握Java中含break语句的双重for循环
双重for循环掌握后,我们就一起来看看双重for循环的进阶内容一之带break语句的双重for循环. 双重for循环[视频+图文]讲解传输门:点击这里可去小乔的哔哩哔哩观看~ 带continue语句的 ...
随机推荐
- TensorFlow 中文资源精选,官方网站,安装教程,入门教程,实战项目,学习路径。
Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习路径推荐: 官方网站,初步了解. 安装教程,安装之后跑起来. 入门教程,简单的模型学习和运行. 实战项目, ...
- JSP+Servlet+C3P0+Mysql实现的简单新闻系统
项目简介 项目来源于:https://gitee.com/glotion/servlet-jsp_news 本系统基于JSP+Servlet+C3P0+Mysql.涉及技术少,易于理解,适合JavaW ...
- MySQL默认隔离级别为什么是RR
曾多次听到“MySQL为什么选择RR为默认隔离级别”的问题,其实这是个历史遗留问题,当前以及解决,但是MySQL的各个版本沿用了原有习惯.历史版本中的问题是什么,本次就通过简单的测试来说明一下. 1. ...
- Activiti任务分配
分配任务负责人 一.固定分配 在进行业务流程建模时指定固定的任务负责人 在properties 视图中,填写Assignee 项为任务负责人. 注意: 由于固定分配方式,任务只管一步一步执行任务,执行 ...
- Material Design 组件之 AppBarLayout
AppBarLayout 是一个垂直方向的 LinearLayout,它实现了许多符合 Material Design 设计规范的状态栏应该具有的功能,比如滚动手势. AppBarLayout 一般直 ...
- Python执行js之PyexecJs
利用Python执行js 爬虫中会经常碰到JS加密,当我们找到他加密的JS代码之后我们需要获取它的返回值,python虽然可以模仿js写一个python版本的加密,但是这样有点费时间,也有点费头发~ ...
- 吐槽,Java 设计的槽点
今天不灌水,直接上干货!希望下面的讲解,能与你产生一些共鸣. 1. 求长度各有千秋 你是否曾经在面试的时候,经常被问到:数组有没有 length() 方法?字符串有没有 length() 方法? 集合 ...
- 通俗易懂.NET GC垃圾回收机制(适用于小白面试,大牛勿喷)
情景:你接到xx公司面试邀请,你怀着激动忐忑的心坐在对方公司会议室,想着等会的技术面试.技术总监此时走来,与你简单交谈后.... 技术:你对GC垃圾回收机制了解的怎么样? 你:还行,有简单了解过. 技 ...
- STM32F103ZET6通用定时器
1.通用定时器简介 通用定时器是由一个可编程预分频器驱动的16位自动装载计数器构成.通用定时器可以应用于多种场合,如测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM).使用通用定时 ...
- python--django中一些有用的工具引入路径
django.shortcuts render:渲染前端页面 redirect:跳转到其他页面 django forms:表单验证 # 定义 class Form(forms.Form): name ...