成员变量和局部变量的区别
成员变量: 成员变量定义在类中,在整个类中都可以访问。成员变量随着对象的建立而建立,存在于对象所在的堆内存中。成员变量有默认初始化值,同数组。局部变量: 局部变量只定义在局部范围内,如:函数内,代码块内等。局部变量存在于栈内存中。作用的范围结束,变量空间会自动释放。局部变量没有默认初始化值。那么,以下两种形参声明,区别在哪儿 public static double ScoreProcess(int... a) public static double ScoreProcess(int[] a)
第一种,实参可以是数组,也可以是个数 可变的参数。第二种,实参必须是数组。注意:
长度可变的形参只能位于形参列表的最后。一个方法最多只能有一个长度可变形参。在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
/** * 返回两个整数的和 */ int add(int x, int y) { return x + y; } /** * 返回三个整数的和 */ int add(int x, int y, int z) { return x + y + z; } /** * 返回两个小数的和 */ double add(double x, double y) { return x + y; }与返回值类型无关,只看参数列表。
方便于阅读,优化了程序设计。
构造函数也叫构造器、构造方法。构造函数是一个创建对象时被自动调用的特殊方法,用于对象的初始化。Java通过new关键字来调用构造函数,从而返回该类的实例,它是一种特殊的方法。 注:
Java通过new关键字调用构造函数。构造函数虽然有返回值,但是不能定义返回值类型(返回值类型是本类),不能在构造函数里使用return返回某个值。如果没有定义构造函数,则编译器会自动定义一个无参的构造函数;如果已经定义,则编译器不会自动定义。构造函数必须与本类同名。构造函数可以重载。 public class Main { private int a; private int b; public Main() { } public Main(int a) { this.a = a; } }优先于构造函数运行,为所有对象进行初始化,而构造函数仅针对特定的对象初始化。
public class Main { private int a; private int b; public Main() { } public Main(int a) { this.a = a; } { a = 0; b = 0; } }this表示本类对象的引用。 this的常见用法:
在程序二义性之处,应使用this来指明当前对象。普通方法中,this总是指向调用该方法的对象;构造器中,this总是指向正要初始化的对象。使用this关键字调用重载的构造函数,避免相同的初始化代码。但只能在构造函数中用,并且必须位于构造函数的第一句。this不能用于static方法中。Java虚拟机的内存可以分为三个区域:栈(stack)、堆(heap)、方法区(method area)。