package zuoye;
/**
* String类_常量池_字符串比较
* @author 110
* 1:String类又称作不可变字符序列。
* 2:String位于java.lang包中,java程序默认导入java.lang包下的所有类。
* 3:java字符串就是Unicode字符序列,例如字符串“java”就是四个Unicode字符‘j’,‘a’,‘v’,‘a’组成的。
* 4:java没有内置的字符串类型,而是在标准java类库中提供了一个预定义的类String,每个用双引括号起来
* 的字符串都是String类的一个实例。
* 5:java允许使用符号“+”吧两个字符串连接起来。
*
* 在java的内存分析中,我们会经常听到关于“常量池”的描述,实际上常量池也分了以下三种:
* 1:全局字符串常量池(String pool)
* 全局字符串常量池中存放的内容是在类加载完成后存在String pool中的,在每个VM中只有一份,
* 存放的是字符串常量的引用值(在堆中声称字符串对象实例)。
* 2:class文件常量池
* class常量池是在编译的时候每个class都有的,在编译阶段,存放的是常量(文本字符串、final常量)
* 和符号引用(class Constant Pool)
* 3:运行时常量池(Runtime Constant Pool)
* 运行时常量池实在类加载完成之后,将每个class常量池中的符号引用值转存到运行时常量池中,也就是说,
* 每个class都有一个运行时常量池,类在解析之后,将符号引用替换成直接引用,与全局常量池中的引用值保持一致。
*
*/
public class practice14 {
public static void main(String[] args) {
@SuppressWarnings("unused")
String str1 = new String("666 ");
String str2= new String("abc");
String str3="abcd"+"efgh";
String str4=str1+str2;
String str5="18"+19;//不是加法,是字符串连接。
System.out.println(str2);
System.out.println(str3);
System.out.println(str5);//输出是1819,只要两边有一个是字符串,那全部按字符串处理。
System.out.println("####################");
String str10 = "guonengneng";
String str11 = "guonengneng";
String str12 = new String("guonengneng");
System.out.println(str10==str11);//比较他俩是不是同一个对象true,Str10和str11,
//都是放到常量池里面,所以对象是一样的,而str12是新创建的对象。
System.out.println(str10==str12);//false 。str10和str12不是同一个对象。
//通常比较字符串时,使用equals
System.out.println(str12.equals(11));
}
}
String类_常量池_字符串比较
最新推荐文章于 2024-03-15 00:49:21 发布