Java基础学习笔记(三)

11.装箱与拆箱

装箱:将基本类型用对应的引用类型包装起来;

拆箱:将包装类型转换为基本类型;

int → Integer 装箱 Integer → int 拆箱

12.静态:static

特性:

  • static可以修饰成员变量和成员方法。
  • 在类加载时加载,类消亡时消亡。
  • 当成员被静态修饰后,除了可以被对象调用,还可以通过类名.静态成员的方式调用,即不需要创建对象也可调用。
  • 所有对象共享静态成员

在一个静态方法内调用非静态成员是否可行?

不可行,因为静态方法可以不用创建对象,直接调用。即静态成员优先于对象存在,允许在没有创建对象时访问静态成员。这也就是说由于静态成员生命周期与类同步,实例变量生命周期与对象同步,所以我们有可能能够访问到静态成员,但是访问不到非静态成员。因此在静态方法里不允许调用其他非静态变量,也不可以访问非静态方法。

但非静态方法既可以访问静态成员也可以访问非静态成员

实例变量与静态变量(类变量)

1.存放位置

静态变量在类加载后存放在方法区中,实例变量在对象创建后存放在堆中。

2.生命周期

静态变量随类加载而加载,随类消亡而消亡。生命周期最长。

实例变量随对象消亡而消亡。

使用静态的好处

可以直接被类名调用,节省存储空间(所有对象共享一个,无需每个对象保存一份)。

顺便说下缺点,即生命周期过长,访问局限性大

tips:

  1. 静态方法优先于对象,所以需要对对象操作的功能就都不能用了。比如静态方法中不可以有this和super关键字
  2. main()一般是静态的。

13.成员变量与局部变量

  1. 从语法形式上看,成员变量属于类,局部变量是方法的参数或方法定义的变量。成员变量可以被public private static等修饰符修饰,局部变量不能用访问控制修饰符和static修饰(注意即使在静态方法中也不能用static修饰成员变量,因为修饰了也没有意义,本来方法中的参数和变量就是为方法服务的,为什么要弄个生命周期和类同步的变量呢?)但是成员变量和局部变量都可以被final修饰。
  2. 从内存中的存储方式上看,成员变量是对象的一部分,对象存在于堆内存,局部变量存在于栈内存。
  3. 从变量在内存中的生存时间上看,成员变量是对象的一部分,随着对象的创建而存在,而局部变量随着方法的调用而自动消失。
  4. 成员变量如果没有被赋初始值,则会自动以该类型的默认值赋值(如果被final修饰了但是没有被static修饰,则必须显式赋值);局部变量不会自动赋值。

14.创建对象用什么运算符?对象实体和对象引用有何不同?

创建对象时使用new运算符,ObjectA objectA = new ObjectA(); 这里的objectA就是对象引用(对象引用存放在栈内存中),new ObjectA()即为创建的对象实例(对象实例存放在堆内存中)。一个对象引用可以指向1个对象或者不指向(= null);一个对象可以有n个引用指向自己。

15.对象的相等与引用相等有何区别?

对象相等比的是内存中存放的内容是否相同,引用相等比的是指向得内存地址是否相同。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值