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