java基本知识——变量的使用规则详解

1.变量

1.1什么是成员变量?

1.1.1概念

成员变量指的是在类里定义的变量;成员变量又被分为类变量实例变量两种;而类变量指的就是有static修饰的变量,实例变量则无static修饰。

1.1.2生存范围比较

类变量:在类的准备阶段产生,在类被销毁时结束。
(类的生命周期:类加载、类验证、类准备、类解析、类初始化)
成员变量:在该类的实例被创建时产生,,在该实例被销毁时结束。
一般而言,类变量的生存范围大于成员变量的生存范围。

1.1.3简述

类变量—>依附于这个类—>与类共存亡;
实例变量—>依附于它的实例—>与实例共存亡;

1.1.4代码图片讲解

代码如下:

public class Demo {
	public static void main(String[] args) {
		System.out.println("age的初值为:" + Person.age);//类变量age已经初始化完毕,值为0,对应图1.1
		Person person = new Person();//创建Person对象,实例变量name已经产生,对应图1.2
		System.out.println("name的初值为:" + person.name);//实例变量name无初值,输出为null
	}
}
class Person{
	public String name;//实例变量
	public static int age;//类变量
}

图1.1
图

1.2什么是局部变量?

1.2.1概念

局部变量,指的时在方法中定义的变量。

1.2.2分类

局部变量分为形参方法局部变量代码块局部变量。(除形参外,其余两种变量需要程序员赋值初始化

1.2.2.1形参

形参是在定义方法时,用来接收调用该方法的一种参数。

public class Demo {
	public static void fun(int a) {//a为形参
		System.out.println(a);//形参在这个fun方法内有效
	}
	public static void main(String[] args) {
		fun(10);
	}
}
1.2.2.1方法局部变量

方法局部变量的作用域从定义了该变量开始,当该方法结束时消失。

public class Demo {
	public static void main(String[] args) {
		int a = 10;//方法局部变量需要程序员初始化
		System.out.println(a);
	}//方法结束,a消失
}
1.2.2.1代码块局部变量

代码块局部变量在该代码块结束时失效。

public class Demo {
	public static void main(String[] args) {
		for(int i = 0;i < 5;i++) {
			System.out.println(i);
		}
		//System.out.println(i);//离开了for这个代码块,代码块局部变量i消失,这行代码无法被执行
	}
}

2.变量使用规则(延伸)

2.1规则

  • 根据需要使用该变量的范围合理选择变量,不要扩大其生存时间
  • 如果增大了变量的生存时间,会导致内存开销增大,不利于提升程序的运行速度
  • 如果扩大了变量的作用域,这将不利于提升程序的内聚性。

低内聚性的坏处:
1、增加理解模块的困难度。
2、增加维护系统的困难度,因为一个逻辑修改会影响许多模块,而一个模块的修改会使得一些相关模块也要修改。
3、增加模块复用困难度,因为大部分的应用程序无法复用一个由许多不一定相关的机能组成的模块。

2.2根据基本代码举例说明

以for循环为例
for( ……;……;……){

}
欠佳方案1:

public class Demo {
	static int i;//使用类成员变量
	public static void main(String[] args) {
		for(i = 0;i < 5;i++) {
			System.out.println(i);
		}
	}
}

欠佳方案2:

public class Demo {
	public static void main(String[] args) {
		int i;//使用方法局部变量
		for(i = 0;i < 5;i++) {
			System.out.println(i);
		}
	}
}

最优方案:

public class Demo {
	public static void main(String[] args) {
		for(int i = 0;i < 5;i++) {//使用代码块局部变量,生存周期恰好合适
			System.out.println(i);
		}
	}
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值