多线程告一段落,开始常用对象API的涉及,背也要背下来!!!
日后开发,遇见最多的对象是文字,也就是字符串
String类
字符串是一个特殊对象
字符串一旦初始化就不可以被改变
一、特点
public class Main {
public static void main(String[] args)
{
Demo1();
System.out.println("--------------");
Demo2();
}
/*演示字符串的第一种定义方式,并明确字符串常量池的特点*/
private static void Demo1()
{
String s1 = "asd";
s1 = "sd";//s1只是字符串的引用,而字符串“asd”本身不变
String s2 = new String("sdf");
System.out.println(s1);
s2 = "sd";
System.out.println(s2==s1);//s1 和 s2实际上指向的同一个地址值
//sd储存在缓冲区(字符串常量池)
//如果没有,就创建,没有就不创建
}
/*演示字符串的第二种定义方式,*/
public static void Demo2()
{
String s = "abc";//在字符串常量池中创建一个对象
String s1 = new String("abc");//没有在字符串常量池中创建,在堆内存创建对象两个对象
//一个是s1 一个“abc”
System.out.println(s == s1);//false,比较的地址值不一样
System.out.println(s.equals(s1));//true
/*String类中的equals复写了Object中的equals建立了String类
* 自己的判断字符串对象是否相同
* 也就是比较字符串内容*/
System.out.println("s = "+s);
System.out.println("s1 = "+s1);
}
}
public class Main
{
public static void main(String[] args)
{
StringconstructorDemo1();
charDemo();
}
public static void StringconstructorDemo1()
{
String s = new String(); // 等效于String s = "";地址值不一样,不等效String s = null
byte[] sub = {97,66};
String s1 = new String(sub);
System.out.println("s1 = "+s1);
}
public static void charDemo()
{
char[] ch = {'a','b','c','d','e','f'};
String string = new String(ch);//将数组变成字符串,只能是byte 和 char
System.out.println("string = "+string);
String string1 = new String(ch,0,3);//从0角标开是截取3个字符
System.out.println("string1 = "+string1);
//String类剩下的方法,查手册
}
原文:http://blog.csdn.net/wjw0130/article/details/40056575