java水泡_Java基础-方法和类

参数传递的深入分析

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

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

访问控制

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

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

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

理解static

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

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

它们只能直接调用其它静态方法;

它们只能直接访问静态数据;

它们不能以任何方式引用this或super关键字。

final介绍

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

嵌套类和内部类

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

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

varargs:可变长度参数

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

static void vaTest(int ... v) {

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

注意:

可变长度参数必须是方法最后声明的参数。

一个方法试图声明第二个可变长度的参数是非法的。

可以使用非varargs方法重载varargs方法。

varargs方法与模糊性

classvarargs {static void test(int... v) {code}static void test(boolean... v) {code}

}public static voidmain(String[] args) {

varargs.test();//Error: Ambiguous

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值