java学习--static和final 博客分类: java
程序员文章站
2024-03-24 10:16:58
...
static 与变量、方法一起使用,表示是“静态”的。
1 静态变量属于类,不属于任何独立的对象,所以无需创建类的实例就可以访问静态变量。
2 静态方法是一种不能向对象实施操作的方法。因为静态方法不能操作对象,所以不能在静态方法中访问实例变量,只能访问自身类的静态变量。
3 一个类的静态方法只能访问静态变量;
4 一个类的静态方法不能够直接调用非静态方法;
5 如访问控制权限允许,静态变量和静态方法也可以通过对象来访问,但是不被推荐;
6 静态方法中不存在当前对象,因而不能使用 this,当然也不能使用 super;
7 静态方法不能被非静态方法覆盖;
8 构造方法不允许声明为 static 的;
9 局部变量不能使用static修饰。
注:只要类被装载,不管你是否使用了这个static 变量,它都会被初始化。
public class Demo { static int i; int j; public static void main(String[] args) { Demo obj1 = new Demo(); obj1.i = 10; obj1.j = 20; Demo obj2 = new Demo(); System.out.println("obj1.i=" + obj1.i + ", obj1.j=" + obj1.j); System.out.println("obj2.i=" + obj2.i + ", obj2.j=" + obj2.j); } }
final 所修饰的数据具有“终态”的特征,表示“最终的”意思。
1 final 修饰的类不能被继承。
2 final 修饰的方法不能被子类重写。
3 final 修饰的变量(成员变量或局部变量)即成为常量,只能赋值一次。
4 final 修饰的成员变量必须在声明的同时赋值,如果在声明的时候没有赋值,那么只有 一次赋值的机会,而且只能在构造方法中显式赋值,然后才能使用。
5 final 修饰的局部变量可以只声明不赋值,然后再进行一次性的赋值。
final 一般用于修饰那些通用性的功能、实现方式或取值不能随意被改变的数据,以避免被误用,例如实现数学三角方法、幂运算等功能的方法,以及数学常量π=3.141593、e=2.71828 等。
public final class Demo{ public static final int TOTAL_NUMBER = 5; public int id; public Demo() { // 非法,对final变量TOTAL_NUMBER进行二次赋值了 // 因为++TOTAL_NUMBER相当于 TOTAL_NUMBER=TOTAL_NUMBER+1 id = ++TOTAL_NUMBER; } public static void main(String[] args) { final Demo t = new Demo(); final int i = 10; final int j; j = 20; j = 30; // 非法,对final变量进行二次赋值 } }
本文示例参考自:http://www.weixueyuan.net
推荐阅读
-
java学习--继承 博客分类: java java
-
java学习--super和this 博客分类: java javasuperthis
-
java学习--static和final 博客分类: java
-
java学习--继承 博客分类: java java
-
java 求最大公约数和最小公倍数 博客分类: JAVA java最大公约数最小公倍数
-
java编译和类加载详述 博客分类: JAVA java
-
selenium不打开浏览器和打开浏览器-很方便(java) 博客分类: Java_aboutTesting_自动化测试
-
xml文件和java对象之间转换 博客分类: Java EE xmljava
-
Socket的长连接和短连接-Java实现-关键点 博客分类: Java_about
-
Java中replace和replaceAll的区别 博客分类: java java正则表达式