String类的使用

1. String类:不可变的字符序列(如:String str = "atguigu"; str += "javaEE")

    1).关注于String常用的方法!
    public int length()返回字符串的长度
    public char charAt(int index)返回在指定index位置的字符。index从0开始
    public boolean eauals(Object anObject)比较两个字符串是否相等,返回true或false
    public int compareTo(String anotherString)比较返回int型值,用作排序用
    public int indexOf(String s)返回s字符串在当前字符串中首次出现的位置。若没有返回-1;
    public int indexOf(String s, int startpoint)返回s字符串从当前字符串startpoint位置开始出现的位置
    public int lastIndexOf(String s)返回s字符串最后一次在当前字符串中出现的位置。若无返回-1
    public int lastIndexOf(String s, int startpoint)返回s字符串从当前字符串startpoint位置开始,最后一次出现的位置
    public boolean startWith(String prefix)判断当前字符串是否以prefix开始
    public boolean endWith(String suffix);判断当前字符串是否以suffix结束
    public boolean regionMaches(int firstStart, String other, int otherStart)
    判断当前字符串从firstStart开始的子串与另一个字符串other从otherStart开始。length长度的字符串是否相等
    
    public String substring(int startpoint)返回从start开始的字符串
    public String substring(int start, int end)返回从start开始到end结束的一个左闭右开的字符串包括start,不包括end,
    public String replace(char oldChar, char newChar)将一个旧的字符修改为一个新的字符
    public String replaceAll(String old, String new)将所有旧的字符修改为新的字符
    public String trim()去除当前字符串中首尾出现的空格,若有多个,就取出多个
    public String concat(String str)连接当前字符串与str
    public String[] split(String regex)将按照regex将当前字符串拆分,拆分为多个字符

package com.dayuanit.java;

public class TestString {
	public static void main(String[] args) {
		String str1 = "JavaEE";
		String str2 = "JavaEE";
		String str3 = new String("JavaEE");//创建两个对象
		String str4 = "JavaEE" + "Android";
		String str5 = "Android";
		String str6 = str1 + str5;
		str5 = str5 + "Handoop";//字符串长度不可变,在常量池重新造个对象
		String str7 = str6.intern();//连接字符串
		String str8 = "JavaEEAndroid";
		System.out.println(str1 == str2);//true
		System.out.println(str1 == str3);//false
		System.out.println(str1.equals(str3));//true

		System.out.println(str4 == str6);//false
		System.out.println(str4.equals(str6));//true
		System.out.println(str7 == str4);//true
		System.out.println(str4 == str8);//true
		
		Person p1 = new Person("AA");
		Person p2 = new Person("AA");
		System.out.println(p1.name = p2.name);//true	
	}	
}
class Person {
	String name;
	Person(String name) {
		this.name = name;
	}
}

    2.String类与基本数据类型、包装类;与字符数组、字节数组;
     * 1.字符串 与基本数据类型、包装类之间转换
     * ①字符串 --->基本数据类型、包装类:调用相应的包装类的parseXxx(String str);
     * ①基本数据类型、包装类--->字符串:调用字符串的重载的valueOf()方法
     * 
     * 2.字符串与字节数组间的转换
     * ①字符串---->字节数组:调用字符串的getBytes()
     * ②字节数组---->字符串:调用字符串的构造器
     * 
     * 3.字符串与字符数组间的转换
     * ①字符串---->字符数组:调用字符串的toCharArray();
     * ②字符数组---->字符串:调用字符串的构造器
       4.String与StringBuffer的转换
       ①String --->StringBuffer:使用StringBuffer的构造器:new StringBuffer(String str);
       ②StringBuffer----->String:使用StringBuffer的toString()方法    

	@Test
	public void test5(){
		//1.字符串 与基本数据类型、包装类之间转换
		String str1 = "123";
		int i = Integer.parseInt(str1);
		System.out.println(i);
		String str2 = i + "";
		str2 = String.valueOf(i);
		System.out.println(str2);
		System.out.println();
		//2.字符串与字节数组间的转换
		String str = "abcd123";
		byte[] b = str.getBytes();
		for(int j = 0;j < b.length;j++){
			System.out.println((char)b[j]);
		}
		String str3 = new String(b);
		System.out.println(str3);
		System.out.println();
		//3.字符串与字符数组间的转换
		String str4 = "abc123中国人";
		char[] c = str4.toCharArray();
		for(int j = 0;j < c.length;j++){
			System.out.println(c[j]);
		}
		String str5 = new String(c);
		System.out.println(str5);
	}

  3. StringBuffer类:可变的字符序列
   StringBuilder类:可变的字符序列,jdk5.0新加入的,效率更高,线程不安全。效率要高于StringBuffer.
    常用的方法:添加:append(...)  删除 delete(int startIndex, int endIndex)  修改:setCharAt(int n ,char ch)  查询:charAt(int index)
            插入:insert(int index, String str)  反转reverse()  长度:length()

package com.atguigu.java;

import java.util.ArrayList;

import org.junit.Test;

public class TestStringBuffer {
	/*
	 * 对比String,StringBuffer,StringBuilder三者在添加上的效率:
	 * 效率从高到底: StringBuilde > StringBuffer > String
	 */
	@Test
	public void test3(){
		String text = "";
		long startTime = 0L;
		long endTime = 0L;
		StringBuffer buffer = new StringBuffer("");
		StringBuilder builder = new StringBuilder("");
		
		startTime = System.currentTimeMillis();
		for(int i = 0;i<20000;i++){
		buffer.append(String.valueOf(i));}
		endTime = System.currentTimeMillis();
		System.out.println("StringBuffer的执行时间:"+(endTime-startTime));
		
		startTime = System.currentTimeMillis();
		for(int i = 0;i<20000;i++){
		builder.append(String.valueOf(i));}
		endTime = System.currentTimeMillis();
		System.out.println("StringBuilder的执行时间:"+(endTime-startTime));
		
		startTime = System.currentTimeMillis();
		for(int i = 0;i<20000;i++){
		text = text + i;}
		endTime = System.currentTimeMillis();
		System.out.println("String的执行时间:"+(endTime-startTime));

	}
	
/*
 * java.lang.StringBuffer和StringBuilder:代表可变的字符序列,可以对字符串内容进行增删
 * 
 *  StringBuffer append(String s),   StringBuffer append(int n) ,  
 StringBuffer append(Object o) ,  StringBuffer append(char n),
 StringBuffer append(long n),  StringBuffer append(boolean n),
 StringBuffer insert(int index, String str) 
 public StringBuffer reverse() :反转此StringBuffer
 StringBuffer delete(int startIndex, int endIndex) 
 public char charAt(int n )
 public void setCharAt(int n ,char ch)
 StringBuffer replace( int startIndex ,int endIndex, String str) 
 public int indexOf(String str)
 public String substring(int start,int end)
 public int length()

 总结:添加:append() 删除:delete(int i,int j) 修改:setCharAt(int index,char ch) 查 charAt(int n);
 插入:insert(int index,String str)  反转:reverse() 长度:length()

 */
	@Test
	public void test1() {
		StringBuffer sb = new StringBuffer();
		System.out.println(sb.length());
		sb.append("abc").append("123").append(true);

		// ArrayList list = new ArrayList();
		System.out.println(sb); // HK WC
		sb.insert(3, "hello");
		System.out.println(sb);

		StringBuffer sb1 = sb.reverse();
		System.out.println(sb1);
		System.out.println(sb);
	}
}

 

转载于:https://my.oschina.net/u/3544282/blog/1305848

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值