Java面向对象编程 -9.5

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()方法

posted @ 2020-03-17 15:56  上杉家主-上杉绘梨衣  阅读(109)  评论(0编辑  收藏  举报