Java的直接量——2017.08.01

本文探讨了Java中String常量池的概念,并通过实例代码详细分析了字符串对象创建时的行为,包括==运算符与equals方法的区别,以及它们如何应用于基本数据类型与引用类型的比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

根据常量池的定义来比较下面结果:

package Collection;

public class Constantpool {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
           String s1="hello";
           String s2="world";
           String s3="hello";
           String s4="he"+"llo";
           String s5=new String("hello");
           int int1=1224;
           int int2=1224;
           float float1=1224f;
           
           System.out.println(s1==s3);
           System.out.println(s1==s4);
           System.out.println(s1==s2);
	   System.out.println(s1==s5);
	   System.out.println(s1.equals(s4));
	   System.out.println(s1.equals(s5));
	       
	   System.out.println(int1==int2);
	   System.out.println(float1==int1);
      System.out.println(s1.equals(s6));
/* * true true false false true true true true
               false */ } }




此时出现==与equals(),==判断要分对象来判断,如果是基本数据类型,且都是数值类型(byte,short,int,long,float,double)不论是那种,只要值相等即可。参照结果:System.out.println(float1==int1);
如果判断的是引用类型,equals()和==判断的结果标准都一样,比较两个两个引用类型的地址值。
但是String方法重写equasl()方法,只需要保证两个字符串字符序列相同,==需要比较地址值。
常量池中的字符地址值是相同的,但是如果你新new一个,那么就代表在内存中新看了一个地址。
     

转载于:https://www.cnblogs.com/linjingjia/p/7268861.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值