Think in java(一)域的初始化问题与static声明

1.初始化数据域有哪些方法?

数据域是全局变量存放的地方。初始化数据域有三种方法,分别为在声明中赋值,在构造器中赋值与初始化块进行赋值。

2.声明中是否可以不赋值?

在没有显式的赋值时,域会被自动赋予初始值,而方法中的变量也就是局部变量必须赋予初始的值,并且注意局部变量不能声明静态变量。静态变量只能在域中用static声明,并且在类中加载一次。一般尽量给变量赋予初始值会使代码可读性更高。

3.变量在初始化时可否调用方法?

可以,变量初始化可以赋予常量,也可以调用方法赋予初始值。

4.变量初始化的顺序是什么?

首先所有数据域被初始化为默认值

按照在类声明中出现的次序,一次执行所有域初始化语句与初始化块。

静态数据初始化先于非静态数据初始化。

如果构造器第一行调用了第二个构造器,则执行第二个构造器。

执行这个构造器的主题。

5.是否可以将全局变量与局部变量设置成相同名字。

可以,此时需要用this.变量名 = 变量名这种语法,甚至推荐这样做,会更清晰。如果两个名字不一样则不需要用到this关键字。

6.this关键字还有什么其他用法?

第二个用法是可以用于return this返回当前的对象,最后一个用法是用于构造器中,用来调用另一个构造器。

7.初始化块的语法是什么?

可以将一些变量用花括号括起来表示初始化块,用static声明为静态初始化块。这种机制不是必须也不常见,建议将初始化代码放到构造器中。

8.全局变量的初始化编写代码的顺序是什么?

由于全局变量初始化由特定的顺序,编码也尽量按照这个顺序,即静态变量,变量,初始化块,构造器。

9.static声明的方法有什么特殊之处?

首先之前提到过不能再静态方法中声明静态变量,另外静态方法也不能调用非静态方法,静态方法中不能使用this关键字。他很像全局方法,如果在java中出现大量静态方法,就该考虑重新设计程序,毕竟java是面向对象的编程语言,而static不是面向对象的。

10.构造方法可以重载吗?

可以,和一般方法重载一样。一个方法的签名包括名字与参数列表,其中参数列表包含参数数量,类型与顺序。方法签名相同而返回值不同的方法不能称为方法重载,是不允许的。

下面有一个实际例子:

package test;

class Bowl{
	Bowl(int num){
		System.out.println("bowl"+num);
	}
}

class Table{
	static Bowl b1 = new Bowl(1);
	Table(){
		System.out.println("table");
	}
	void dosome(int num){
		System.out.println("tabledosome"+num);
	}
	static Bowl b2= new Bowl(2);
}

class Cup{
	Bowl b3 = new Bowl(3);
	static Bowl b4= new Bowl(4);
	Cup(){
		System.out.println("cup");
	}
	void dosome(int num){
		System.out.println("cupdosome"+num);
	}
	static Bowl b5= new Bowl(5);
}
public class StaticInitialization {
	public static void main(String[] args){
		System.out.println("main");
		new Cup();
		new Cup();
		table.dosome(1);
		cup.dosome(1);
		
	}
	static Table table = new Table();
	static Cup cup = new Cup();
}

结果为

bowl1
bowl2
table
bowl4
bowl5
bowl3
cup
main
bowl3
cup
bowl3
cup
tabledosome1
cupdosome1
注意,该程序只是为了演示,不建议编码顺序如此混乱,应该按照推荐顺序编码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值