Java局部变量与成员变量的区分

Java中一个类的定义包括两个部分:类的声明和类体的定义。类体中通常包含三部分:成员变量、构造方法和成员方法。

[修饰符]class类名{
//1、成员变量
//2、构造方法
//3、成员方法
}

***变量是在程序运行中其值可以改变的量。类中的成员变量通常称为字段,方法或代码块中的变量称为局部变量,方法声明中的变量通常称为参数。

成员变量的定义格式为:[修饰符] 类型 变量名 [=初值]

public int id;
public String name;
private double balance;

其中用public修饰的变量为公共变量,公共变量可以被任何方法访问;用private修饰的变量成为私有变量,私有变量只能被同一个类访问。

如果成员变量用static修饰,则该变量称为静态变量或类变量,否则称为实例变量。其实静态变量和成员变量的区别是:在创建类的对象时,java运行时系统为每个对象的实例变量分配一块内存,然后通过该对象来访问实例变量。而对于静态变量,java运行时系统在类装载时为这个类每个静态变量分配一块内存,以后再生成该类的对象时,这些对象将共享同名的静态变量,每个对象对静态变量的改变都会影响到其他对象。

packpage com.boda.xy;
public class Counter{
  public int x;  //x为实例变量
  public static int y=0;  //y为静态变量
  public Counter(){
    x=100;
  }
}

局部变量存在于方法或代码块中,声明一个局部变量时,系统为该变量分配内存,只要该方法没有返回,该变量会一直保存在内存中,一旦该方法返回,变量将从内存栈中被删除,不能再被访问,这也是他的生存期。局部变量的声明并创建时可以用var进行类型推断,这也可以是与成员变量区分的一个标志。

var name="张三";  //这里类型推断var应为String

除以上之外用UML图也能够清晰的表示描述一个类,只要弄清楚整个代码体系就能够区分清楚成员变量和局部变量了,如下演示一个UML图

Account  //类名

-id=int  //变量清单,+表示public成员,-表示private成员,#表示protected成员

-name:String

-balance:double

+Account()  //构造方法

+deposit(amount:double):viod

+withdraw(account:double):viod

//看看java实验例题

定义一个泛型类Point<T>,其中包含x和y两个类型为T的成员,定义带两个参数的构造方法,为x和y定义setter和getter方法,另外定义translate()方法将点移到新的坐标,编写main()方法,创建 Point<Integer>对象,调用translate()方法。

public class Point<T> {
	private T x;//定义泛型成员变量
	private T y;
	public Point(T x, T y) {
	this.x = x;
	this.y = y;//this指使用的是成员变量
	}
	public T getterX() {
	return x;
	}
	public void setterX(T x) {
	this.x = x;
	}
	public T getterY() {
	return y;
	}
	public void setterY(T y) {/
	this.y = y;
	}
	public void translate(Point<T> p){//定义translate()方法将点移到新的坐标
	System.out.println("点的x坐标为:"+p.getterX());//调用getter方法
	System.out.println("点的y坐标为:"+p.getterY());
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Point<Integer> p=new Point<Integer>(1,2);
		//创建 Point<Integer>对象,给x,y赋值
		p.translate(p);//调用translate()方法
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值