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

常用类库API——1字符串操作(string类)

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

常用类库API——1字符串操作(string类)

常用类库API
  1. 字符串操作
  2. 程序国际化
  3. Math与Random类
  4. 日期操作类
  5. 对象比较器
  6. 对象的克隆
  7. system与Runtime类
  8. 数字处理类
  9. MDS工具类
    10…数据结构之二叉树实现
  10. JDK1.8 新特性
  11. List item
  • 一、String类

字符串操作(string类)
1、string可以表示一个字符串。
2、string类实际是使用字符数组储存的

string类的两种赋值方法。
(1)直接赋值
String name=“小白”;
(2)通过关键字new调用String的构造方法赋值
String name =new String(“小白”)

//内部使用字符数组实现,不能继承(最终类)

public class API_string {

	public static void main(String[] args) {
		
		
		//String 的两种赋值方式
		
		//1直接赋值
		String s1="小白";
		//一下代码创建了几个对象?2个
		String s2=new String("小白");
				
		System.out.println(s1==s2);
	}

}

public class API_string {

	public static void main(String[] args) {
		
		
		//String 的两种赋值方式
		
		//1直接赋值
		String s1="小白";
		//一下代码创建了几个对象?2个
		String s2=new String("小白");
		
		String s3="小白";
				
		System.out.println(s1==s2);
		System.out.println(s1==s3);
		System.out.println("········1············");
		
		String a="a";
		String a1=a+"1";
		String a2="a1";
		System.out.println(a1==a2);
		System.out.println("········a············");
		
		final String b="b";
		String b1=b+"1";
		String b2="b1";
		System.out.println(b1==b2);
		System.out.println("········b············");
		
		String c=getC();
		String c1=c+"1";
		String c2="c1";
		System.out.println(c1==c2);
		System.out.println("··········c··········");
		
		final String d=getD();
		String d1=d+"1";
		String d2="d1";
		System.out.println(d1==d2);
		System.out.println("··········d··········");
	}
	
	private static String getC() {
		return "c";
	}
	private static String getD() {
		return "d";
	}

}


String是一个特殊的类,掌握其特殊原理才能更好的发挥长处,避免缺点带来的消耗,也是面试官喜欢用来考察的知识点

**

String类字符与字符串的操作方法

**



package API;

import java.util.Arrays;

public class StringDome {

	public static void main(String[] args) {

		
		String s1="dfhjgkhf123";
		char c=s1.charAt(2);
		System.out.println(c);
		
		
		System.out.println(s1.toCharArray());
		char[] cs= {'a','b','c'};
		String s2=new String(cs);
		
		String s3=new String(cs,0,1);
		System.out.println(s3);
		
		
		System.out.println(Arrays.toString(s1.getBytes()));
		
		
		System.out.println(s1.replace('h','='));
		System.out.println(s1.replaceAll("//d", "*"));
		
		System.out.println(s1.substring(0,4));
		System.out.println(Arrays.toString(s1.split("1")));
		
		
		System.out.println(s1.contains("d"));
		System.out.println(s1.indexOf("f")); 
	}

}

  • 二、StringBuffer类

**StringBuffer类
在实际开发中,我们经常使用到字符串连接的操作,如果用String来操作,则使用“+”号来实现字符串的连接
使用String连接的字符串,代码性能非常的低,因为string的内容不可以改变。解决这个办法的方法就是StringBuffer

StringBuffer源码分析`

在这里插入代码片
publiuc  calss StringBufferDome{
		public static void main(String[] args){
			String a="a";
			String b="b";
			String c=a+b+1;
			System.out.println(c);
			String d="a"+1+2+3+"b";//a123b//常量相加没有性能问题(编译期进行优化)
				
			//StringBuffer目的是用来解决字符串相加带来的性能问题(常量与变量)
			//StringBuffer的内部实现采用字符数组,默认数组的长度为16,超过数组长度时,动态扩充的算法是原来长度*2+2
			//所以当我们预知添加的数据长度时建议使用初始化容量的构造方法,来避免动态扩充的次数,从而提高效率
			//线程安全的,会影响性能
			StringBuffer sb=new StringBuffer(32);//带容量的构造(建议)
			sb.append(a).append(b).append(1);
			System.out.println(sb.toString());
			}
		}


StringBuffer常用操作方法

方法名称描述
public StringBuffer()构造一个空的StringBuffer对象
public StringBuffer(String str)将指点的String变成StringBuffer的内容
public StringBuffer(CharSequence seq)接收CharSequence接口实例
public StringBuffer append(数据类型 b )提供了很多的append()的方法,用于进行字符串的连接
public StringBuffer delete(int start,int end)删除指点位置的内容
public StringBuffer(String str)将指点的String变成StringBuffer的内容
public int indexOf(String str)字符串的查询功能
public StringBuffer insert(int offset,数据类型b)在指点位置添加一个内容
public StringBuffer replace(int start,int end ,String str)在指点范围的内容替换为其他内容
public StringBuffer substring(int start,int end)截取指点范围的内容
public StringBuffer reverse ()字符串反转

StringBuffer解决了使用Stringp拼接字符串时产生的大量垃圾对象的问题,内部实现其实是字符串数组

  • 三、StringBuilder类

StringBuilder
一个可变的字符序列,此类提供一个与StringBuffer兼容的API,但不保证同步,该类被设计作为StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,介意优化采用该类,因为大多数实现中,它比StringBuffer更快

public class StringBuilder {

	public static void main(String[] args) {
		// StringBuffer和StringBuilder的区别?
		//StringBuffer是线程安全,性能低,适合多线程使用,JDK1.0
		//StringBuilder是线程不安全的,性能高,适合在单线程中使用,这种情况占大多数,在JDK1.5后添加

		StringBuilder sb=new StringBuilder();
		
		
		//字符串相加操作
		//多个常量相加没有性能问题,在编译期优化
		//变量与常量相加,会产生多个垃圾对象
		
		String a="a";
		String b=a+"b";
		
		
		String c=null;
		for(int i=0;i<5;i++) {
			c+=i;//每次循环会产生一个StringBuilder对象实现拼接,性能低,最好是动手创建StringBuilder
		}
	}//字符串相加,在编译后会使用StringBuilder来优化代码,实现拼接

}

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

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

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