java常量设计和常量池

常量设计

  • 一种不会修改的变量
  • java没有const关键字
  • java中的常量是public static final ,建议变量名全部大写,以连字符相连

代码如下

package 常量设计;

public class App {

	public static void main(String [] args)
	{
		Constants obj1=new Constants();
		System.out.println(obj1.pi+obj1.name);
		
	}
	
}
package 常量设计;

public class Constants {

	public static final double pi=3.14;
	public static final String name="Tom";
}

接口中特殊的常量

接口中定义的变量默认是常量

package 常量设计;

public class Constants implements Text{

	public static final double pi=3.14;
	public static final String name="Tom";
	void pr()
	{
		a=20;//报错,说a是不能修改的
	}
}
package 常量设计;

public interface Text {

	int a=15;
}

常量池

  • Java中为很多的基本类型的包装类都建立了常量池。
  • 常量池:相同的值只存储一份,节省内存,共享访问
  • Float 与Double没有常量池,因为他们对于精度要求太高
  • 常量化只会在栈上实现,而new出来的对象放在堆内存上,不会常量化。
package 常量设计;

public class App {

	public static void main(String [] args)
	{
		/*Constants obj1=new Constants();
		System.out.println(obj1.pi+obj1.name);*/
		String str="hello";
		String str1="hello";
		String str2="hell"+"o";
		System.out.println(str1==str);//true
		System.out.println(str1==str2);//true
		System.out.println(str==str2);//true
		
	}
	
}

看下面的代码

Integer val1=127;
		Integer val2=127;
		Integer val3=128;
		Integer val4=128;
		System.out.println(val1==val2);//true 
		System.out.println(val3==val4);//false
               //对象双等号是比较指针是否指向同一个东西

Java中 Short Long Integer的常量池都在-128-127之间。

看下面关于new和正常创建的例子

                int i1=10;
		Integer i2=10;//自动装箱
		System.out.println(i1==i2);//基本类型和包装类型比较,包装类型自动拆箱
		Integer i3=new Integer(10);
		System.out.println(i1==i3);//虽然是new出来的,但是依旧自动拆箱
		System.out.println(i2==i3);//false两个指针不是一个地方

总结

  • Java中的常量 static 与final
  • Java接口中的变量都是常量
  • 对象生成有两种:常量创建和new
  • java为Boolean Byte Short Character IntegerLong String建立了常量池,没有Float Double
  • java编译器会优化已经确定的变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值