Java
成员变量、局部变量
常量—— 被final关键字修饰 eg:final String a=null;
成员变量(全局变量):在变量定义部分定义的变量叫做类的成员变量,成员变量在整个类中都有效.
成员变量包括:类变量(静态变量),实例变量
类变量(静态变量)—— 是类中独立于方法之外的变量,用static修饰。;
类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。
实例变量—— 没有static修饰,定义在主函数外 eg:Stringa;
实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。
局部变量:在方法体中定义的变量叫做局部变量,局部变量只在定义它的方法中有效.
Eg:
public class Temp {
final int b=2;//常量【值不可更改】
int t; //实例变量Static int age=10;//类变量
public static void main(String args[]){
int t=1; //局部变量
System.out.println(t); //打印局部变量
Temp a= new Temp(); //创建实例
System.out.println(a.t); //通过实例访问实例变量
}
}
成员变量与局部变量区别:
成员变量:
1.成员变量有默认初始化值。
基本类型 | 默认值 |
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | '\u0000'空格 |
boolean | false |
2.成员变量定义在类中,在整个类中都可以被访问。
3.成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
局部变量:
1.局部变量没有默认初始化值 ,必须先声明赋值后才可以使用。
2.定义在局部范围内,如:方法内等,作用域只在所属的区域有效。
3.局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
4.在使用变量时需要遵循的原则为:就近原则,先在局部范围找,有就使用;接着在成员位置找。
方法的重载
定义——在一个类中方法名相同,但参数列表不用,与是否具有相同的访问修饰符、是否有返回值、是否抛出异常无关。
参数列表不同包括:
1. 方法中有参数无参数
2. 参数类型不同
3. 参数个数不同
4. 当参数类型、个数相同时,顺序不同
构造函数
n 用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种。
特点:
1:该函数的名称和所在类的名称相同。
2:不需要定义返回值类型。
3:该函数没有具体的返回值。
所有对象创建时,都需要初始化才可以使用
注意:
1. 一个类在定义时,如果没有定义过构造函数,那么该类中会自动生成一个空参数的构造函数,为了方便该类创建对象,完成初始化。如果在类中自定义了构造函数,那么默认的构造函数就没有了。
2. 一个类中,可以有多个构造函数,因为它们的函数名称都相同,所以只能通过参数列表来区分。所以,一个类中如果出现多个构造函数。它们的存在是以重载体现的。
构造函数和一般函数区别
1:格式不同:
构造函数不存在返回类型,函数名与所在类的类名一致;
普通函数有返回类型,函数名可以根据需求进行命名。
2:调用时期不同:
构造函数在类的对象创建时就运行;
普通函数在对象调用时才会执行。
3. 执行次数不同
一个对象创建后,其构造函数只执行一次,就是创建时执行;
一个对象创建后,其普通函数可以执行多次,取决于对象的调用次数。
EG:
public class Demo{
private int num=0;
//无参构造函数
Demo()
{
System.out.println("constractor_run");
}
//有参构造函数
Demo(int num)
{
System.out.println("constractor_args_run");
}
//普通成员函数
public void demoFunction()
{
System.out.println("function_run");
}}
构造函数的使用场景
构造函数是对新对象进行初始化,那么当开发中分析事物的时候,发现事物一出现就具备了某些特征时,就可以将其定义在构造函数中,这样方便快捷,也符合面向对象的编程思想。