美文网首页
方法参数、对象构造

方法参数、对象构造

作者: 爱做梦的严重精神病患者 | 来源:发表于2018-10-11 16:15 被阅读0次

    1.方法参数

    方法参数两种类型:基本数据类型(数字、布尔值),对象引用

     将参数传递给方法有两种方式:
     按值调用:方法接收的是调用者提供的
     按引用调用:方法接收的是调用者提供的变量地址

     一个方法可以修改传递引用所对应的变量值,而不能修改传递调用所对应的变量值
    Java程序设计语言总是按值调用。方法得到的是所有参数值的一个拷贝,方法不能修改传递给它的任何参数变量的内容。举例:

    //方法参数的类型是基本数据类型
    public static void tripleValue(double x) {
            x = 3 * x;
    }
    
    double percent = 10;
    tripleValue(percent);
    
    //percent的值还是为10
    
    //方法参数的类型是对象引用
    public static void raiseSalary(Employee x) {
          
              x.salary += 200;
    }
    
    harry = new Employee(...);
    raiseSalary(harry);
    
    //harry对象的薪水提升了200元
    

     有人认为Java对对象采用的是引用调用,其实是不对的。举例:

    public static void swap(Employee x, Employee y) {
                Employee temp = x;
                x = y;
                y = temp;
    }
    
    Employee a = new Employee("Alice", ...);
    Employee b = new Employee("Bob", ...);
    swap(a, b);
    
    //最终a和b仍然引用之前所引用的对象。
    

     如果Java对对象采用的是按引用调用,那么这个方法就应该能够实现交换数据的效果。事实上,并没有实现这个效果。

    总结----Java中方法参数的使用情况:

    • 一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。
    • 一个方法可以改变一个对象参数的状态。(修改对象的属性)。
    • 一个方法不能让对象参数引用一个新的对象
    • Java中基本数据类型参数传递是值传递对象和数组传递的是地址

    2.对象构造

    重载:多个方法有相同的名字不同的参数,便产生了重载。
    返回类型不是方法签名的一部分。也就是说,不能有两个名字相同参数类型也相同返回不同类型值的方法。


    关键字this:如果构造器第一个语句形如this(...),那么将调用同一个类的另一个构造器

    public Employee(double s) {
           this("Employee #" + nextId, s);
    }
    

    初始化块:在一个类的声明中,可以包含多个代码块。只要构造类的对象,这些块就会被执行。(static域时常使用)
     无论使用哪个构造器构造对象,首先运行代码块然后运行构造器的主体部分


    对象回收Java自动垃圾回收器不需要人工回收内存,所以Java不支持析构器
     某些对象,使用了内存之外的其他资源,当资源不再需要时,将其回收和再利用将显得十分重要。
     可以为任何一个类添加finalize方法。finalize方法将在垃圾回收器清除对象之前调用。(不要依赖于使用finalize方法回收任何短缺的资源)。
     如果某个资源需要在使用完毕后立刻被关闭,那么就需要由人工来管理。对象用完时,可以应用一个close方法来完成相应的清理操作。

    相关文章

      网友评论

          本文标题:方法参数、对象构造

          本文链接:https://www.haomeiwen.com/subject/fksbaftx.html