java和C++中的static

来源:互联网 发布:新浪微博数据库设计 编辑:程序博客网 时间:2024/06/06 02:46
相同和不相同的部分:

一、static修饰方法时方法是可以直接用类名调用的,它是属于静态数据的。静态的数据,在编译的时候即编译器把类加载到内存的时候,只是把类的静态函数和类的静态数据加载内存中并分配一个独立的空间供类的所有的对象使用,即一个对象改变静态数据就会影响另一个对象的静态数据,因为静态数据只有一个,是所有对象共享的。二、但是C++ 中static的含义要比iava广得多。static变量本身有种“共享”的属性,并且共享它的“用户”的权限都是可读可写。其中若有一位改变了它的值,其他的“用户”也只能接受这种改变。对于c++来说:1.全局静态变量或者局部静态变量可以让它们相应作用域中的“用户”来使用;2.类中的静态成员变量和静态成员函数可以用类名访问或者用对象访问(如果权限允许的话),而且其静态成员变量仅能在类外初始化:variable_type CLASSNAME::variable_name = value。对于Java而言,因为Java严格遵守opp思想,static仅体现在类的成员变量和方法上。用法同2,但是其初始化可以在类内部完成。
概括来说:
1.static成员可以直接通过类名来访问,这个在两种语言都是一致的,只是语法上有一点区别。2.static在C++中的含义要多一些, 比如在C++中还可以用static修饰全局变量和局部变量,而java中则只能用于定义静态成员。Java语言是基于C++开发出来的,所以一些语法语义上是相同的。

0 0