在Java中,final修饰的类有什么特点
展开全部
关于Java中的final(2010-09-09 14:19:48)转载▼标签: javafinal 分类: Java知识学习
Java中的final共有三种用法:
final成员变量
当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变,但引用变量所指向的对象中的内容还是可以改变的。
其初始化可以在三个地方,
一是其定义处,也就是说在final变量定义时直接给其赋值,
二是在构造函数中。而且在Java1.1以前,只能是在定义时给值。
三是在初如化代码块中{} 或者 static{}
下面这段代码演示了这一点:更加详细的探讨请参考关于final变量的初始化探讨
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
public class Bat {
final double PI = 3.14; // 在定义时便给址值
final int i; // 因为要在构造函数中进行初始化,所以此处便不可再给值
final List list; // 此变量也与上面的一样
Bat() {
i = 100;
list = new LinkedList();
}
Bat(int ii, List l) {
i = ii;
list = l;
}
public static void main(String[] args) {
Bat b = new Bat();
b.list.add(new Bat()); //引用不可变,但引用指向的内容是可以变的
// b.i=25; syntax error i是不可变的
//b.list=new ArrayList(); 错误,对象引用是不可变的
System.out.println("I=" + b.i + " List Type:" + b.list.getClass());
b = new Bat(23, new ArrayList());
b.list.add(new Bat());
System.out.println("I=" + b.i + " List Type:" + b.list.getClass());
}
}
Java中的final共有三种用法:
final成员变量
当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变,但引用变量所指向的对象中的内容还是可以改变的。
其初始化可以在三个地方,
一是其定义处,也就是说在final变量定义时直接给其赋值,
二是在构造函数中。而且在Java1.1以前,只能是在定义时给值。
三是在初如化代码块中{} 或者 static{}
下面这段代码演示了这一点:更加详细的探讨请参考关于final变量的初始化探讨
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
public class Bat {
final double PI = 3.14; // 在定义时便给址值
final int i; // 因为要在构造函数中进行初始化,所以此处便不可再给值
final List list; // 此变量也与上面的一样
Bat() {
i = 100;
list = new LinkedList();
}
Bat(int ii, List l) {
i = ii;
list = l;
}
public static void main(String[] args) {
Bat b = new Bat();
b.list.add(new Bat()); //引用不可变,但引用指向的内容是可以变的
// b.i=25; syntax error i是不可变的
//b.list=new ArrayList(); 错误,对象引用是不可变的
System.out.println("I=" + b.i + " List Type:" + b.list.getClass());
b = new Bat(23, new ArrayList());
b.list.add(new Bat());
System.out.println("I=" + b.i + " List Type:" + b.list.getClass());
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询