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数组的形式。
原文:http://www.cnblogs.com/smallbrokenchildwen/p/7128762.html