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
以上就是构造器的使用