`
L.G.Alexander
  • 浏览: 155708 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(十三):public类型的终态的成员变量,一般都要声明为static

 
阅读更多
public class PublicStaticFinalTest {
	public static final String str = "abc";
}

问题:为什么对于一个public类型的终态的成员变量,一般都要声明为static的?
解答:节省内存。分析:final是终态的,既然是终态的我们可以把它当作常量,一但赋值,它的值就不能去做任何的改变,是一个常量。既然是一个常量我们可以认为定义的这个常量的值只能读不能写。既然对于不能改变的量,那么举例说这个类有10对象,既然每个对象都有一个不能改变的常量,相当于这个常量有10份拷贝,分别在10个对象里面。如果加上static有什么好处呢?我们知道static是静态的,就是说不管这个类的对象有多少个,它的static的变量始终就只有那么一个,那么所有的都想都引用这同一个静态变量。某一个对象对它改变后会反应到其他对象里面去。将当前变量定义为static的,那么这个变量在内存里面就只有一份。它既然是只读的,那么在内存里面只有一份,所有对象都用这一份,如果不定义为static的,那么如果一个类有100个对象或者更多,那么在内存里面就有100份甚至更多的拷贝。加上static,在内存里面就只有一份拷贝,一份跟100份相比必然是节省内存了。所以对于一个public类型的终态的成员变量,一般都要声明为static的,如果不定义为static的编译不会错运行也不会错,但是会浪费内存。。
分享到:
评论

相关推荐

    Java中static变量作用和用法步骤

    static表示“全局”或者“静态”的意思,用来修饰成员...  用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。

    c++ 类中const成员变量的赋值方法

    在头文件的类的定义中定义了一个const成员变量c++ 规则: ...2、将const变量同时声明为 static 类型进行初始化。 Eg: #include class CTestA { public: CTestA():m_iSIZE(20) // method 1 { } ~CT

    Java 变量和数据类型

    定义了一个整型int类型的变量,名称为a初始值为1,不写初始值默认是0。 public class Text{ public static void main(String[] args) { int a=1; System.out.println(a); } } 变量的重要特点是可以重新...

    C++之类的静态变量

    每个对象都可以有只属于自己的成员变量 成员变量不能在对象之间共享 类的静态成员 静态成员变量 存储在 全局数据区 #include class Test { private: ///静态成员变量访问权限 static int c1; public: static int ...

    java继承详解

    常量的定义格式: public static final 数据类型 变量名 定义常量的时候,常量的名字要大写,如果存在两个单词组合起来的名字,要用下划线连接 public static final int AGE = 23;// public static final String ...

    java个人笔记总结包含45个word,绝对的原创。

    45个word,每个word都是本人精心积累,例如关于static用法的部分: class A{ public static int i=10; //不再是某个对象的,是所有对象共有的。静态变量存放在“数据段”,只有一个拷贝。属于类 public void show...

    值类型和引用类型的区别

    我们声明对象实例时也顺便分别进行 了初始化,首先我们看,zerocool对象的值类型成员,我们赋值为25(对,我今年25岁),anders(待会儿你们就知道是谁了)的Name属 性,我们赋值为“Anders”。齐活儿,接下来看我们...

    Java程序设计基础:变量的作用域.pptx

    变量的作用域 目录 课程导入 理解变量作用域的概念 理解局部变量与全局变量的区别及作用域 能区分局部变量与全局变量,并读懂...public static void method1( double n ) { //局部变量 n String s ; //局部变量 s for

    static 用法

    static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准). (1)局部静态变量 (2)外部静态变量/函数 (3)静态...

    跟我学JAVA-day11-类和对象.pdf

    行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可) 类的定义步骤: ①定义类 ②编写类的成员变量 ③编写类的成员方法 示例代码: public class 类名 { // 成员变量 变量1的数据类型 ...

    手机QQ源代码 Java版QQ源代码

    public static KQQMIDlet instance = null; public static Display display = null; public static Runtime runtime = null; public int gaugeState; public String strUserID; public String strPasswd...

    C#:(变量)字段和局部变量的作用域冲突

    C#把声明为类型级的变量看作字段,而把在方法中声明的变量看作局部变量。 代码如下:using System; namespace ConsoleApplication10{class Program{static int j = 20; public static void Main(string[] args){int j...

    C++静态成员变量和静态成员函数的使用方法总结

    类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据...

    C语言 全局变量和局部变量详解及实例

    C语言 全局变量和局部变量详解 核心内容: 1、局部变量和全局变量 变量按照作用域分为:全局变量和局部变量 全局变量的作用域:从定义位置开始到下面整个程序结束。 局部变量的作用域:在一个函数内部定义的...

    关于C++静态成员函数访问非静态成员变量的问题

    代码如下:class a{public: static FunctionA() { menber = 1; } private: int menber;}编译上述代码,出错。原因很简单大家都知道,静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象...

    Java面向对象程序设计(“方法”相关文档)共57张.pptx

    成员变量的声明格式: [<修饰符>] [static] [final] [transient] <变量类型> <变量名> static: 表示是一个类成员变量(静态变量); final: 表示是一个常量; (最终成员变量) 例:final double PI=3.1415926; ...

    C++静态成员函数不能调用非静态成员变量(详解)

    其实我们从直观上可以很好的理解静态成员函数不能调用非静态成员变量这句话因为无论是静态成员函数还是静态成员变量,它们 都是在类的范畴之类的,及在类的整个生存周期里始终只能存在一份。然而非静态成员变量和非...

    C#.Net基础5 基础入门知识 数据类型 范例 ppt 实例 可以直接运行

    1、变量类型 int double string char bool decimal 变量的使用规则:先声明再赋值最后使用 int number; number=10; number=20; Console.WriteLine(number); 2、Camel Pascal 3、运算符 赋值运算符:= 复合赋值...

    php中的静态变量的基本用法

    一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会。下次再调用这个函数的时候,该变量的值会保留下来。 静态的变量的基本用法 1. 在类中定义静态变量 [访问修饰符] static $变量名; 2. 如何...

    tomcat环境变量配置

    JDK环境变量配置: 1,新建变量名:JAVA_HOME,变量值:C:\Program Files\Java\jdk1.7.0 2,打开PATH,添加变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 3,新建变量名:CLASSPATH,变量值:.;%JAVA_HOME%\lib\...

Global site tag (gtag.js) - Google Analytics