java作用域,构造器

java作用域

java作用域的介绍

java的作用域分为全局遍历(属性)和局部变量,它们是java中的主要变量;

全局变量

全局变量就是作用于全局,作用域是整个类体,就是作用于代码块全部;

全局变量的一些细节

全局变量可以不赋值有默认值,例如整数类型的默认值就是0;

局部变量

局部变量就是除了属性之外的其他变量,作用域为定义它的代码块中

局部变量的一些细节

局部变量没有默认值,如果不被赋值就不能使用;

全局变量和局部变量

1.属性和局部变量可以重名,访问时遵循就近原则;

2.在同一个作用域中,比如在同一个成员方法中,两个局部变量,不能重名;

3.属性生命周期较长,伴随着对象的创建而创建,伴随着对象的死亡而死亡,局部变量,生命周期较短,伴随着它的代码块的执行而创建,伴随着代码块的结束而死亡,即在一次方法的调用过程中

4.作用域范围不同

全局变量/属性:可以被本类使用,或其他类使用(通过对象调用)

局部变量:只能在本类中对应的方法中使用

5.修饰符不同

全局变量属性可以加修饰符;

局部变量不可以加修饰符

构造器/构造方法

构造方法的基本介绍

构造方法又叫构造器,是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。他有几个特点:

1.方法名和类名相同

2.没有返回值

3.在创建对象时,系统会自动的调用该类的构造器完成对象的初始化

构造器的基本格式

public 类名(){
    ...
}
//()里面的内容是构造器的形参列表,规则和成员方法一样

这里需要注意一点就是构造器是完成对象的初始化,说明对象已经被创建,在对象创建的基础上,才能使用构造器

关于代码创造的具体示例

package 构造器;

public class test2 {
    public static void main(String[] args) {
        Like a=new Like();
        System.out.println(a.name);
        System.out.println(a.k);
    }
}
class Like{
    public String name;
    public int k;
}

这是没有规定构造器,以上代码输出为

null
0

这就与上面的全局变量联系在一起了

在看下面的代码

package 构造器;

public class test1 {
    public static void main(String[] args) {
       Person a = new Person("ling",16);
       System.out.println(a.age);
       System.out.println(a.name);
    }
}
class Person{
    String name;
    int age;
    public Person(String pName,int Page){
        name=pName;
        age=Page;
    }

}

这是自己规定构造器的例子

以上代码的输出

16
ling

这就是可以用构造器初始化自己想要的变量的值

构造器的使用细节

1.一个类可以定义多个不同的构造器,即构造器也可以进行重载,比如,我们可以在给Person类定义一个构造器,用来创建对象的时候,只定义人名,而不需要指定年龄

2.构造器名和类名要相同

3.构造器没有返回值

4.构造器是完成对象的初始化,并不是创建对象

5.在创建对象时,系统自动的调用该类的构造方法

6.如果没有定义构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器)比如Person(){},可以使用javap指令反编译看看;

7.一旦定义了自己的构造器,默认的构造器就覆盖了,就不能在使用默认的无参构造器了,除非自己显试的定义一下,即:Person(){}

构造器举一个例子

接下来就是写一个构造器相关的题目,题目如下

在前面定义的Person类中添加两个构造器:

第一个无参构造器:利用构造器设置所有人的age属性初始值都为18

第二个带pName和pAge两个参数构造器;

使得每次创建Person对象的同时初始化对象的age属性值和name属性值。

分别使用不同的构造器,创建对象,代码如下

package 构造器;

public class test1 {
    public static void main(String[] args) {
       Person a = new Person("ling",16);
       Person b=new Person();
       System.out.println(a.age);
       System.out.println(a.name);
       System.out.println(b.age);
    }
}
class Person{
    String name;
    int age;
    public Person(){
        age=18;
    }
    public Person(String pName,int Page){
        name=pName;
        age=Page;
    }

}

输出结果

16
ling
18

 以上就是构造器的使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值