java语法整理

重载规则:每个重载的方法都必须有一个独一无二的参数类型列表

  • 参数的顺序不同可以区分。
  • 基本数据类型的重载 :有则调用,如果实际传入小则提升,去调用比实际传入大的。char直接提升为int。如果实际传入大,要进行转型,强制转化为小的,不然编译器会报错。
  • 大小标准:char byte short int long float double
  • 不能用返回参数作为区分的依据。原因:重载的应用场景在方法调用的时候。用相同的方法名,以传入的参数列表不同来区分调用不同的方法,有时候在调用时我们并不关心方法的返回,而只是关心方法的运行带来的一些效果。

默认构造器:没有构造器编译器会默认创建一个,因为要确保每一个对象在创建之前都被初始化。如果定义了其他构造器,新建对象时如果调用默认构造器就会报错。


this关键字:类是一个模板,每个对象都有自己的属性和方法,可以向对象发送消息。每个对象有自己的属性和方法是合理的,但是对一个对象来说,属性是特有的,但是方法却可以通用,所以没有给每个对象都分配方法的空间,这样就不会冗余,在对象调用方法时,传入对象的引用。也就是每个非静态方法都会持有调用该方法的对象的引用。

  • this关键字加参数可以调用构造器,但是调用构造器只能放在方法内部第一行。
  • 只能在构造器内部调用构造器,不能在方法中调用构造器。
  • static 方法不持有对象的引用,也就是方法内不存在this。它是类方法。

垃圾回收 finalize()

  • 对象可能不被垃圾回收。
  • 垃圾回收不等于“析够”。
  • 垃圾回收只与内存有关。
  • System.gc()用于强制执行终结动作。

成员初始化


  • java保证所有变量在使用前都得到恰当的初始化。
  • 方法的局部变量用编译时错误的形式保证。
    void f(){
    int i;
    i++; //编译器报错
    }

  • 成员变量编译器会自动初始化,引用会被初始化为NULL。

  • 无论创建多少个对象,静态数据都只会占用一存储区域。
  • static 关键字不能作用于局部变量,只能作用于域。
  • 如果静态域没有初始化,也会获得基本类型的标准初值。引用赋值为null。

指定初始化:在定义的时候直接初始化。
构造器初始化:无法阻止自动初始化的进行,它将在构造器被调用之前发生。
初始化顺序(先静态对象,而后非静态对象)

  1. java解释器查找类路径,定位类的class文件。
  2. 载入类,创建class对象,静态初始化的所有动作执行(在类加载时只执行一次)
  3. 当new 一个新类的时候,首先在堆上为对象分配足够的空间。
  4. 将空间清零,也就是为基本类型赋初值。
  5. 执行所有出现于字段定义处的初始化。
  6. 执行构造器。

文字解释加载顺序: 先找到类文件—>加载进来—>(再去寻找类的静态域—>如果有—>在堆上分配空间—>将空间清零—>再去执行静态域定义处的初始化—>所有定义处的初始化执行完—>再执行静态代码块的初始化)—>然后开始创建对象—>为对象分配内存空间—>空间清零—>执行字段定义处的初始化—>执行代码块的初始化—>执行构造器。
代码块的作用:因为代码块是在构造器之前调用的,每新建一个对象就要执行一次,每次可能新建不同的对象,要执行不同的构造器,但是构造器可能有共同的方法,我们可以抽取出来放在代码块里,就不需要在每一个构造器里写了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值