一、连接字符串

  1、连接多个字符串

    使用“+”运算符可以实现连接多个字符串的功能。“+” 运算符可以连接多个运算符并产生一个 String 对象。

  2、连接其他数据类型

    字符串与其他基本数据类型进行连接,会将这些数据直接转换成字符串。

  3、public String concat(String str)

    将指定的字符串连接到该字符串的末尾。

   Demo:

 public static void main(String[] args) {
String str1 = "Hello";
String str2 = "Java"; // 使用"+" 运算符连接
System.out.println(str1+" "+str2); // Hello Java int booktime = 4;
double practice = 4.5;
// 连接不同数据类型的字符串
System.out.println("我每天花费"+booktime+"小时看书,"+practice+"小时练习"); // 我每天花费4小时看书,4.5小时练习 // concat:将字符串连接到该字符串尾部。
System.out.println(str1.concat(" World")); // Hello World }

二、字符串的比较

  1、==:比较对象的地址

    只有两个字符串的常量对象比较时才会返回 true,其他的都是 false。

  2、public boolean equals( Object anObject)

    此方法将此字符串与指定对象进行比较,严格区分大小写。因为 String 类型重写了 Object的 equals。

  3、public boolean equalsIgnorCase(String anOtherString)

       将此字符串与指定字符串对象比较,忽略大小写。

    Demo:

 public static void main(String[] args) {

 // 创建字符串对象
String s1 = "hello";
String s2 = "hello";
String s3 = "HELLO"; // boolean equals(Object obj):比较字符串的内容是否相同
System.out.println(s1.equals(s2)); // true
System.out.println(s1.equals(s3)); // false //boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
System.out.println(s1.equalsIgnoreCase(s2)); // true
System.out.println(s1.equalsIgnoreCase(s3)); // true }

        注意:

      a、== 是进行对象的地址值比较,比较字符串的内容用 equal 方法。

      b、在使用 equal 的时候,如果比较双方一个常量一个变量,推荐把常量字符串写在前面,因为一旦变量为 null ,会报空指针异常。

    扩展:Object 是” 对象”的意思,也是一种引用类型。作为参数类型,表示任意对象都可以传递到方法中

   4、大小比较

    String 类型实现了 Comparable 接口,重写了 compareTo 方法,严格区分大小写,会依次比较对应位置的字符。

    如:hello和Hello,先[0]位置的h和H,h>H,就直接认定为hello>Hello

           hello和hella,先[0][1][2][3]比较,都一样,最后到[4]o>a,认定hello>hella

      hello和helloworld,发现前面都一样,长的大

  5、大小比较:不区分大小写

    String 类提供了一个方法 compareToIgnoreCase,可以忽略大小写比较

  6、按照每个国家的语言校对顺序

    java.text.Collator:Collator 类执行区分语言环境的 String 比较。使用此类可为自然语言文本构建搜索和排序例程。

    Collator实现了Comparator接口 ,Collator是抽象类,不能直接创建对象,它有一个直接子类RuleBasedCollator。

    Collator内部提供了一个静态方法,可以获取一个它的子类对象。

    Demo:

   @Test
public void test1(){
String[] arr = {"张三","李四","王五","赵六","钱七"};
//希望按照拼音顺序,字典顺序
Arrays.sort(arr, Collator.getInstance());//默认语言环境,因为现在的操作系统的平台是中文win
System.out.println(Arrays.toString(arr));
}   @Test
public void test2(){
String[] arr = {"张三","李四","王五","赵六","钱七"};
//希望按照拼音顺序,字典顺序
Arrays.sort(arr, Collator.getInstance(Locale.CHINA));//Locale.CHINA指定语言环境
System.out.println(Arrays.toString(arr));
}

三、获取字符串长度与查找的方法

  1、public int length()

    返回此字符串的长度,因为String的内部(JDK1.9之前)用char[]实现,这个长度就是value数组的长度。

  2、public int indexof(String str)

    返回指定子字符串第一次出现在该字符串内的索引,如果没有检索到,返回 -1。

  3、public int lastIndexof(String str)

    返回指定子字符串在此字符串中最后一次出现处的索引位置,如果没有检索到,返回 -1。

  4、public boolean contains(CharSequence str)

     当且仅当此字符串包含指定的 char 值序列时,返回 true。

   Demo:

 public static void main(String[] args) {
String s = "Hello World"; // int length :获取字符串的长度,其实也就是字符个数
System.out.println(s.length()); // 11 //char charAt(int index) 获取指定索引处的字符
System.out.println(s.charAt(0)); // H //int indexOf(String str):获取str在字符串对象中第一次出现的索引,没有返回‐1
System.out.println(s.indexOf("o")); // 4 //int lastIndexOf(String str):获取str在字符串对象中最后一次出现的索引,没有返回‐1
System.out.println(s.lastIndexOf("rl")); // 8 //boolean contains(String str):查看指定的字符串是否在该字符串中,存在为true,不存在为 false
System.out.println(s.contains("Wo")); // true
}

四、与 char 相关

  1、char[] toCharArray()

       将此字符串转换为新的字符数组。

  2、char charAt(index)

      返回指定索引处的 char 值

  3、String(char[] arr)

     通过一个 char数组构建一个字符串对象

  4、String(char[] arr, int offset, int count)

       通过一个 char 数组,截取其中的一端,构建一个字符串对象

五、与 Byte 相关(和编码与解码相关)

  1、byte[] getBytes() 编码方法

byte[] getBytes():编码的方法,使用平台默认的字符编码进行编码

byte[] getBytes(编码方式):使用指定的编码格式进行编码

    编码:对于ASCII码范围内(0~127),无论用什么编码方式,结果都是一样的,一个字符对应一个字节的编码值

          对于其他的字符,编码,结果不一定是几个字节,例如汉字:

          UTF-8:变长的,但是大多数汉字都是3个字节

        GBK、GB2312:固定2个字节

        ISO8859-1:不支持中文,所有字符都变为1个字节

    Demo:

 @Test
public void test01(){
String str = "abc";
byte[] bytes = str.getBytes();
System.out.println(Arrays.toString(bytes));//[97, 98, 99]
} @Test
public void test02() throws UnsupportedEncodingException{
String str = "你好,世界";
byte[] bytes = str.getBytes("GBK");
System.out.println(Arrays.toString(bytes)); String string = new String(bytes,"GBK");
System.out.println(string);
}

  2、new String() 解码方法

new String(字节数组)

new String(字节数组,编码方式)

  扩展:产生乱码原因:

    (1)编码与解码字符集不一致

    (2)缺字节,如使用ISO8859-1编码不支持中文,就会造成缺字节现象。

四、转换功能的方法

  1、public String toLowerCase()

      使用默认语言环境的规则将此 String 中的所有字符都转换为小写。

  2、public String toUpperCase()

     使用默认语言环境的规则将此 String 中的所有字符都转换为大写。

   Demo:

 public static void main(String[] args) {
String str = "abcdefg"; // char[] toCharArray():把字符串转换位字符数组
char[] chars = str.toCharArray();
System.out.println(Arrays.toString(chars)); // [a, b, c, d, e, f, g] // byte[] getBytes():把字符串转换为字节数组
byte[] bytes = str.getBytes();
System.out.println(Arrays.toString(bytes)); // [97, 98, 99, 100, 101, 102, 103] String str2 = "iT,i Love You"; // String replace(old str,new str):把匹配的原来的字符串用新的字符串替换掉
String replace = str2.replace("i", "I");
System.out.println(replace); // IT,I Love You //String toLowerCase():将此 String 中的所有字符都转换为小写。
System.out.println(str2.toLowerCase()); // it,i love you //String toUpperCase():将此 String 中的所有字符都转换为大写。
System.out.println(str2.toUpperCase()); // IT,I LOVE YOU }

     扩展:CharSequence 是一个接口,也是一种引用类型。作为参数类型,可以把String对象传递到方法中。

五、截取分割字符串的方法

  1、public String subString(int beginIndex)

    返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。

  2、public String subString(int beginIndex,int endIndex)

    返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。(左闭右开区间)

六、拆分

  1、public String split(String regex)

     将此字符串按照给定的regex(规则,可以是正则表达式)拆分为字符串数组。

    注意:如果按照英文句点“.”进行切分,必须写"\\."(两个反斜杠)

   Demo:

 public static void main(String[] args) {
String str = "aa|bb|cc|dd|ee"; //String subString(int start):从start开始截取字符串到字符串结尾
System.out.println(str.substring(6)); // cc|dd|ee //String subString(int start,int end):从start到end截取字符串。含start,不含end。
System.out.println(str.substring(2,8)); // |bb|cc //String split(string regex):按照给定的regex(规则)拆分为字符串数组。
String[] split = str.split("|"); System.out.println(Arrays.toString(split)); //[a, a, |, b, b, |, c, c, |, d, d, |, e, e] }

七、匹配方法

  1、boolean matches(正则表达式)

    用于校验某个字符串是否符合XXX的规则

    Demo:

 public void test2(){
String str = "12a345";
//简单判断是否全部是数字,这个数字可以是1~n位 //正则不是Java的语法,它是独立与Java的规则
//在正则中\是表示转义,
//同时在Java中\也是转义
boolean flag = str.matches("\\d+");
System.out.println(flag);
}

八、替换

  1、String replace(target, value)

    将与target匹配的字符串使用value字符串替换。(如果没有可以匹配的字符,将原字符串返回)不支持正则表达式。

  2、String replaceAll(String regex, String replacement)

    使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

  3、String replaceFirst(String regex, String replacement)

    用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。

九、其他方法

  1、public String trim()

        返回字符串的副本,忽略前导空白和尾部空白。

  2、boolean isEmpty()

    是否是空字符串

  2、public boolean startsWith(String prefix)

    测试此字符串是否以指定的前缀开始。

  3、public boolean endsWidth(String suffix)

     测试此字符串是否以指定的后缀结束。

  4、public int campareTo()

     按字典顺序比较两个字符串。

  5、public int compareToIgnoreCase()

    按字典顺序比较两个字符串,忽略大小写。

    注意:该比较基于字符串中各个字符的 Unicode 值,按字典顺序将此 String对象表示的字符序列与参数字符串所表示的字符序列进行比较。

       如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为 0。

    Demo:

  public static void main(String[] args) {
String str = " Hello World "; //String trim():忽略字符串前导空白和尾部空白。
System.out.println(str.trim()); // Hello World // boolean startswith测试此字符串是否以指定的前缀开始。
System.out.println(str.startsWith(" He")); // true
System.out.println(str.startsWith("he")); // false // boolean endswith测试此字符串是否以指定的后缀结束。
System.out.println(str.endsWith("ld ")); // true
System.out.println(str.endsWith("ll")); // false //
String str2 = "hello java";
//compareTo()字典顺序比较两个字符串。
System.out.println(str2.compareTo(str)); // 72
// compartToIgnoreCase()字典顺序比较两个字符串,忽略大小写
System.out.println(str2.compareToIgnoreCase(str)); //
}

  

Java 字符串(二)字符串常用操作的更多相关文章

  1. python字符串、元组常用操作

    常用字符串操作函数: #Author:CGQ name="I \tam ChenGuoQiang" print(name.capitalize())#首字母大写,其他都小写 pri ...

  2. Python中字符串有哪些常用操作?纯干货超详细

  3. 读Hadoop3.2源码,深入了解java调用HDFS的常用操作和HDFS原理

    本文将通过一个演示工程来快速上手java调用HDFS的常见操作.接下来以创建文件为例,通过阅读HDFS的源码,一步步展开HDFS相关原理.理论知识的说明. 说明:本文档基于最新版本Hadoop3.2. ...

  4. .Net Excel操作之NPOI(二)常用操作封装

    一.Excel数据导出常用操作 1.指定表头和描述 2.指定数据库中读出的数据集合 二.ExcelExport封装 /// <summary> /// Excel常用的表格导出逻辑封装 / ...

  5. java集成开发环境常用操作集

    1.简单搭建maven集成开发环境 一.     Jetty安装 下载地址(包涵windows和Linux各版本,Jetty9需要JDK7):http://download.eclipse.org/j ...

  6. java:Cookie(常用操作),Cookie和Session免登录实例

     1.常用操作: package cn.zzsxt.lee.web.cookie; import java.io.IOException; import javax.servlet.ServletEx ...

  7. C++字符串string类常用操作详解(一)【初始化、遍历、连接】

    代码示例: #include <iostream> #include "string" using namespace std; //字符串初始化 void strIn ...

  8. Activiti工作流(二)之常用操作

    前面介绍了Activiti工作流的基本操作,但是在实际应用过程中,往往不满足项目需求,因此还需要了解一些其他的功能比如:连线.排他网关.并行网管.流程变量.个人任务及组任务的三种发布方式. 下面将介绍 ...

  9. java基础之数组常用操作

    常用的对数组进行的操作 1.求数组中最大值,最小值 思路:假设下标为0的元素是最大值,遍历数组,依次跟max进行比较,如果有元素比这个max还大,则把这个值赋给max.最小值同样 public cla ...

  10. Java进阶(二)文件读操作

    本文以实际的读取文件为例子,介绍流的概念,以及输入流的基本使用. 按照前面介绍的知识,将文件中的数据读入程序,是将程序外部的数据传入程序中,应该使用输入流--InputStream或Reader.而由 ...

随机推荐

  1. turtle模块

    turtle(海龟)绘图用法 import turtle -->调出turtle库 setup()-->设置窗体大小和位置 turtle.setup(width,height,startx ...

  2. Django API 自定义状态码

    class BaseResponse(object): def __init__(self): self.code = 1000 self.data = None self.error = None ...

  3. Spring Cloud微服务安全实战_3-1_API安全 常见的安全机制

    本章讲解,在不考虑微服务,只考虑一个简单的API ,如何保证这个API的安全? 三个问题: 1,什么是API ? 2,API安全的要素有哪些? 3,API安全基本机制 一.什么是API 百度百科:AP ...

  4. es4x 调用其他三方jar 包

    es4x 使用了graalvm 作为运行时环境,所以即拥有vertx 的强大,又拥有了与java 代码便捷的通信能力 以下是一个简单的测试,同时也简单说明下es4x 的es4x-launcher.ja ...

  5. gnome 3 插件设置

    插件安装及管理方法 应该需提前在gnome-tweaks中打开user-theme,重启电脑后才可找到Add-ons Debian9 下在应用商店插件add-ons里进行选择安装,在应用商店已安装应用 ...

  6. JS获取对象属性名小结

    最近面试遇到问如何获取对象全部属性名的方法,总结一下: 对象属性类型分类: 1.ESMAScript分类 数据类型 又分为可枚举和不可枚举类型 访问器类型 2.上下文分类 原型属性 实例属性 1.列举 ...

  7. spring学习-ApplicationContext-spring上下文深入理解

    4月份开始复习一遍spring相关知识.让自己巩固一下spring大法的深奥益处,所以就看了大佬的博客,转载留下来日后继续研读.认为重点的标记为红色 以下文章内容转载自:http://www.cnbl ...

  8. 聊聊对称/非对称加密在HTTPS中的使用

    目前常用的加密算法主要分成三类: 对称加密算法 非对称加密算法 消息摘要算法 在互联网中,信息防护主要涉及两个方面:信息窃取和信息篡改.对称/非对称加密算法能够避免信息窃取,而消息摘要算法能够避免信息 ...

  9. Laravel自动备份到阿里云OSS

    背景 之前做备份时,主要是拿一台备份机对生产机做数据库做主备,用rsync同步上传的图片,文件.随着项目的增多,许多小项目都这样做感觉太过繁琐,每次都要在2台机器之间配置,同时单独拿一台机器做备份成本 ...

  10. Docker是什么?可以用Docker做什么

    其实可以把Docker理解成一个专门为应用程序与执行环境的轻型虚拟机. Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了 ...