一、java中String实例化的两种方法
1、
public class Test {
public static void main(String[] args) {
//简单,特殊,方便、直接
String name = "追梦小猿";
//面向对象标准语法格式
String name2= new String("追梦小猿2");
System.out.println("name:"+name);
System.out.println("name2:"+name2);
}
}
public class Test {
public static void main(String[] args) {
//简单,特殊,方便、直接
String name = "追梦小猿";
//面向对象标准语法格式
String name2= new String("追梦小猿2");
System.out.println("name:"+name);
System.out.println("name2:"+name2);
}
}
输出结果:
name:追梦小猿
name2:追梦小猿2
2、两种比较的方法“==”和“equals”
==比较的是内存的地址
equals比较的是具体的内容
public class Test {
public static void main(String[] args) {
//简单,特殊,方便的一种
String name = "追梦小猿";
//面向对象标准语法格式
String name2= new String("追梦小猿");
String name3 = name2;
//==比较的是引用的内存地址
System.out.println("name==name2:"+(name==name2));
System.out.println("name==name3:"+(name==name3));
System.out.println("name2==name3:"+(name2==name3));
//equals比较的是具体的内容
System.out.println("name.equals(name2):"+(name.equals(name2)));
System.out.println("name.equals(name3):"+(name.equals(name3)));
System.out.println("name2.equals(name3):"+(name2.equals(name3)));
}
}
输出结果:
name==name2:false
name==name3:false
name2==name3:true
name.equals(name2):true
name.equals(name3):true
name2.equals(name3):true
3、两种初始化实例化的区别
直接=的方法创建的对象存放在字符串对象池,下次存放如果存在不会在创建
new的方法每次都会新建一个对象
public class Test {
public static void main(String[] args) {
String name1="张三";
String name2="张三";
String name3=new String("张三");
String name4=new String("张三");
System.out.println("name1==name2:"+(name1==name2));
System.out.println("name1==name3:"+(name1==name3));
System.out.println("name3==name4:"+(name3==name4));
}
}
运行结果:
name1==name2:true
name1==name3:false
name3==name4:false
4、字符串的内容不可变性
字符串的特性:不能改变字符串的内容;
要想改变,只能通过指向一个新的内存地址;
public class Test {
public static void main(String[] args) {
String name="张";
name+="三";
System.out.println(name);
}
}

生成的字符串指向新的地址
二、String类中常用的方法
1、char charAt(int index)返回指定索引处的char值(返回第index个字符的值,从0开始)
public class Test {
public static void main(String[] args) {
String name="woshizhuimengxiaoyuan";
System.out.println(name.charAt(3));
}
}
输出结果:
h
2、int length()返回字符串的长度
public class Test {
public static void main(String[] args) {
String name="woshizhuimengxiaoyuan";
System.out.println(name.length());
}
}
输出结果:
21
3、int indexOf(int ch)返回字符在字符串中第一次出现的位置
int indexOf(int ch,int formindex)从第formindex个数开始第一出现ch的位置
public class Test {
public static void main(String[] args) {
String name="woshizhuimengxiaoyuan";
System.out.println(name.indexOf('i'));
System.out.println(name.indexOf('i', 6));
}
}
输出结果:
4
8
4、String substring(int beginindex)第beginindex个字符后面的字符串,不包括第beginindex个字符,它是此字符串的子字符串
public class Test {
public static void main(String[] args) {
String name="woshizhuimengxiaoyuan";
System.out.println(name.substring(5));
}
}
输出结果:
zhuimengxiaoyuan
5、public String toUpperCase() String中所有的字符都变成大写
public String toLowerCase() String中所有的字符都变成小写
public class Test {
public static void main(String[] args) {
String name="woshizhuimengxiaoyuan";
String newname = name.toUpperCase();
System.out.println(name);
System.out.println(newname);
}
}
输出结果:
woshizhuimengxiaoyuan
WOSHIZHUIMENGXIAOYUAN
WOSHIZHUIMENGXIAOYUAN
更多的方法请参考 《
Jdk api chm文档》(1.6是中文的,1.7、1.8还是英文的)