Java,String的“==”问题

//时间精力等问题,是前几日写的,部分还没有注释以及来得及查明原因。今日早起更新,出门办事去~

package mapPractice;

/**
 * 
 * @Detail : String的==一些问题 
 * @Author: 韩庆(QQ:haw_king@foxmail.com)
 * @E-mail: IsaidIwillgoon@gmail.com
 * @Date: 2012-11-20
 * @Time: 下午10:02:46
 *
 */
public class StringTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String str1 = new String("hank");//创建两个不同的对象
		String str2 = new String("hank");
		println("str1==str2  is " + (str1 == str2));//str1与str2指向的地址不同的
		/*
		 * 详解:1、地址的问题  2、执行分配地址的问题  3、无引用地址时字符串相加的问题  ?
		 */
		String str3 = "hank";//字面量值的方式 创建新的“hank”对象。str3指向这个对象的地址
		String str4 = "hank";//java池内检测是否存在,如果存在,那么str4则又指向它
		println("str3==str4 is " + (str3 == str4));
		System.out.println("---"+(str1==str3));
		/**/
		String _str4 = "ha";//字面量方式   创建新的
		String str4_ = "nk";//字面量方式   创建新的
		println("str1 = _str4+str4_ is " + (str1 == _str4 + str4_));
		println("str3 = _str4+str4_ is " + (str3 == _str4 + str4_));
		println("str3 = \"ha\".concat(\"nk\") is "
				+ (str3 == "ha".concat("hk")));
		/**/
		String str5 = _str4 + str4_;
		println("str3 = str5 is " + (str3 == str5));
		/**/
		println("-------------分隔---------------");

		String str4__ = "hank";
		String __str4 = "";
		println("str3 = str4__+__str4 is " + (str3 == str4__ + __str4));
		/**/
		println("切记:如果将上述的()括号去掉,则均返回false,原因是+将前后连接后才跟==号后比较的.");

		println(str3 == "ha" + "nk");
		/**/
		println(str1 == "ha" + "nk");
		/**/
		print(str3 == "hank" + "");
		/**/
		println("-----------分隔-----------");
		StringBuilder sb = new StringBuilder("ha");
		sb.append("nk");
		String str6 = "hank";
		println(str6 == sb.toString());
		println("str3 = \"ha\".concat(\"nk\") is "
				+ (str3 == _str4.concat(str4_)));
		
		//--------------------------------------
		String str7 = "hel"+"lo";//这俩的拼接非创建了吧?
		String str7_ ="hello";
		System.out.println(str7_==str7);
		//--------------------------------------
		String str8 = "new";
		String str9 = "old";
		String str10 = str8+str9;
		System.out.println("newold"==str10);
		String str11 = "newold";
		System.out.println("newold"==str11);
	}

	/**
	 * 封装了下输出方法(换行)
	 * 
	 * @param params
	 */
	private static void println(Object params) {
		System.out.println(params);
	}

	/**
	 * 封装输出方法(不换行)
	 * 
	 * @param params
	 */
	private static void print(Object params) {
		System.out.print(params);
	}
}
近来太忙,先贴上,下个月估计可以多抽些时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值