String类

String

  • String 字符串:一组字符序列
  • 一定要记住,String类型的字符串是不可变的串

创建String对象的几个常见方式

String()

String str1 = new String();//是一个""对象

String(“abc”)

String str2 = new String("abc");

直接创建

String str3 = "JAVA";

题目1

public static void main(String[] args) {
		String str1 = new String();//是一个""对象
		String str2 = "";
		//str1 和 str2 比较
		System.out.println(str1==str2);
	}

题目2

public static void main(String[] args) {
		String str = "123";
		System.out.println(str);
		change(str);
		System.out.println(str);
	}
	public static void change(String str) {
		str = "234";
	}

答案1:false

答案2:123

​ 123

常见方法

方法作用说明
char charAt(int index)返回指定索引处的值
int codePointAt(int index)返回指定索引处的字符(Unicode代码点)
int compareTo(String anotherString)按字典顺序比较两个字符串。比较基于字符串中每个字符的Unicode值。
String String concat(String str)将指定的字符串连接到此字符串的末尾。原字符串的值不会变
static String copyValueOf(char[])将字符数组转化为String对象
boolean endsWith(String s)测试此字符串是否以指定的后缀结尾
int indexOf(char ch)返回指定字符第一次出现的字符串中的索引
String replace(char oldChar,char newChar)返回用oldChar此替换此字符串中所有出现的 字符串newChar。
String[] split(String regex)将此字符串拆分为给定正则表达式的匹配项。
public class StringTest01 {
	public static void main(String[] args) {
		String str = "ILoveJava";
		
		//charAt()
		char ch = str.charAt(1);
		System.out.println(ch);//L
		
		//codePointAt(int index)
		int num = str.codePointAt(6);
		System.out.println(num);//97 a的Unicode值为97
		
		///compareTo(String)
		str = "a";
		System.out.println(str.compareTo("bbadads"));//返回-1,a的值为97,b的值为98 97-98=-1
		
		//String concat(String str)
		System.out.println(str.concat("bcd"));
		
		//static String copyValueOf(char[])
		char[] chs = new char[] {'i','l','o','v','e'};
		str = String.copyValueOf(chs);
		System.out.println("创建新的字符串:"+str);//ilove
		str = String.copyValueOf(chs,1,4);
		System.out.println("创建新的字符串:"+str);
		
		//boolean endsWith(String s)
		str = "****.avi";
		boolean flag = str.endsWith(".avi");
		System.out.println("str是否是.avi格式:"+flag);//true
		
		//int index(char ch)
		str = "QQ.exe";
		System.out.println(str.indexOf("."));//2
		
		//String replace(char oldChar,char newChar) 
		str = "2019.7.24";
		str = str.replace(".", "/");
		System.out.println(str);//2019/7/24
		
		//String[] split(String regex)
		str = "login?u=123p=abc";
		String[] strs = str.split("=");
		for(String s:strs) {
			System.out.println(s);//login?u 123p abc 
		}
		
		//String subString(beginIndex)
		str = "0123456789";
		str = str.substring(2);
		System.out.println(str);//23456789
		str = "0123456789";
		str = str.substring(2, 7);
		System.out.println(str);//23456
		
		//String toUpperCase()
		str = "abc";
		str = str.toUpperCase();
		System.out.println(str);//ABC
		
		//通过静态方法创建String对象
		str = String.valueOf(123);
		System.out.println(str);//123
		
		// 对象转字符串 其实就是调用当前对象的toString方法
		User u = new User(10);
		String str2 = String.valueOf(u);
		System.out.println(str2);//User [age=10]
		
	}
}
class User{
	private int age;
	public User() {
		// TODO Auto-generated constructor stub
	}
	public User(int age) {
		super();
		this.age = age;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "User [age=" + age + "]";
	}
}

StringBuffer

/*
 * StringBuffer:
 * 可变字符串,底层是一个字符数组,动态数组
 * 
 */
public class StringBufferTest {
	public static void main(String[] args) {
		StringBuffer sb = new StringBuffer();
		//容量16
		System.out.println("通过空构造器创建的StringBuffer的容量:"+sb.capacity());
		sb.append(true);
		sb.append(false).append("123");//链式编程
		System.out.println(sb);//truefalse123
		System.out.println(sb.length());//12
		// 添加元素
		sb.insert(1, "heihei");
		System.out.println(sb);//theiheiruefalse123
				
	}
}

StringBuilder

  • StringBuilder和StringBuffer都继承了AbstractStringBuilder
  • StringBuffer效率低于StringBuilder
  • StringBuffer安全性高于StringBuilder
  • 一般情况下使用StringBuilder
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值