java静态变量、常量和方法
2015-12-17 21:54
381 查看
(1)提示:静态变量被类中的所有对象所共享,静态变量不能访问类中的实例成员。
(2)如果想让一个类的所有实例共享数据,就要使用静态变量(static variable),也成为类变量。静态变量将变量值储存在一个公共的内存地址。因为他是公共地址所以如果某一个对象修改了静态变量的值,那么同一个类的所有对象都会受影响。
(3)静态方法和静态数据可以通过引用变量或他们的类名来调用。
(4)提示:使用类名 . 方法名(参数)的方式调用静态方法,使用“类名 . 静态变量”的方法访问静态变量。这会提高程序的可读性,因为可以很容易的识别出类中的静态方法和数据。
(5)因为静态方法和静态变量在类实例化之前就有,他们存在的时候可能没有实例对象,所以静态方法不能调用实例方法或者实例数据。(静态方法和变量不属于某个特定对象)
实例方法可以调用实例方法和静态方法,以及访问实例数据域和静态数据域。
在Math类中没有一个方法是依赖于一个特定实例的,例如:random,pow,sin和cos。因此这些方法都是静态方法。
(2)如果想让一个类的所有实例共享数据,就要使用静态变量(static variable),也成为类变量。静态变量将变量值储存在一个公共的内存地址。因为他是公共地址所以如果某一个对象修改了静态变量的值,那么同一个类的所有对象都会受影响。
(3)静态方法和静态数据可以通过引用变量或他们的类名来调用。
(4)提示:使用类名 . 方法名(参数)的方式调用静态方法,使用“类名 . 静态变量”的方法访问静态变量。这会提高程序的可读性,因为可以很容易的识别出类中的静态方法和数据。
(5)因为静态方法和静态变量在类实例化之前就有,他们存在的时候可能没有实例对象,所以静态方法不能调用实例方法或者实例数据。(静态方法和变量不属于某个特定对象)
实例方法可以调用实例方法和静态方法,以及访问实例数据域和静态数据域。
设计指南:
如何判断一个变量或方法应该是实例的还是静态的?如果一个变量或方法依赖于类的某个具体实例,那就应该将它定义为实例变量或实例方法。如果一个变量或方法不依赖于类的某个具体实例,就应该将它定义为静态变量或方法。例如每个圆都有自己的半径,半径依赖于某个具体的圆。半径radius就是circle类的一个实例变量。在Math类中没有一个方法是依赖于一个特定实例的,例如:random,pow,sin和cos。因此这些方法都是静态方法。
警告:
一个常见的设计错误就是将一个本应该声明为静态的方法声明为实例方法。例如:方法factorial(int n)应该定义为静态的,如下图所示,因为他不依赖于任何具体的实例。<span style="color:#ff0000;"></span><pre name="code" class="java">public class Test{ public static int factorial (int n) { for (int i = 1; i <= n; i++) { result += 1; } return result; } }
相关文章推荐
- 国密算法SM4,3DES算法和AES三种加密算法的java实现
- JAVA环境变量配置
- java设计模式(八)--模板方法模式
- Android实战(一)------Myeclipse10搭建android运行环境图文详细步骤--------SDK的安装配置
- Android实战(一)------Myeclipse10搭建android运行环境图文详细步骤--------SDK的安装配置
- java开发俄罗斯方块学习笔记 Day-5 封装
- 一段代码让你秒懂java方法究竟是传值还是传地址
- 更改Eclipse中js文件的编辑方式,从而可以利用ctrl键快速定位方法
- maven项目打包注意事项
- Struts2执行流程
- spring4 hibernate4 freemaker
- java堆内存探究
- JRE和JDK
- java中静态代理,动态代理知识的补充
- java 集合框架
- JAVA布局基础正确源代码
- Java 控制台模拟 福彩3D 系统
- spring mvc controller间跳转 重定向 传参
- struts2常用标签之form标签
- JAVA-系统-【2】-创建自增长的用户表