zoukankan      html  css  js  c++  java
  • 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 ...),两者都是合法的。因此这个调用实际上是含糊不清的。

  • 相关阅读:
    (转)sqlite3生成lib遇到的问题
    C++中的static
    static int和static final int的区别
    用static关键字修饰类
    Shell脚本的编写
    linux定时任务的设置 crontab 配置指南
    s3cmd的安装与配置
    s3cmd的安装与使用
    -Dmaven.multiModuleProjectDirectory system propery is not set.
    maven 环境搭建 Myeclipse配置
  • 原文地址:https://www.cnblogs.com/chris-jichen/p/9801993.html
Copyright © 2011-2022 走看看