理解java和python类变量
最可怕的不是犯错而是一直都没发现错误,直到现在我才知道自己对类变量的理解有问题。
大概可能也许是因为不常用类变量的原因吧,一直没有发现这个问题。最近在看C++时才知道了类变量到底是什么?
以前我一直觉得类变量和成员变量的`唯一区别是类变量可以通过类名直接访问,是静态的。而成员变量需要实例化一个类后通过实例来访问。
万万没想到忽视了类变量在一个类中只有一个,各个实例中的都是同一个的,在一个实例中修改会影响其他实例中的类变量...(虽然平常也没有因为这个而引起什么bug,但是还是要补上认知的漏洞)。
这里有用java和python写的2个例子:
public class OO{ public static String s; public String m; static{ s = "Ever"; } public static void main(String[] args){ OO o1 = new OO(); OO o2 = new OO(); o1.m = "Once"; //不同实例中的类变量值/地址相同 tln(o1.s); tln(o2.s); tln(Code()); tln(Code()); o1.s = "123"; tln(o2.s);//更改类变量后影响了其他实例 tln(Code()); tln(Code());//NullPointerException //成员变量具有不同的地址 }}
#!/bin/pythonclass B: def whoami(self): print("__class__:%s,self.__class__:%s"%(__class__,self.__class__))class C(B): count = 0 def __init__(self): super(C,self).__init__() = 0 def add(self): __class__t += 1 += 1 def print(self): print("Count_Id:%s,Num_Id:%s"%(id(__class__t),id())) print("Count:%d,Num:%d"%(__class__t,))i1 = C()i2 = C()mi()mi()#i1的成员变量增加了1次,i2的成员变量增加了2次,类变量共增加了3次()()()t()t()
-
java中反射机制
导语:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。下面我们来看看java中反射机制,希望对大家有所帮助。Java中什么是反射机制:(JavaReflactioninaction)Java反射...
-
计算机二级JAVA考试构建JAVA程序2017
很多人一见到说要编程就以为很难,其实只有一点一滴学知识点也不难,下面是小编整理的计算机二级JAVA考试构建JAVA程序介绍,欢迎阅读!第一个javaapplicationjava程序分为javaapplication(java应用程序)和javaapplet(java小应用程序)两种。下面让我们编写一个java应...
-
新手学习Java最高效的10个计划
对于新手来说学习Java如同堵天书,下面是本站小编收集的关于新手学习Java最高效的10个计划,希望可以为您的学习带来帮助!计划一:了解未来技术发展方向两耳不闻窗外事,在如今是不合适的,尤其是在瞬息万变的互联网时代,作为一个开发者技术跟不上可以去专研,思想要跟不上,...
-
java system类使用方法示例
常用的方法:复制代码代码如下:longcurrentTimeMillis();获取当前时间的毫秒值voidexit();终止当前正在运行的Java虚拟机。复制代码代码如下:publicstaticvoidMethod(){longl=entTimeMillis();tln(l);();}描述系统属性信息:Propertiesroperties();该方法获取的`信...
相关文章
- java环境变量path和classpath的配置过程
- php和javascript之间变量的传递实现代码
- java使用ConcurrentHashMap和计数器实现锁的方法
- Happy Dragon Boat Festival英语作文
- Java Tomcat和激活MyEclips的深入理解
- Java和Python有什么区别
- java如何利用java.net.URLConnection发送HTTP请求
- 中学英语have and eye on,have an eye to,have an eye for这三
- Python和JavaScript语言转换的常用工具
- java与javascript之间json格式数据互转详解