黑马程序员_<<String类>>
--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------
String是一个特殊的类,一旦被初始化,那么就不能被改变,String类是一个被final修饰的类。
2.String的初始化String s1=”abc”;这个表示的是一个对象,但是不是在内存中创建的,而是在内存的缓冲区(常量池)中创建了一个“abc”对象,只有通过new关键字创建的,才在堆中申请了内存空间,并且在栈中有声明的变量名称。
当有Strings1=”abc”,String s2=”abc”;都执行的话,当执行了s1后,会在内存的缓冲区(常量池)中创建了”abc”字符串对象,然后在执行s2的时候,那么先去内存缓冲区查找,要是存在了,那么就直接指向此对象,直接使用,所以,这两句话也就纯创建了一个”abc”字符串。
String str=new String(“xyz”);这是创建了两个对象,一个是先在内存中通过new创建了一个对象,然后在内存缓冲区中又创建了一个字符串“xyz”,然后在内存中的指向了内存缓冲区(常量池)中的对象。
在常量池中只有一个相等的字符串,但是在内存中可以有多个相等的字符串。
String str=new String(“xyz”);此语句产生几个对象,
如果常量池中已经有“xyz”字符串的话,那么就产生一个对象,要是常量池中没有”xyz”,那么就产生两个对象,一个是咋内存中,一个是在常量池中(内存缓冲区)
2. 字符串比较
有两种比较方法:==和equals。
==:比较的是内存地址,equals比较的内容
public class Text { public static void main(String[] args) { String str=" abc "; //取出两边空格 String s1=str.trim(); //大小写转换 String s2=s1.toUpperCase();//转换成大写 String s3=s2.toLowerCase();//转换成小写 //比较 System.out.println("s1="+s1); System.out.println("s2="+s2); System.out.println("s3="+s3); System.out.println(s2+"和"+s3+"比较大小="+s2.compareTo(s3)); //比较的时候是根据字符的ASCII进行的比较 //小于0表示s2小于s2 //等于0 表示s2和s3相等 //大于0 表示s2比s3大 }}结果:s1=abcs2=ABCs3=abcABC和abc比较大小=-32