package cn.wen.basic.test; import java.io.UnsupportedEncodingException; import java.util.Arrays; import org.junit.Test; /* * 面试题 string和stringBuffer的区别 * 系统复习之string * string是一个常量 一旦输入不能修改,重新赋值是两个对象 * 源码中可以看到 string被final修饰符修饰 为常量 * String继承Serializable(可串行化的)接口和Comparable(比较类)和charSequence(序列化字符串)类 * 源码对该类的定义为该值用于字符存储 * api中说String创建的值不能变。字符串缓存区可以变(StringBuffer)。String支持共享 */ public class testString { /* * string method 往后要学会记方法名 * string的共享性 * char类型的支符数组可以转化为string类型的字符串 * String源码中有这个构造方法来实现char数组转换为String * public String(char value[]) { this.value = Arrays.copyOf(value, value.length); } */ @Test public void testStringCharShare(){ String str="abc"; System.out.println(str); //相当于 char[] data={'a','b','c'}; String str1=new String(data); System.out.println(str1); } @Test public void testStringConstructor(){ String str0=new String();//初始化新创建的String对象,使其表示空字符序列 byte[] bytes=new byte[1024]; String str1=new String(bytes);//通过使用平台默认字符集解码指定的字节数组来构造新的string; str1="adfs"; System.out.println(str1); try { String str2=new String(bytes,"UTF-8");//设置字符集解码指定的字节数组来构造新的string //类似方法 String str3=new String(bytes,1,bytes.length-1);//通过使用平台默认字符集解码指定的字节子列阵来构造新的string。 String str4=new String(bytes,0,bytes.length-1,"UTF-8");//bytes字节数组 0指定截取的字节的开始位置,length指定截取字节的最后位置。utf-8指定解码集 char[] data1={'a','b','c','d','e','f'}; String str5=new String(data1,1,4); System.out.println(str5); } catch (UnsupportedEncodingException e) {//如果不支持该类型的编码或者编码格式输入错误抛出异常 // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testStringMethod(){ String str1="abcdefghijklmnopqrstuvwxyz"; char d=str1.charAt(3);//获取string字符串中的支符 返回char类型 System.out.println(d); int a=str1.codePointAt(0);//获取第index个字符的acci码值 System.out.println(a); int c=str1.codePointBefore(4);//获取第index个字符的前一个字符的acci码值 System.out.println(c); int acci=str1.codePointCount(1, 5);//获取指定范围的unicode代码点数 System.out.println(acci); String str2="c"; int comp=str1.compareTo(str2);//按字典序比较两个字符串的大小。 System.out.println(comp); System.out.println("-------------------------"); String[] str3=str1.split("d");//分割字符串 返回d以前和d以后的字符串 不包含d for(int i=0;i<str3.length;i++){ System.out.println(str3[i]); } System.out.println("--------------------------"); String strSon=str1.substring(1, 5);//截取字符串 1代表起始位置,5代表结束位置 System.out.println(strSon); String strSon1=str1.substring(3);//截取字符串,从3开始 System.out.println(strSon1); CharSequence cs=str1.subSequence(1, 4);//返回一个字符序列 System.out.println(cs); String strUpper=str1.toUpperCase();//小写变大写 //toLowerCase 大写变小写 System.out.println(strUpper); }
}
String类在Java中是非常常用的类,String提供了很多非常好的方法帮助程序员进行字符串的操作,这在jee中非常有用,因为前台传过来的数据往往是字符串或者json数组的形式。