成员变量与局部变量的区别有哪些
变量:在程序执行过程中,在某个范围内其值可以发生改变的量,从本质上讲,变量其实是内存中的一小块区域
成员变量:方法外部,类内部定义的变量
局部变量:类的方法中的变量
| 区别 | 成员变量 | 局部变量 |
|---|---|---|
| 作用域 | 针对整个类有效 | 只在某个范围有效(一般指的就是方法、语句体内) |
| 存储位置 | 随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中 | 在方法被调用或者语句被执行的时候存在,存储在栈内存中。当方法被调用完或者语句结束后,就自动释放 |
| 生命周期 | 随着对象的创建而存在,随着对象的消失而消失 | 当方法调用完或者语句结束后就自动释放 |
| 初始值 | 有默认初始值 | 没有默认初始值,使用前必须赋值 |
使用规则
在使用变量时需要遵循的原则为:就近原则,首先在局部范围找,有就使用;接着在成员位置找。
在 Java 中定义一个不做事且没有参数的构造方法的作用
Java 程序在执行子类的构造方法之前,如果没有用 super()来调用父类特定的构造方法,则会调用父类中“没有构造参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用 super()来调用父类中特定的构造方法,则编译时将发生错误,因为 Java 程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。
在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?
帮助子类做初始化工作
一个类的构造方法的作用是什么?若一个类没有声明构造方法,该程序能正确执行吗?为什么?
主要作用是对类对象的初始化工作。可以执行,因为一个类即使没有声明构造方法也会有默认的不带参数的构造方法。
构造方法有哪些特性?
- 名字和类名相同
- 没有返回值,但不能用void声明构造函数
- 生成类的对象时自动执行,无需调用
静态变量和普通变量的区别
static 变量也称作静态变量,静态变量和非静态变量的区别
-
静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当类在初次加载时会被初始化。由于不属于任何实例对象,属于类的,所以在内存中只会有一份,在类的加载过程中,JVM只为静态变量分配一次内存空间。
-
非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。每次创建对象,都会为每个对象分配成员变量的内存空间,实例变量是属于实例对象的,在内存中,创建几次对象,就有几份成员变量
static 成员变量的初始化顺序按照定义的顺序进行初始化。
静态方法和实例方法有何不同?
静态方法和实例方法的区别主要体现在两个方面:
- 在外部调用静态方法是,可以使用“类名.方法名”的方式,也可以使用“对象名.方法名”的方式。而实例方法只有后面的这种方式,也就是说调用静态方法可以无需创建对象。
- 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制
在一个静态方法内调用一个非静态成员为什么是非法的?
由于静态方法可以不通过对象进行调用,因此在静态方法里,不能调用其他非静态变量,也不可以访问非静态成员变量。
什么是方法的返回值?返回值得作用是什么?
方法的返回值是指我们获取到的某个方法体中的代码执行后产生的结果!(前提是该方法可能产生结果)。返回值得作用是接收结果,使得它可以用于其他操作!