当前位置:  编程技术>java/j2ee

java变量的区别浅析

    来源: 互联网  发布时间:2014-10-30

    本文导语:  类变量也叫静态变量,也就是在变量前加了static 的变量;实例变量也叫对象变量,即没加static 的变量;两者区别在于:类变量(静态变量)是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果,并...

类变量也叫静态变量,也就是在变量前加了static 的变量;
实例变量也叫对象变量,即没加static 的变量;
两者区别在于:
类变量(静态变量)是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果,并且类变量是可以直接通过类名来调用的 如:A.xingS;
而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象,实例变量顾名思义是属于实例的,所以只能通过实例来调用 如:A a=new A(); a.name;
举个不太恰当的例子:类变量就好比一个人的姓氏,实例变量就相当于人的名字,如果它父亲把姓改了,那它所有的兄弟姐妹姓都得改,但是它们的名字还是各用各的。
例:
代码如下:

public class A{ 
static  int xingS = 0; //类变量  
private int name = 0; //实例变量  
String id; //实例变量 
private String colorType; //实例变量  
private int size; //实例变量  
private static String depart; //类变量   f
inal String name="zwm"; //常量
}
public class B{  
public void main (String[] args){      
A son1= new A();      
A son2= new A();      
son1.xingS = 3;  // 等同于
A.xingS = 3;      
son1.name = 4 ;      
System.out.println(son2.xingS); //结果为3      
//类变量是针对所有对象的,所以son1改变xingS,son2的a也改变      
System.out.println(son2.name); //结果为0      
//实例只改变自身的,所以son1对象的name改变,不影响对象son2的name变量 
}
}

类变量又叫静态成员变量,它不需要创建对象就可以已经在内存中存在了,而在创建实例对象的时候,
内存中会为每一个实例对象的每一个非静态成员变量开辟一段内存空间,用来存储这个对象所有的非静态成员变量值。
即使两个不同的实例对象是属于同一个class类,但是它们的同名非静态成员变量在内存中占用的空间是不同的,
而静态成员变量也就是类变量相同。所有的实例对象都共用一个类变量,内存中只有一处空间是放这个类变量值的。
因此,如果一个对象把类变量值改了,另外一个对象再取类变量值就是改过之后的了。

    
 
 

您可能感兴趣的文章:

  • 浅析java class 文件
  • 浅析java中print和println的区别
  • 浅析Java方法传值和传引用问题
  • 浅析java中Integer传参方式的问题
  • 浅析java中ArrayList与Vector的区别以及HashMap与Hashtable的区别
  • 浅析Java中Split函数的用法技巧
  • Java8新特性之重复注解(repeating annotations)浅析
  • 浅析java的foreach循环
  • 浅析JAVA_HOME,CLASSPATH和PATH的作用
  • 浅析java volatitle 多线程问题
  • 浅析Java中Map与HashMap,Hashtable,HashSet的区别
  • java实现动态代理方法浅析
  • 浅析java程序中hibernate的应用总结
  • 浅析JAVA常用JDBC连接数据库的方法总结
  • Java8新特性之默认方法(default)浅析
  • 浅析Java Mail无法解析带分号的收件人列表的问题
  • java判断字符串String是否为空问题浅析
  • Java反射机制(Reflection)浅析
  • Java8新特性之Lambda表达式浅析
  • Java8中的类型注解浅析
  • java有无像vb那样的静态变量?java的staic是类的属性,那末,静态变量如何声明?
  • 大家快来帮帮我,关于JAVA的类变量:一定在定义成STATIC变量(即静态变量)吗?
  • Java两个变量的互换(不借助第3个变量)具体实现方法
  • 在Java中如何获得外部的环境变量
  • 一个.java文件中怎样来调用另一个.java文件中的变量及其它东西!
  • java程序环境变量的问题!
  • Java中怎样定义全局变量???
  • Java环境变量的设置方法(图文教程)
  • 急!送分求助,java程序中如何读取系统环境变量?
  • fedora下 java环境变量的配置
  • java判断字符串String是否为空问题浅析 iis7站长之家
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • 我想学Java,但不知道Java的实用的开发工具有那些,Java主要用在哪些方面,EJB到底是什么东西??
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javafilelistflavor定义及介绍
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmname定义及介绍
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3