String对象(常量)池
对象池的主要目的是实现数据的共享处理。以String对象池为例,里面的内容主要就是为了重用,而重用的实际上就属于共享设计。 但是在java之中对象(常量)池实际上分为两种:
- 静态常量池:指的是程序(*.class)在加载的时候会自动将此程序之中保存的字符串、普通的常量、类和方法的信息等等,全部进行分配
- 运行时常量池:当一个程序(*.class)加载之后,里面有一些变量(比如需要用户输入的变量),这个时候提供的常量池。
观察一个程序(静态常量池)
public class name5 {
public static void main(String args[]){
String strA = "www.mldn.cn";
String strB = "www."+"mldn"+".cn";
System.out.println(strA == strB);//true
}
}
本程序之中所给出的内容全部都是常量数据(字符串的常量都是匿名对象),所以最终在程序加载的时候会自动帮助开发者处理好相应的连接。
观察另一种情况(动态常量池)
public class name5 {
public static void main(String args[]){
String info = "mldn";
String strA = "www.mldn.cn";
String strB = "www."+info+".cn";
System.out.println(strA == strB);//false
}
}
这个时候之所以是false,是因为程序在加载的时候并不确定info是什么内容。因为在进行字符串连接的时候info采用的是一个变量,变量的内容是可以修改的,所以它不认为最终的strB的结果就是一个所需要的最终的结果。
所以比较两个字符串 最简单的是使用equals()方法