目录

  • String类的基本概念
  • String类的实例化方式
  • 1. 直接赋值
  • 2. 利用构造方法实例化
  • String类的常用方法
  • 1.字符与字符串
  • 取出指定索引的字符——使用charAt()方法:
  • 字符数组与字符串的转换:
  • 字符串转换为大写:
  • 2.字节与字符串
  • 字符串与字节数组的转换:
  • 3.字符串比较
  • 相等判断:
  • 4.字符串查找
  • 使用IndexOf()等功能查找:
  • contains()方法的使用、开头结尾判断:
  • 5.字符串替换、截取
  • 字符串替换:
  • 字符串截取:
  • 6.字符串拆分
  • 全部拆分:
  • 指定个数拆分:
  • 复杂拆分:
  • 7.String类中的其他方法
  • 举例:


String类的基本概念

String类的实例化方式

String类的实例化方式有两种

1. 直接赋值

public class StringDemo{
   public static void main(String args[]){
      String str="hello world!";
      System.out.println(str);
   }
}
程序执行结果:hello world!

2. 利用构造方法实例化

public class StringDemo{
   public static void main(String args[]){
     String str=new String("hello world!");
     System.out.println(str);
   }
}
程序执行结果:hello world!

关于两种方法的说明:

1.字符串常量就是String类的匿名对象

public class StringDemo{
   public static void main(String args[]){
      String str="hello";                 //str是对象名称,而"hello"是内容
      System.out.println("hello".equals(str)); //由字符串直接调用equals()函数(内容比较函数)   
   }
}
程序执行结果:true

这个程序最大的特点是直接利用字符串“hello”调用equals()方法,由于equals()方法是String类中定义的,然而类中的方法只有实例化之后才能调用。所以可以说字符串常量是String类的匿名对象。

2.String类采用的是共享设计模式,当代码中使用直接赋值定义一个String类的对象时,会将此字符串对象所使用的匿名对象入池保存,后续如果有其他String类对象使用直接赋值并设置同样内容时,将不会重新开辟新的堆内存空间,而是直接引用。

3.采用构造方法实例化对象(String s=new String(“字符串”)),会开辟两块堆内存空间,其中有一块空间将成为垃圾,并且不会自动入池,但是用户可以使用intern()方法手工入池。

4.字符串一旦定义则不可改变。

String类的常用方法

1.字符与字符串

NO.

方法名称

类型

描述

1

public String(char[]) value

构造

将字符数组变成String类对象

2

public String(char[] value, int offset, int count)

构造

将部分字符数组变为String

3

public char charAt(int index)

普通

返回指定索引对应的字符信息

4

public char[] toCharArray()

普通

将字符串以字符数组的形式返回

取出指定索引的字符——使用charAt()方法:

public class StringDemo{
   public static void main(String args[]){
     String str="helloworld";
     System.out.println(str.charAt(0));
   }
}
程序执行结果:h

字符数组与字符串的转换:

public class StringDemo{
   public static void main(String args[]){
     String str="helloworld";
     char[] data=str.toCharArray();       //把字符串变为字符数组
     for(int x=0;x<data.length;x++){      //循环输出每个字符
        System.out.print(data[x]+"、");
     }
   }
}
程序执行结果:h、e、l、l、o、w、o、r、l、d、

字符串转换为大写:

public class StringDemo{
   public static void main(String args[]){
      String str="hello";
      char[] data=str.toCharArray();
      for(int x=0;x<data.length;x++){
         data[x]-=32;
      }
      System.out.println(String(data));      //将全部字符数组转换为String
      System.out.println(String(data,1,2));  //将部分字符数组转换为String
   }
}
程序执行结果: HELLO
              EL

2.字节与字符串

NO.

方法名称

类型

描述

1

public String(byte[] bytes)

构造

将全部字节数组变成字符串

2

public String(byte[] bytes, int offset, int length)

构造

将部分字节数组变为字符串

3

public byte[] getBytes()

普通

将字符串变为字节数组

4

public byte[] getBytes(String charsetName) throws UnsupportedEncodingException

普通

进行编码转换(IO操作时用到)

字符串与字节数组的转换:

public class StringDemo{
   public static void main(String args[]){
      String str="helloworld";
      byte[] data=str.getBytes();
      for(int x=0;x<data.length;x++){
         data[x]-=32;
      }
      System.out.println(String(data));      //全部转换
      System.out.println(String(data,5,5));  //部分转换
   }
}
程序执行结果:HELLWORLD
             WORLD

3.字符串比较

NO.

方法名称

类型

描述

1

public boolean equals(String anObject)

普通

进行相等判断,它区分大小写

2

public boolean equalsIgnoreCase(String anotherString)

普通

进行相等判断,不区分大小写

3

public int compareTo(String anotherString)

普通

判断两个字符串的大小(按照字符编码比较),此方法的返回值有如下三种结果:=0:表示要比较的两个字符串内容相等; >0:表示大于的结果; <0:表示小于的结果;

相等判断:

public class StringDemo{
   public static void main(String args[]){
     String str1="hello";
     String str2="Hello";
     System.out.println(str1.equals(str2));
     System.out.println(str1.equalsIgnore(str2));
     System.out.println(str1.compareTo(str2));
   }
}
程序执行结果:false
             true
             32

4.字符串查找

NO.

方法名称

类型

描述

1

public boolean contains(String s)

普通

判断指定的内容是否存在

2

public int indexOf(String str)

普通

由前向后查找指定字符串的位置,如果查找到了则返回(第一个字母)位置索引,如果找不到返回-1。

3

public int indexOf(String str, int fromIndex)

普通

由指定位置从前向后查找指定字符串的位置,找不到返回-1

4

public int lastIndexOf(String str)

普通

由后向前查找指定字符串的位置,找不到返回-1

5

public int lastIndexOf(String str, int fromIndex)

普通

从指定位置由后向前查找字符串的位置,找不到返回-1。

6

public boolean startsWith(String prefix)

普通

判断是否以指定的字符串开头

7

public boolean startsWith(String prefix, int toffset)

普通

从指定位置开始判断是否以指定的字符串开头

8

public boolean endsWith(String suffix)

普通

判断是否以指定的字符串结尾

使用IndexOf()等功能查找:

public class StringDemo{
   public static void main(String args[]){
      String str="helloworld";
      System.out.println(str.indexOf("l"));     //返回的是第一个查找到的子字符串的位置
      System.out.println(str.indexOf("l",5));   //从第6个元素开始查找子字符串位置
      System.out.println(str.lastIndexOf("l")); //从后向前查找指定字符串的位置
      if(str.indexOf("world")!=-1){
			System.out.println("可以查询到world");
		}
   }
}
程序执行结果:2
             8
             8
             可以查询到world

contains()方法的使用、开头结尾判断:

public class StringDemo{
	public static void main(String args[]){
		String str="helloworld";
		String str3="##@@hello**";

		if(str.contains("world")){
			System.out.println("可以查询到world");
		}
		//开头、结尾判断
		System.out.println(str3.startsWith("##"));
		System.out.println(str3.startsWith("@@",2));
		System.out.println(str3.endsWith("**"));
	}
}
程序执行结果:可以查询到world
             true
             true
             true

5.字符串替换、截取

NO.

方法名称

类型

描述

1

public String replaceAll(String regex, String replacement)

普通

用新的内容替换掉全部旧的内容

2

public String replaceFirst(String regex, String replacement)

普通

替换首个满足条件的内容

3

public String substring(int beginIndex)

普通

从指定索引截取到结尾

4

public String substring(int beginIndex, int endIndex)

普通

截取部分子字符串的数据

字符串替换:

public class StringDemo{
	public static void main(String args[]){
		String str="helloworld";
		String result1=str.replaceAll("l","_");     //全部替换
		String result2=str.replaceFirst("l","_");   //部分替换
		
		System.out.println(result1);
		System.out.println(result2);
	}
}
程序执行结果:he__oworld
             he_loworld

字符串截取:

public class StringDemo{
	public static void main(String args[]){
		String str="helloworld";
		String result1=str.substring(5);    //从指定索引截取到结尾
		String result2=str.sunstring(0,5);  //截取部分子字符串
		
		System.out.println(result1);
		System.out.println(result2);
	}
}
程序执行结果:world
             hello

6.字符串拆分

NO.

方法名称

类型

描述

1

public String[] split(String regex)

普通

按照指定的字符串进行全部拆分

2

public String[] split(String regex, int limit)

普通

按照指定的字符串进行部分拆分,最后的数组长度就是由limit决定(如果能拆分的结果很多,数组长度才会由limit决定),即:前面拆,后面不拆

全部拆分:

public class StringDemo{
   public static void main(String args[]){
      String str="hello world nihao scdn";
      String[] data=str.split(" ");
      for(int x=0;x<data.length;x++){
         System.out.println(data[x]+"、");
      }
   }
}
程序执行结果:hello、world、nihao、csdn

指定个数拆分:

public class StringDemo{
   public static void main(String args[]){
      String str="hello world nihao scdn";
      String[] data=str.split(" ",2);
      for(int x=0;x<data.length;x++){
         System.out.println(data[x]);
      }
   }
}
程序执行结果:hello
             world nihao csdn

复杂拆分:

public class StringDemo{
   public static void main(String args[]){
      String str="戴风:20|沈哲:21|韩商言:22";
      String[] data=str.split("\\|");       //正则表达式影响,使用\\进行转义
      for(int x=0;x<data.length;x++){
          String[] temp=data[x].split(":");
          System.out.println("姓名:"+temp[0]+",年龄:"+temp[1]);
      }
   }
}
程序运行结果:姓名:戴风,年龄:20
             姓名:沈哲,年龄:21
             姓名:韩商言,年龄:22

7.String类中的其他方法

NO.

方法名称

类型

描述

1

public String concat(String str)

普通

字符串连接,与“+”类似

2

public String toLowerCase()

普通

转小写

3

public String toUpperCase()

普通

转大写

4

public String trim()

普通

去掉字符串中左右两表的空格,中间空格保留

5

public int length()

普通

取得字符串的长度

6

public String intern()

普通

数据入池

7

public boolean isEmpty()

普通

判断是否是空字符串(不是null,而是"",长度0)

关于这些其他方法我就不再多做解释,举一例子说明。

举例:

public class StringDemo{
   public static void main(String args[]){
     String str="  HEl lo  ";
     System.out.println(str.toLowerCase());  //转小写
     System.out.println(str.toUpperCase());  //转大写
     System.out.println("["+str+"]");                //原字符串
     System.out.println("["+str.trim()+"]");         //去掉空格的字符串
     System.out.println("字符串的长度为:"+str.length());
   }
}
程序运行结果:   hel lo
                HEL LO
             [  HEl lo  ]    
             [HEl lo]   
             字符串的长度为:10

以上内容为自己学习过程中的一些见解,欢迎大家留言指正,如果这些内容对你有所帮助请添加关注,后续还有其他内容奉上。