类变量与实例变量

public class Cat {
String name;
int age;
static void test(){
System.out.println("test static");
}
public Cat(String name,int age){
System.out.println("执行构造器");
this.name = name;
this.age = age;

}
{//这里一定要用花括号
System.out.println("执行非静态初始化块");
weight =2.0;

}
double weight =2.3;
/**
* 分两步执行:
* double weight;
* weight = 2.3;(这条语句将会被提取到java类的构造器中执行,与非静态初始化代码块合并并且地位平等)
*/
/**
* 初始化块中指定初始值和定义weight时指定初始值都属于对该实例变量执行的初始化操作,它们的
* 执行顺序与它们在源程序中的排列顺序相同
*/
public String toString(){
return "name:"+name+","+"age:"+age+","+"weight:"+weight;
}
public static void main(String[] args) {
Cat cat = new Cat("kitty",2);
System.out.println(cat);
Cat cat2 = new Cat("tom",3);
System.out.println(cat2);
}
/**
* console:
* 执行非静态初始化块
* 执行构造器
* name:kitty,age:2,weight:2.3
* 执行非静态初始化块
* 执行构造器
*name:tom,age:3,weight:2.3
*总结:
*1、同一个jvm中,每个类只对应一个Class对象但每个类可以创建多个java对象
*2、用static修饰的成员变量是类变量,属于类本身,通过类访问
*3、没有使用static的成员变量是实例变量,属于该类的实例
*4、实例变量的初始化时机如上例所示
*
*/
}

  用jdk提供的javap工具了解java编译器的机制。

1、javac Cat.java

2、javap -c Cat.class

3、当创建任何java对象时,程序总会先一次调用每个父类非静态初始化块、父类构造器(总是从Object开始)执行初始化,最后

才会调用本类的非静态初始化块、构造器执行初始化。

时间: 2024-10-05 02:42:44

类变量与实例变量的相关文章

类变量和实例变量的区别

1.简介:       1.类变量也叫静态变量,也就是在变量前加了static 的变量:       2.实例变量也叫对象变量,即没加static 的变量: 区别在于:类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果:而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象: 例: 1 public class A{ 2 static int a = 0; //类变量 3 private int b = 0; //实力变量 4 } 5

python——实例方法、静态方法、类方法、类变量和实例变量浅析

概述: 实例方法就是类的实例能够使用的方法. 静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作.使用装饰器@staticmethod定义静态方法.类对象和实例都可调用静态方法. 类方法是将类本身作为对象进行操作的方法.类方法使用@classmethod装饰器定义,其第一个参数是类,约定写为cls.类对象和实例都可以调用类方法. super用来执行父类中的函数. 类变量定义在类的定义之后,实例变量则是以为self.开头. 如何调用父类的构造函数:子类(派生类)并不会自

怎么区分类变量和实例变量?

# -*- coding: utf-8 -*- #python 27 #xiaodeng #怎么区分类变量和实例变量? #实例变量:在变量前面添加了self,就是实例变量,比如:self.name(完整定义为:属于实例私有,对实例变量的操作不会影响到其他的实例对象) #类变量:不添加前缀self,就是类变量(完整定义为:被该类的所有实例可以共享的变量,如果某个实例修改了该变量,这个变量可以被其他实例看到) class Person() : count = 0 def __init__(self,

变量:类变量,实例变量

1. 分类 分为类变量(静态变量.全局变量).实例变量.局部变量.其中静态变量.实例变量的区别是是否被static修饰 2. 类变量与实例变量在内存和调用上的区别 (1)调用:类变量是用"类名.变量名"格式来调用,实例变量通过"对象名.变量名"格式来调用 (2)内存: 类变量在类加载的时候就被初始化,而实例变量在对象new 出来后初始化. 类变量单独划分一块内存区域,独立于该类的任何对象.也就是说,不依赖于特定的实例,被类的所有实例共享: 实例变量在对象new出来后

python中的实例方法、静态方法、类方法、类变量和实例变量

http://www.jb51.net/article/49402.htm 注:使用的是Python2.7. 一.实例方法 实例方法就是类的实例能够使用的方法.如下: 复制代码 代码如下: class Foo:    def __init__(self, name):        self.name = name    def hi(self):        print self.name if __name__ == '__main__':    foo01 = Foo('letian')

【类不类二】Python的类变量与实例变量

在研究类的时候,难免会有很多疑问,C论坛和博客园高手如云(不知道是不是也美女如云), 搜到了这篇博文,是介绍Python的类变量和实例变量的 ! 刚好在下对self.***这种形式的实例变 量不是很理解,就拿来与诸君共享! C博客的大伽: http://blog.csdn.net/xxkkff/article/details/4396895 上一篇[类不类2]: http://www.cnblogs.com/Ruby517/p/5709558.html 一般的类定义是写成这种形式 class <

【JAVA&#183;转】类变量和实例变量的区别

类变量和实例变量的区别 类变量也叫静态变量,也就是在变量前加了static 的变量:实例变量也叫对象变量,即没加static 的变量:区别在于:    类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果:而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象:例:public class A{    static  int a = 0; //类变量    private int b = 0; //实力变量} public class B

类变量和实例变量的区别是什么?

类变量也叫静态变量,也就是在变量前加了static 的变量:实例变量也叫对象变量,即没加static 的变量:区别在于:   类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果:而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象:例:public class A{   static  int a = 0; //类变量   private int b = 0; //实力变量} public class B{   public void

类变量,实例变量

1 class a(): 2 name="11"#类变量 3 global name1#类中的全局变量 4 name1 = "22" 5 def __init__(self): 6 print self.name #实例可以访问类变量 7 self.name = "33" 8 def do(self): 9 print self.name 10 print a.name 11 print name1 12 #print name #报错,全局变量

Java中的类变量、实例变量、类方法、实例方法的区别

类变量:形如static int a; 顾名思义,类变量可以理解为类的变量,类变量在类加载的时候就已经给它分配了内存空间,不同于实例变量(int a; ),实例变量是在该类创建对象的时候分配内存的.并且,每创建一个对象,就会为该实例变量分配相应的内存空间,而类变量它不属于任何一个对象,它为所有对象所共享,所有对象的类变量占用相同的一处内存空间.调用类变量过程中,可以用 类名.类变量 也可以 对象名.类变量 来调用.类变量同于C/C++中接触的static变量,有记忆功能. 类方法:static