Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 860|回复: 0

实例变量和类变量的声明和访问

[复制链接]

该用户从未签到

发表于 2011-9-14 20:49:31 | 显示全部楼层 |阅读模式
对象的使用包括引用对象的成员变量和方法,通过运算符“.”可以实现对变量的访问和方法的调用,变量和方法可以通过一定的访问权限来允许或禁止其他对象对它的访问。
  类变量和类方法的使用只需要类名。通过运算符“.”可以实现对变量的访问和方法的调用。
  在类中声明一个变量或方法时,可以指定它为类变量(静态变量)和类方法。其格式如下:
  static type classVar;
  static returnType claSSMethod([paramlist]){
    ……
  }
  上面的程序段分别声明了类变量和类方法。如果在声明时不用 static 修饰,则声明为实例变量和实例方法。
  在生成每个类的实例对象时,java运行时系统为每个对象的实例变量分配一块内存,然后可以通过该对象来访问这些实例的变量。不同对象的实例变量是不同的。而对于类变量来说,在生成类的第一个实例对象时,Java运行时系统对这个对象的每个类变量分配一块内存,以后再生成该类的实例对象时,这些实例对象将共享同一个类变量,每个实例对象对类变量的改变都会直接影响到其他实例对象。类变量可以通过类名直接访问,也可以通过实例对象来访问,两种方法的结果是相同的。
关于实例变量的例子。
//instVar.java
class Koa{
   int a;
   public void display(){
      System.out.print(" a="+a);
   }
}
public class instVar{
   public static void main(String args[]){
      koA a1=new koA(); a1.a=10; //a1是一个实例对象
      koA a2=new koA(); a2.a=20; //a2是另一个实例对象
      a1.display();
      a2.display();
   }
}
运行结果为:
a=10 a=20
  一个类通过使用 new 运算符可以创建多个不同的对象,这些对象将被分配不同的内存空间,也就是说不同的对象的实例变量将被分配不同的内存空间。本例中a1、a2是不同的实例对象,其成员变量虽然同名,但分配在不同的内存区域,因此本质上是两个不同的变量。
类变量的例子。
//classVar.java
class koB{
   static int a;
   public void display(){
      System.out.print(" a="+a);
   }
}
public class classVar{
   public static void main(String args[]){
      koB a1=new koB(); a1.a=10; //a1是一个实例对象
      koB a2=new koB(); a2.a=20; //a2是另一个实例对象
      koB.a=50; //类方法直接访问类变量
      a1.display();
      a2.display();
   }
}
运行结果为:
a=50 a=50
  如果类中的成员变量有类变量,那么所有的对象的这个类变量都使用相同的一段内存,改变其中一个对象的这个类变量就会影响到其他对象的这个类变量。也就是说所有对象共享类变量。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-6-7 12:35 , Processed in 0.600078 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表