1- java参数传递

1. 参数传递的方式

         a).传值 

       b).传址 

  传值,只是传递值的copy
  传址,只是传递地址的引用,可以修改引用所对象的变量值


  其传递参数的结果:
    1).对值参数的修改没有保留下来
    2).对对象参数的修改保留下来
    3).交换对象参数的结果没有保留下来

  对象引用进行的是值传递
    1). 一个方法不能修改一个基本数据类型的参数
    2). 一个方法可以改变一个对象参数的状态
    3). 一个方法不能让对象参数引用一个新的对象

  

2. 重载与重写
  重载,方法相同,参数不同,类型或者参数个数,类型的顺序不同,都可以,与返回值类型无关。
  重写,方法的声明相同,方法的实现不同,一般在子类实现接口,重写接口的抽象方法。
  注意;构造器能重载,不能重写。
    不能有两个名字相同、参数类型和个数都相同的,返回值不同的方法。

3. 默认域初始化
  实例域或者静态域 都可以默认初始化
  初始化: 数值=0 ; 布尔值=false; 对象引用= null

4. 无参构造函数   

  做的事情,1).会为实例域设置默认值,不是静态域   

  1). 特点:

  • 类至少有一个构造函数,没有构造函数,则会默认提供一个无参数的构造函数
  • 有构造函数,且不是无参构造函数,系统不会默认提供无参构造函数
  • 构造函数之间的调用this(...)


5. 参数名
  区分实例域与局部参数,可以使用this.参数名= 参数名

6. 调用另一个构造器
  方法:this(...), super(...)
  this(...)调用本类的构造函数
  super(...)调用父类的构造函数
  tihs(),与super()必须放在构造函数的第一行,不能同时存在

7. 初始化块
  初始化数据域的方法

  • 在构造器中设置值
  • 在声明中赋值
  • 初始化块赋值
整理“父构造函数”,“父初始化块”,“父静态块/域”,“子构造函数”,“子初始化块”,“子静态块/域”加载顺序
按照从先到后: 
  1. 父静态块/域   -->  2.子静态块/域   ----> 3.子初始化块   -->↓
  6. 子构造函数    <--  5.父构造函数   <----  4.父初始化块   <---

    注意: 域初始化语句和初始化块的执行顺序,按照在类声明中出现的次序

8. 对象析构与finalize
   java不支持对象析构,
   finalize的意思:将在垃圾回收器清除对象之前调用,但是不会立即

  •     (1).对象不一定会被回收。
  •        (2).垃圾回收不是析构函数。
  •        (3).垃圾回收只与内存有关。
  •        (4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的。



参考 Java finalize方法使用[http://blog.csdn.net/carolzhang8406/article/details/6705831]

原文地址:https://www.cnblogs.com/alisonGavin/p/6947385.html