String
this关键字最大的作用就是让类中的一个方法,访问该类中的另一个方法或属性,
例如:有一个Dog类, 这个dog对象的run方法丈调用他的jump方法。
实例化String对象
public class Student { public static void main(String [] args) { // String name="wbk"; String name=new String("wbk"); System.out.println("姓名:"+name); } }
而两次运行的结果是一样的,
姓名:wbk
2.string的内容的比较
对于基本数据类型可以通过“==”进行内容得比较,比较简单,但是如果要比较两个字符串是否相等就有一些不同了,
例子:
public class StringDemo04 { public static void main(String [] args) { String str1="hello"; String str2=new String("hello"); String str3=str2; System.out.println("str1 == str2----->"+(str1==str2)); System.out.println("str2 == str3----->"+(str2==str3)); System.out.println("str1 == str3----->"+(str1==str3)); } }
结果:
str1 == str2----->false
str2 == str3----->true
str1 == str3----->false
虽然str1和str2的值都是hello相同,但是他们在对内存中存在的空间却不相同
,所以结果是false。
那怎么比较呢?
使用equals方法对String的内容进行比较,如下:
public class StringDemo05 { public static void main(String [] args) { String str1="hello"; String str2=new String("hello"); String str3=str2; System.out.println("str1 == str2----->"+(str1.equals(str2))); System.out.println("str2 == str3----->"+(str2.equals(str3))); System.out.println("str1 == str3----->"+(str2.equals(str3))); } }
结果:
str1 == str2----->true
str2 == str3----->true
str1 == str3----->true
equals()方法是将内容进行比较,所以返回结果都为true,
3.String两种实例化方式的区别:
①.一种是通过直接赋值的方式,
②.是使用标准的new调用构造方法完成实例化
一个字符串就是一个String类的匿名对象,匿名对象就是已经开辟了对内存空间的并可以直接使用的对象。
public class StringDemo05 { public static void main(String [] args) { String str1="hello"; // String str2=new String("hello"); String str2="hello"; String str3="hello"; System.out.println("str1 == str2----->"+(str1.equals(str2))); System.out.println("str2 == str3----->"+(str2.equals(str3))); System.out.println("str1 == str3----->"+(str2.equals(str3))); System.out.println("str1 == str2----->"+(str1==str2)); System.out.println("str2 == str3----->"+(str2==str3)); System.out.println("str1 == str3----->"+(str2==str3)); } }
结果:
str1 == str2----->true
str2 == str3----->true
str1 == str3----->true
str1 == str2----->true
str2 == str3----->true
str1 == str3----->true
*****************************************************************************************
提示: 在java中会提供一个字符串池来保存全部内容。
对于String 的以上操作,在java中成为共享设计,这种设计思路是,在java中形成一个对象池,在这个对象池中保存多个对象,心实例化的对象如果已经在池中定义了,则不再重新定义,而从池中直接取出继续使用。String就是因为采用了这样的设计,所以当内容重复时,会将对象指向已存在的实力空间。
*****************************************************************************************
此图不解释.....
1.字符串与字符数组的转换
例子:
public class StringAPIDemo01 { public static void main(String[] args) { String str1 = "hello"; char c[] = str1.toCharArray(); // 将字符串变为字符数组 for (int i = 0; i < c.length; i++) { System.out.print(c[i] + "\t"); } System.out.println(""); String str2 = new String(c); //将全部字符数组变为String String str3 = new String(c, 0, 3); //将部分字符数组变为String System.out.println(str2); System.out.println(str3); } }
结果:
h e l l o
hello
hel