【详细+超基础】Java-学习笔记 13

本文详细介绍了Java中的字符串基础知识,包括String类的构造方法、常用成员方法,如长度获取、比较、截取、替换等操作。同时,还讲解了可变字符串缓冲类StringBuffer的使用,以及如何降低内存消耗提高效率。此外,还提到了StringTokenizer类用于字符串分解的用法。
摘要由CSDN通过智能技术生成

在这里插入图片描述

【详细+超基础】Java-学习笔记

Java学习笔记系列——孙不坚1208
【详细+超基础】Java-学习笔记 01
【详细+超基础】Java-学习笔记 02
【详细+超基础】Java-学习笔记 03
【详细+超基础】Java-学习笔记 04
【详细+超基础】Java-学习笔记 05
【详细+超基础】Java-学习笔记 06
【详细+超基础】Java-学习笔记 07
【详细+超基础】Java-学习笔记 08
【详细+超基础】Java-学习笔记 09
【详细+超基础】Java-学习笔记 10
【详细+超基础】Java-学习笔记 11
【详细+超基础】Java-学习笔记 12
【详细+超基础】Java-学习笔记 13
【详细+超基础】Java-学习笔记 14
【详细+超基础】Java-学习笔记 15
Java学习笔记系列持续更新中…

九、常用类库

String

用String创建的字符串是固定的 ,不可改变的对象,每一个字符串常量都是字符串类String的一个对象。

String类的常用的构造方法:
1.遇到双引号" "自动创建String类的对象
String s = "hello";  
String w = "world";
2.使用构造方法创建String类的对象
1) public String ( );  // 生成一个空字符串
	String s = new String (); 
2) public String (String str); // 创建一个以str为内容的字符串
   	String s = new String ("hello world");
3) public String (char a[]); // 将字符数组a中的字符创建一个新字符串
	char a[] = {'a','b','c'};
	String s = new String (a); 
4) public String (char a[], int startIndex,int count); // 将字符数组a中第startIndex个字符串开始的count个字符组合起来创建为一个新字符串。 startInder从零开始。
	char a[] ={'a','b','c','d','e'};
	String s=new string(a,2,2);
5) public String (byte [] array); // 将字节数组array创建一个新的字符串
	byte[] a={ 54,55,56};
	String s=new String (a); // s="678",'6'的unicode码是54
6) public String (byte [] array,int offset,int length); // 将字节数组array的第offset个数组元素开始的length个字节创建一个新字符串。
	byte[] a={54, 55, 56};
	String s=new String (a,1,2); // s="78";
注意:
    通过双引号和String的构造方法创建字符串对象方式的区别:通过双引号自动创建的字符串对象存在于常量池,通过构造方法创建字符串对象存在于堆内存中。
String类的对象的常用成员方法
1) 获取字符串的长度
    public int length(); // 获取字符串长度
 	int n ="hello world".length();
2) 字符串的比较
    public boolean equals(String s); // 判断字符串的内容是否相同
	String first =new String ("hello");
	String second =new String ("abc");
	boolean bol=first.equals(second); 
	
	public boolean equalsIgnoreCase(String s); // 判断字符串是否相同
	String first= new String ("ABC");
	String second= new String ("abc");
	boolean bol=first.equalsIgnoreCase(second);

	public boolean startsWith(String prefix); // 判断字符是否以字符串prefix为前缀
	String first ="hello";
	first.startsWith("he");
	
	public boolean  endsWith(String suffix); // 判断字符是否以字符串prefix为后缀
	String first ="hello";
	first.startsWith("lo");

	public int compareTo(String s); // 按照字典顺序进行字符串的计较
	String str="abc"; 
	String s="cde";
	int k=str.compareTo(s);			// k=-2,a比b的Unicode码少2
    int z=str.compareTo("abc");	 	// z=0;
	int i=str.compareTo("abcdef");	// i=-3,abc比abcdef的长度少3

	注意: 
        1.使用"=="判断两个字符串是否相同,是比较两个字符串的引用是否相同,即地址是否相同,使用equals方		 法比较的才是字符串的内容是否相同
        
3) 	public String trim(); // 返回字符串的副本,去掉前导空格和尾部空格   

4) 字符串的检索
	public int indexOf(String s); 
	// 从第一个字符开始寻找s子串首先出现的位置
	public int indexOf(String s,int startpoint);
	// 从第startpoint个字符开始寻找s子串首先出现的位置
	public int lastIndexOf(String s);
	// 从第一个字符开始寻找s子串最后出现的位置
	public int lastIndexOf(String s,int startpoint); 
	// 从第startpoint个字符开始寻找s子串最后出现的位置
	
	String s="hello world hello java";
	s1=s.indexOf("hello");   	// s1=0     从0开始算,第一个字符的索引是0
	s2=s.indexOf("hello",5); 	// s2=12
	s3=s.lastIndexOf("lo",1);	// s3=15 

5) 字符的检索
    public int indexOf(int char); 
	// 返回从第一个字符开始寻找字符char首次出现的位置
	public int indexOf(int char,int startpoint);
	// 从第startpoint个字符开始寻找字符char首先出现的位置
	public int lastIndexOf(int char );
	// 从第一个字符开始寻找字符char最后出现的位置
	public int lastIndexOf(int char,int startpoint); 
	// 从第startpoint个字符开始寻找字符char最后出现的位置

6) 截取字符串
    public String substring (int startpoint); 
	// 返回从第startpoint个位置开始到结束截取的字符串
	public String substring (int start,int end);
    // 返回从第start个位置到第end个位置(不包括end位置)开始到结束截取的字符串
	
7) 替换
    public String replace(char oldChar,char newChar);
	// 用新字符串newChar替换字符串当中的旧字符串oldChar,返回替换后的新字符串
	public String replace(String regex, String newString);
 	// 用新字符串newString替换字符串中所有的旧字符串regex,返回替换后的新字符串

	String s="i mist thssp";
	String temp=s.replace('t','s');
 	// temp的值为"i miss sheep"
	
8) 字符串连接
    public String concat(String s)
    String str="hello";
	String s="java";
	String k=str.concat(s);

9) 字符串向字符数组转换
    public void getChar(int start,int end,char c[],int offset);
	// 将字符串从start到(end-1)位置的字符复制到字符数组c中,并从c的第offset位置开始存放这些字符
	public char[] toCharArray();
	// 将字符串中的全部字符复制到字符数组当中,返回该数组的引用
	public byte[] 
    // 将字符串转成字节数组
        
10) public String [] split(String regex); // 返回基于regex拆分此字符串后形成的字符串数组
	String s ="hello world";
	String [] sArray=s.split(" "); // 按空格拆分字符串s
	for (int i=0;i<aArray.length;i++ ){
        System.out.print(sArray[1]);
    }

11) public static String valueOf(type var);
	// valueOf方法:将var转换成字符串,type可以是任何基本类型
	String str =String.valueOf(120);
	// str的值是“120”

StringBuffer

String 定义的字符是不可改变的,如果对 String 对象作出改变,就会改变生成新对象,这种操作方式非常消耗内存,这种操作方式比较消耗内存,为了降低内存消耗和提高系统速度, Java提供了可变字符串缓冲类——StringBuffer。

StringBuffer可以实现多次增删改查字符串内容而不产生新对象,每一个StringBuffer对象都有初始容量,只要字符长度不超过其容量,就不需要分配新的内部缓冲容量。

StringBuffer的构造方法
public StringBuffer(); // 创建一个空的StringBuffer类的对象
public StringBuffer(int length); // 创建长度为length的StringBuffer对象
public StringBuffer(String str); // 用字符串str作参数进行创建StringBuffer对象

String的大多数方法StringBuffer都可以使用,在此之上,StringBuffer增加了String没有的删除字符串的方法。

StringBuffer的成员方法
1) StringBuffer append(type x)
    double d=3.14;
	StringBuffer st= new StringBuffer();
	st.append(true);
	st.append('c').append(d).append(15); // 最终st的值是true3.1415

2)  public char charAt(int n); 获取字符串中索引是n的字符,索引从0开始。
3)  public 

String Tokenizer

StringTokenizer类用于将一个字符串分解成若干个子串。

StringTokenizer的构造方法
public StringTokenizer (String str); // 构造一个使用默认分隔符解析 str 的StringTokenizer对象,Java默认分隔符包括空格、换行符、回车键、Tab键。
public StringTokenizer (String str); // 构造一个指定分隔符delim 解析 str 的StringTokenizer对象

StringTokenizer s1= new StringTokenizer ("我是 中国人");
StringTokenizer s2= new StringTokenizer ("I,am,a,chengxuyuan",",");
StringTokenizer的成员方法
1) public boolean hasMoreTokens(); // 是否还有分隔符,如果有返回true,没有则返回false;
2) public String nextToken(); // 返回字符串中的下一个字符;
3) public Object nextElement(); 
// 返回字符串的下一个子串,与nextToken 方法类似,不同之处在于本方法的返回值是Object,而不是String。
4) public int countTokens(); // 返回字符串中子串的个数。
案例:
import java.util.StringTokenizer;

public class StringTokenizerDemo {
	public static void main(String []args) {
		String s="123,大家好。hello";
		StringTokenizer s1= new StringTokenizer(s,",。");
		while(s1.hasMoreElements()){
			System.out.println(s1.nextElement());
		}
	}
}
运行结果:
    123
	大家好
	hello

欢迎订阅专栏 请你喝杯java , 希望能给需要帮助的朋友带来方便,同时也希望能得到各位大佬的建议。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

請你喝杯Java

感谢您的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值