第六章 构造方法、变量的作用域和生命周期(1.6)

七、构造方法

类中有一种特殊的方法,其方法名与类名相同没有返回值类型,这种方法叫构造方法,也叫构造函数或构造器

实例:

public class Student {
// 声明成员变量
String name; // 姓名
int age; // 年龄
String studentNo; // 学号

// 声明方法
// 没有参数的构造方法
public Student (){
	System.out.println("Student类无参数的构造方法被调用");
}

// 有一个参数的构造方法
public Student (String name) {
	this.name = name;
	System.out.println("Student类含有参数name的构造方法被调用");
}

// 有三个参数的构造方法
public Student (String name, int age, String studentNo) {
	this.name = name;
	this.age = age;
	this.studentNo = studentNo;
	System.out.println("Student类含有参数name、age、studentNo的构造方法被调用");
}

// 自我介绍
void introduce(){
	System.out.printf("大家好,我是%s,我今年%d岁,我的学号是:%s", name, age, studentNo);
	}
}

解释说明

  1. 构造方法主要用来在创建对象时为对象的成员变量赋初始值
  2. 构造方法不允许使用对象调用,只有在用new运算符实例化对象时才会被自动调用。
  3. 如果类中不显示声明构造方法,系统会为类默认提供无参数的构造方法。如果自定义了构造方法,系统默认的构造方法就不存在了。
  4. 一个类可以声明多个构造方法,即构造方法的重载,满足方法重载的要求即可。

上例中使用了this关键字,在Java中,this可以引用当前类的对象。

八、变量的作用域和生命周期

8.1、变量的作用域

变量的作用域就是指一个变量定义后,在程序的什么地方能够使用

Java中,一对大括号 {} 包含的区域,也被称之为一个代码块(语句块)。使用大括号{}的地方有:

  • 类声明、
  • 方法声明、
  • 方法中的循环体、
  • 分支条件后的语句等,

一个变量的作用域只被限制在该变量声明所在的代码块中(也就是离该变量的声明语句最近的大括号内)。

方法中声明的变量,称为局部变量,方法的形式参数也是方法的局部变量。局部变量只能在当前方法中使用;在判断代码块中声明的变量只能在当前判断代码块中使用,当前判断代码块之外不能正常使用;对循环代码块也是一样。

声明在类中,但在方法之外的变量称为成员变量。被static关键字修饰的成员变量在整个类声明里的成员方法中都可以使用;没有被static关键字修饰的成员变量在整个类声明里没有被static关键字修饰的成员方法中都可以使用。有时在一个方法中,会遇到局部变量成员变量同名的情况,此时,直接使用变量名其实是在使用局部变量,如果要使用成员变量,需要this.成员变量名。

8.2、变量的生命周期

变量的生命周期是指变量什么时候分配内存,什么时候从内存中回收

对于局部变量,会在方法或语句块执行的时候创建(在中分配内存),当它们执行完成后,变量随之被销毁。另外,局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

对于没有被static关键字修饰的成员变量,会在对象创建的时候创建,在对象被销毁的时候销毁(在堆中分配内存)。另外,成员变量在创建时具有默认值,数值型变量的默认值是0(整型是0,浮点型是0.0),字符型变量的默认值是’\u0000’,布尔型变量的默认值是false,引用类型变量的默认值是null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值