java包装类内存_java关键字、包装类、内存

static 关键字:

static 修饰的东西只依赖于类存在,在内存中只存在一份,不管是通过类名调用还是实例来调用,访问的都是同一块内存

可以作用在:

方法

成员变量

代码块

static作用于方法的时候,该方法为静态方法,静态方法通过类名调用,静态方法中不能调用非静态方法、非静态变量。

非静态方法可以调用静态方法

静态代码块只在类加载的时候运行一次,即整个程序运行期间只会运行一次

执行顺序:static 代码块>匿名块>构造函数(不管他们在类中的相对位置)

单例模式(创建型模式):

限定某一个类在整个程序运行过程中只能有一个实例对象

public classSingleton{private static Signleton obj=newSingleton();privateSingleton(){

}public staticSingleton getInstance{returnobj;

}

}

final关键字

可以用来修饰

类:final类不能被继承

方法:父类中的final方法,子类不能重写

成员变量:final的基本类型变量不能再次赋值,final的对象不能修改其指针,但可以修改对象内部的值

常量设计

常量:不会被修改的变量

java中的常量:public static final  只读,不能修改仅有一份所以用public static final。常量名一般全大写,用连字符_相连

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

常量池

为了节省内存,java为包装类/字符串建立了常量池

建立了常量池的基本类型的包装类

Boolean : true false

Byte:-128-127

Character:0-127

Short,Integer,Long:-128-128

Float,Double没有常量池

堆内存和栈内存

栈内存读取速度快,容量小

堆内存堆区速度慢,容量大

基本类型的包装类和字符串有两种创建方式

Integer a=10;

String b="abc"    //a,b放入栈内存,将被常量化

Integer c =new Integer(10);

String d=new String("abc")    //c,d放入堆内存,不会被常量化

自动装箱和自动拆箱

Integer i2=10;  //10会自动装箱成一个对象

int i1=10;

Integer i3=new Integer(10)

System.out.println(i1==i3);  //true,自动拆箱  基本类型和包装类型进行比较,包装类自动拆箱

System.out.println(i1==i2);  //true,自动拆箱  基本类型和包装类型进行比较,包装类自动拆箱

System.out.println(i3==i2);  //false,两个对象比较是否相等比较的是地址

i2+i3    //20,会自动拆箱,变成一个int变量

String类的对象在内存中如何存在

String s0="abcdef";    //常量池

String s1="abc"+"def";    //常量池,和s0共享

String s2="abc";      //常量池

String s3=s2+"def";    //堆内存,s3是变量,编译的时候编译器不会优化

String s4="abc"+new String("def");  //堆内存,和s3不在同一个内存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值