实例变量:定义在类中但在任何方法之外。(New出来的均有初始化)
创新互联服务项目包括通州网站建设、通州网站制作、通州网页制作以及通州网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,通州网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到通州省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
当一个对象被实例化之后,每个实例变量的值就跟着确定;
实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
实例变量可以声明在使用前或者使用后;
访问修饰符可以修饰实例变量;
实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。 局部变量:定义在方法之中的变量。
1. 局部变量要先赋值,再进行运算,而实例变量均已经赋初值。(这是局部变量和实例变量的一大区别)
2. 实例变量的对象赋值为null。
3. 局部变量不允许范围内定义两个同名变量。实例变量的作用域在本类中完全有效,当被其他的类调用的时候也可能有效。
4. 实例变量和局部变量允许命名冲突。 public class Sample
{
private int a=1; //实例变量
public void b()
{
int a=2; //局部变量
System.out.println(局部变量:a=+a);
System.out.println(实例变量:a=+this.a);//局部变量的作用域内引用实例变量:this.变量名
}
public static void main(String[] args)
{
new Sample().b();
}
}
运行输出:
局部变量:2
实例变量;1
Java中的类如果要实例化的话,必须手动编写,不能由系统自动生成,实例如下:
public class CeShi{
int i;
public static void main(String[] args){
Ceshi ce = new Ceshi();
}
}
手动编写的例子如上述代码,Java中还提供了clone克隆的方式来生成实例变量,只需要该类实现clone接口。
1、方法内调用变量
如果方法内有与全局变量同名的局部变量存在,那么回默认调用局部变量,区分的话就是用this
用this引用的是全局变量,没有的就是局
public class test{
static public int a = 0;
public int num = 1;
public void abc(num){
System.out.println(this.num);//全局变量
System.out.println(num);局部变量
}
}
2、静态全局变量与实例
拥有静态变量的类可以实例化,但是静态变量只在内存中存在一个,但是可以通过对象调用改变
接着上面那个test类
test t1 = new test();
test t2 = new test();
System.out.println(t1.a);
t1.a = 100;
System.out.println(t2.a);
我们在这里建立了t1,t2两个test的实例对象,为num在内存中开辟了2个空间,也就是内存中有2个num,但是他们所属实例不同,所以他们两个可以是不同的,但是a在内存中只有1个,所有的实例调用的是同一个a。
上述代码运行结果是1和100。因为在改变t1的a的时候等于修改了唯一一个a,所以t2输出的a就变成了100