栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

字符串类型相关笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符串类型相关笔记

字符串类型
字符:简单类型char,标准格式为单引号
字符串:复合类型String,标准格式为双引号
在Java中字符串属于对象,Java提供了String类来创建和操作字符串。当对字符串进行频繁修改的时候,需要使用StringBuffer和StringBuilder类。和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。

string s1="ab"+"c";//Java针对+和+=进行了重新定义,在字符串种+表示字符串拼接
string s2="abc";
system.out.println(s1==s2); //true 在复杂类中==用于比较两个对象的地址是否相同system.out.print1n(s1.equals(s2));//true 调用string种定义的方法,用于比较两个字符串种的内容是否一致

字符串常量拼接,在方法区的常量池中完成

string s0="ab" ;
string s1=s0+"c";
string s2="abc ";
system.out.print1n(s1==s2); //false

注意: String类是不可改变的,所以一旦创建了String对象,那它的值就无法改变了。如果修改String种的内容则会导致对象的新建。
String类型的拼接是通过StringBuilder类中的append方法实现的,然后返回toString的结果,是在堆中的新对象。

//String类型的基本使用
public class Test {
	public static void main(String[] args) {
		String s1="ab中c";//定义变量,String一般用于字符串常量,如果修改内容则会导致对象的新建
		//获取字符串种的字符个数
		int len=s1.length(); //字符串中的length是一个方法,数组中的length是一个属性
		System.out.println(len);
		//获取指定下标位置上的字符
		for(int i=0;i 

StringBuffer和StringBuilder的基本用法

public class Test1 {
public static void main(String[] args) {
	//构建对象
	StringBuilder sb1=new StringBuilder();
	StringBuffer sb2=new StringBuffer("abcd");
	
	//拼接字符串
	sb2.append("123");//在字符串末尾拼接
	System.out.println(sb2);
	
	sb2.insert(1, "rst");//在指定下标位置上插入字符串
	System.out.println(sb2);
	
	sb2.delete(1, 3);//删除指定位置上的内容  start=1,end=3
	System.out.println(sb2);
	
	sb2.deleteCharAt(1);//只删除指定下标上的字符
	System.out.println(sb2);
	
	sb2.replace(1,2, "新的内容");//将指定下标位置上的内容替换为新内容
	System.out.println(sb2);
	
	//反转字符串
	sb2.reverse();
	System.out.println(sb2);
	
	//获取字符个数
	int len=sb2.length();
	System.out.println(len);
	
	//查找位置
	int pos=sb2.indexOf("容内");
	System.out.println(pos);
	
	//其余方法基本和String一致
	String s1=sb2.substring(pos);
	System.out.println(s1);
}
}

数据类型转换
String–lnteger或者其他类型,基本语法:包装类名称.parseXxx
特殊方法: String类使用静态方法 format()返回一个String对象,是用来创建可复用的格式化字符串
最常见的格式符号:浮点数%f、整型%d、字符串%s
可变与不可变
1.String类中使用字符数组保存字符串,因为有final修饰符,所以可以知道string对象是不可变的。
private final char value[ ];
2.StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,可知这两种对象都是可变的。char[ ] value;
是否多线程安全
1.String中的对象是不可变的,也就可以理解为常量,显然线程安全。
2.AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。
3.StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。
StringBuilder与stringBuffer共同点
1.StringBuilder与StringBuffer有公共父类AbstractStringBuilder抽象类。抽象类与接口的其中一个区别是:抽象类中可以定义一些子类的公共方法,子类只需要增加新的功能,不需要重复写已经存在的方法;而接口中只是对方法的申明和常量的定义。
2.StringBuilder、StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(…)。只是StringBuffer会在方法上加synchronized关键字,进行同步。
如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/643344.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号