Java String类的使用详解

Java String类

  • 一、String类概述及特点
    • 1.概述
    • 2.特点
  • 二、字符串的创建及常量池的概念
    • 1.常用的字符串的创建形式
    • 2.常量池
  • 三、String类常用方法
    • 1.字符串比较的相关方法
    • 2.字符串获取的相关方法
    • 3.字符串截取的相关方法
    • 4.字符串转化的相关方法
    • 5.字符串分割的相关方法


一、String类概述及特点

1.概述

  1. String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。

2.特点

  1. 字符串是常量,它们的值在创建之后不能更改
  2. 字符串缓冲区支持可变的字符串。因为String 对象是不可变的,所以可以共享
  3. 字符串效果上相当于char[]数组,但是底层原理是byte[]数组

二、字符串的创建及常量池的概念

1.常用的字符串的创建形式

直接使用双引号创建:

直接写上双引号,就是创建了String对象

String str = "abc";
System.out.println("直接使用双引号创建的字符串为:"+str);//结果为:abc

四种构造方法创建:

1.public String():创建一个空白字符串

//初始化一个新创建的 String 对象,使其表示一个空字符序列。
String str = new String();
System.out.println("使用public String()创建的字符串为:"+str);

2.public String(String str):使用有参方法创建字符串

//初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。
String str = new String("abc");
System.out.println("使用public String(String str)创建的字符串为:"+str);//结果为:abc

3.public String(char[] array):根据字符数组的内容创建对应的字符串

//分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。
char[] charArray = {'a','b','c'};
String str = new String(charArray);
System.out.println("使用public String(char[] array)创建的字符串为:"+str);//结果为:abc

4.public String(byte[] array):根据字节数组的内容创建对应的字符串

//通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
byte[] byteArray = {97,98,99};
String str = new String(byteArray);
System.out.println("使用public String(byte[] array)创建的字符串为:"+str);//结果为:abc

在ASCII码表中,65代表字母A,97代表字母a
了解更多关于ASCII码表的知识可以点击这里

2.常量池

字符串常量池(在堆内存中)

  • 直接用双引号定义的字符串在常量池
  • 使用构造方法new出来的就在中另开辟一块内存空间
    .
    内存示意如下图
    Java String类的使用详解_第1张图片

三、String类常用方法

对于基本数据类型 == 是对数值的比较
对于引用数据类型 == 是对地址值的比较

1.字符串比较的相关方法

(1)equals方法,比较字符串内容

方法信息:
public boolean equals(Object obj)
参数可以是任何对象,只有参数是一个字符串并且内容相同才会返回true

//定义三个字符串
String str1 = "Hello";
String str2 = new String("Hello");
String str3 = "hello";

//比较定义方式不同,但是内容相同的字符串
System.out.println(str1.equals(str2));//结果为:true

//比较定义方式相同,但是内容不同的字符串
System.out.println(str1.equals(str3));//结果为:false

//使用 "" 定义字符串,直接.equals方法
System.out.println("Hello".equals(str1));//结果为:true

如果使用equals()比较一个常量一个变量,通常常量在前,变量在后

String str4 = null;
//System.out.println(str4.equals(""));
//不推荐,如果变量为空,会报java.lang.NullPointerException错误
System.out.println("".equals(str4));//结果为:false

(2)equalsIgnoreCase方法忽略英文大小写进行内容比较

方法信息:
public boolean equalsIgnoreCase()

String str5 = "Java";
String str6 = "java";
System.out.println(str5.equals(str6));//结果为:false
System.out.println(str5.equalsIgnoreCase(str6));//结果为:true

2.字符串获取的相关方法

(1)length方法获取字符串长度

方法信息:
public int length()

int l = "qwertyuiopasdfghjkl".length();
System.out.println("字符串长度为:"+l);
//结果为:字符串长度为:19

(2)concat方法,将参数字符串与原字符串进行拼接

方法信息:
public String concat(String str)

String str1 = "Hello";
String str2 = "World";
System.out.println(str1.concat(str2));
//结果为:HelloWorld

(3)charAt方法,获取指定索引位置的单个字符

方法信息:
public char charAt(int index)

char ch = "Hello".charAt(1);
System.out.println("1号索引位置的元素为:"+ch);
//结果为:1号索引位置的元素为:e

(4)indexOf方法,查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1

方法信息:
public int indexOf(String str)

String str3 = "HelloWorld";
String str4 = "ll";
String str5 = "abc";
System.out.println(str4+"第一次在"+str3+"中出现的索引位置为:"+str3.indexOf(str4));
//结果为:ll第一次在HelloWorld中出现的索引位置为:2
System.out.println(str5+"第一次在"+str3+"中出现的索引位置为:"+str3.indexOf(str5));
//结果为:abc第一次在HelloWorld中出现的索引位置为:-1

3.字符串截取的相关方法

(1)substring方法(一个参数),截取从参数索引开始一直到字符串的最后
第几个元素与索引n的关系为 n+1

方法信息:
public String substring(int index)

String str1 = "HelloWorld";
String str2 = str1.substring(5);
System.out.println(str2);//结果为:World

(2)substring方法(两个参数),截取[begin,end)索引位置的字符串

方法信息:
public String substring(int begin ,int end)

String str1 = "HelloWorld";
String str3 = str1.substring(2,5);
System.out.println(str3);//结果为:llo

4.字符串转化的相关方法

(1)toCharArray方法,将字符串拆分为字符数组

方法信息:
public char[] toCharArray()

//将字符串拆分为字符数组
String str1 = "HelloWorld";
char[] chArr = str1.toCharArray();

(2)getBytes方法,将当前串转换为底层的字符数组

方法信息:
public byte[] getBytes()

//将字符串拆分为字节数组
String str1 = "HelloWorld";
byte[] byArr = str1.getBytes();

(3)replace方法,将字符串的某一字符全部替换为新字符

方法信息:
public String replace(CharSequence oldString ,CharSequence newString)
第一参数为旧字符,第二个参数为新字符

//将 "l" 替换为 "*"
String str1 = "HelloWorld";
String str2 = str1.replace("l", "*");
System.out.println(str1);//HelloWorld
System.out.println(str2);//He**oWor*d

5.字符串分割的相关方法

split方法按照参数的规则,分割字符串

方法信息:
public String[] split(String regex)
参数regex实际为正则表达式
了解正则表达式点这里

String str1 = "aaa,bbb,ccc";
String[] stringArray = str1.split(",");//参数为正则表达式
for (int i = 0; i < stringArray.length; i++) {
      System.out.println(stringArray[i]);
}
//结果为:
//aaa
//bbb
//ccc

你可能感兴趣的:(#,Java常用API)