public class TestString {
@Test
public void test(){
String a = "an.jun.shuang";
String str_a = new String("an.jun.shuang");
String aCase = "an.Jun.Shuang";
String b = "wu.ying";
StringBuffer stringBuffer = new StringBuffer("an.jun.shuang");
String cs_1 = null;
String cs_2 = "";
String trim_t1 = " an jun shuang ";
System.out.println(a.substring(3));
//3<=a<6
System.out.println(a.substring(3,6));
System.out.println(a.replace("a", "w"));
System.out.println(a.replaceFirst("a","w"));
System.out.println(a.concat(b));
//转义
String aa[] = a.split("\\.");
String aaa[] = a.split("\\.", 3);
for(int i=0;i<aaa.length;i++) {
System.out.println(aaa[i]);
}
System.out.println(a.charAt(0));
//unicode编码
System.out.println(a.codePointAt(0));
//前一个字符的unicode编码
System.out.println(a.codePointBefore(1));
System.out.println(a.codePointCount(0,6));
//按照字段顺序比较两个字符串
//1.如果第一个参数的第一个字段不等,结束比较,返回它们之间的差值...以此类推。
System.out.println(a.compareTo(b));
System.out.println("a".compareTo("w"));
//相等返回0,不相等返回unicode差值
System.out.println(a.compareToIgnoreCase(aCase));
System.out.println(a.contains("a"));
System.out.println(a.equals(str_a));
System.out.println(a.equals(stringBuffer));
System.out.println(a.contentEquals(stringBuffer));
System.out.println(a.startsWith("an.jun.shuang"));
System.out.println(a.endsWith("an.jun.shuang"));
System.out.println(a.indexOf("n"));
System.out.println(a.indexOf("n",2));
System.out.println(a.indexOf(4));
System.out.println(a.indexOf(4,8));
//javav中有8中基本类型和一种比较特殊的String,这个特殊的String是为了让它运行的更快,更节省内存,都提供了一种常量池的概念
//常量池类似一个java系统级别的缓存,8中基本类型的常量池都是系统调节的。String类型的常量池有两种使用方法。
//1.直接用双引号声明的字符串会保存在常量池中。
//2.不是用双引号声明的字符串可以用intern方法检测,如果常量池中不存在该字符串,就把该字符串放在常量池中。
//执行过程,常量池中有该字符串,就返回该字符串,没有该字符串,先放在常量池中,在返回此字符串。
System.out.println(a.intern());
//null--NullPointerException
//System.out.println(cs_1.isEmpty());
//""---true
System.out.println(cs_2.isEmpty());
System.out.println(trim_t1.trim());
System.out.println(trim_t1.replace(" ",""));
//如果对象调用了wait方法就会使持有该对象的线程把该对象的控制权交出去,然后处于等待状态。
//如果对象调用了notify方法就会通知某个正在等待这个对象的控制权的线程可以继续运行。
//如果对象调用了notifuAll方法就会通知所有等待这个对象的控制权的线程可以继续执行。
//wait方法通过参数指定等待的时间,如果没有指定时间,默认一直等待下去,直到被通知。
//1.任何一个时刻,对象的控制权(monitor)只能被一个线程拥有。
//2.无论是执行对象的wait、notify还是notifyAll方法,必须保证当前运行的线程取得了该对象的控制权(monitor)。
//3.如果在没有控制权的线程里执行对象的以上三种方法,就会报java.lang.IllegalMonitorStateException异常。
//4.JVM基于多线程,默认情况下不能保证运行时线程的时序性
//线程取得控制权的方法有三:
//1.执行对象的某个同步实例方法。
//2.执行对象对应类的同步静态方法。
//3.执行对该对象加同步锁的同步块。
/*a.notify();
a.notifyAll();
try {
a.wait();
a.wait(100);
} catch (InterruptedException e) {
e.printStackTrace();
}*/
}
}
String使用详解
猜你喜欢
转载自blog.csdn.net/m0_37438942/article/details/84975387
今日推荐
周排行