• Java基础-方法和类


    参数传递的深入分析

    当为方法传递基本类型时,使用值传递,因此会得到实参的副本,并且对接收实参的形参进行操作,对方法的外部没有影响。

    当为方法传递对象时,情况就完全不同了,因为对象时通过引用调用传递的。当将对象传递给方法时,引用本身是使用值调用传递的。但是,由于传递的值引用一个对象,因此值得副本仍然引用相应实参指向的同一个对象。

    访问控制

    Java的访问修饰符包括public、private以及protected。Java还定义了默认的访问级别。

    public:可以被任何代码访问。

    private:只能被所属类的其它成员访问。

    理解static

    被声明为静态的实例变量,在本质上是全局变量。当声明类的对象时,不会生成静态变量的副本。所有的实例共享相同的静态变量。

    声明为静态的方法有以下几个限制:

    1. 它们只能直接调用其它静态方法;
    2. 它们只能直接访问静态数据;
    3. 它们不能以任何方式引用this或super关键字。

    final介绍

    final本质上是将变量变成了常量。这意味着final变量必须在声明时进行初始化。可以通过两种方式之一完成这个工作:第一种方式,可以在声明时为其提供一个值;第二种方式,可以在构造函数中为其赋值。

    嵌套类和内部类

    可以在类的内部定义另外一个类,这种类就是嵌套类。嵌套类的作用域被限制在包含它的类之中。如果类B在类A中定义,那么类B不能独立于A而存在。嵌套类可以访问包含它的类的所有成员,包括私有成员。但是,包含类(包含嵌套类的类)不能访问嵌套类的成员。

    嵌套类分为两种:静态的和非静态的。静态嵌套类只能访问包含类的非静态成员,因为这条限制,很少使用静态嵌套类。

    varargs:可变长度参数

    可变长度参数通过三个点标识(...)。

    static void vaTest(int ... v) {

    以上方法v被隐式的声明为int[]类型。

    注意:

    • 可变长度参数必须是方法最后声明的参数。
    • 一个方法试图声明第二个可变长度的参数是非法的。
    • 可以使用非varargs方法重载varargs方法。

    varargs方法与模糊性

    class varargs {
        static void test(int ... v) {code}
        static void test(boolean ... v) {code}
    }
    
    public static void main(String[] args) {
        varargs.test(); //Error: Ambiguous
    }

    因为可变长度参数可以为空,所以这个调用可以被转换为对test(int ...)或者test(boolean ...),两者都是合法的。因此这个调用实际上是含糊不清的。

  • 相关阅读:
    Git:创建远程仓库并推送内容到远程库
    Git中ssh的使用
    Git中的文件上传、修改、撤消修改和删除
    Git的安装和创建版本库
    HTML相关知识点总结
    Android开发--TableLayout的应用
    Java中sql语句的引号问题
    NXOPEN环境配置
    shell小技巧
    查询MySQL锁等待的语句
  • 原文地址:https://www.cnblogs.com/chris-jichen/p/9801993.html
Copyright © 2020-2023  润新知