重新开始看Java基础知识,发现好多的地方其实不是很清楚,特在此做个笔记。
final在用于修饰类中的域时,可以分成三种情况。
1、修饰基本类型的数据。
2、修饰本来就是final类型的类类型。
3、修饰非final类的对象变量。
针对第一种情况,比较简单,就是表明其在被初始化后不能被修改。可以在定义的时候初始化,如
public class CoreJavaTest3 {
private final double pi = 3.14;
public double getPi() {
return pi;
}
}
也可以在构造函数中初始化,但是只能在其中一个地方初始化。如下就不能通过编译
public class CoreJavaTest3 {
private final double pi = 3.14;
public CoreJavaTest3() {
this.pi = 3.1415926;//编译不能通过
}
public double getPi() {
return pi;
}
}
针对第二种情况,和第一种情况一样,只是修饰的是final类型的类类型变量。
public class CoreJavaTest3 {
private final String test = "test string";
public CoreJavaTest3() {
this.test = "update string";//编译不能通过
}
public String getPi() {
return test;
}
}
需要注意的是第三种情况,Test是非final类,对例子中的testObj仅意味着存储在testObj变量中的对象引用在对象构造之后不能被改变。并不意味着testObj对象是一个常量,我们仍然可以修改testObj对象的内容。
public class CoreJavaTest3 {
private final Test testObj = new Test("first string");
public CoreJavaTest3() {
//this.test = new Test("second string");//编译不能通过
System.out.println("初始化:"+testObj.getStr());
}
public static void main(String[] argc){
CoreJavaTest3 coretest = new CoreJavaTest3();
coretest.updateTest();
}
public void updateTest(){
this.testObj.setStr("update string");//可以修改
System.out.println("修改后:"+testObj.getStr());
}
public Test getTestObj() {
return testObj;
}
}
class Test{
private String str;
public Test(String str) {
super();
this.str = str;
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
运行结果:
初始化:first string
修改后:update string
分享到:
相关推荐
### CoreJava学习笔记 #### 一、JAVA特点与运行原理 **JAVA特点:** 1. **简单性**:Java的设计者们将C++语言中许多不易理解和容易混淆的部分去除,使得Java更容易理解与掌握。 2. **面向对象**:Java几乎一切都...
6. **修饰符**:Java中有访问修饰符(public, private, protected, default)、static、final、abstract等,它们用来控制类、方法、变量的可见性和行为。 7. **常用类**:这部分可能包含Java标准库中的IO流、日期...
类可以通过访问修饰符(public、private、protected、默认)来控制其可见性,也可以通过final关键字使其不可被继承。Java支持单继承,但通过接口可以实现多重继承的效果。构造器是类的特殊方法,用于初始化新创建的...
《【精品】CoreJava笔记》是一份详尽的Java编程学习资料,主要涵盖了CoreJava的基础知识和核心概念。CoreJava是Java开发的核心部分,对于任何Java程序员来说,掌握这一领域的内容至关重要。以下是对这份笔记中可能...
- **非访问控制修饰符**:如`static`、`final`等,用于修改类、方法或变量的行为。 #### 七、常用类 - **String**:字符串处理。 - **Date**:日期处理。 - **Math**:数学运算。 - **Arrays**:数组操作。 #### ...
在Core Java的学习笔记中,涵盖了Java语言的基础知识到高级特性的广泛内容。以下是这些章节的主要知识点: 1. **语言基础**:这部分讲解了Java的基本语法,包括标识符、命名规范、八种基本数据类型(如int、char、...
同时,学习访问修饰符(public, private, protected)以及final关键字的使用。 5. **多态性和抽象类**:第五周将讨论多态性,这是面向对象的一个关键特性,允许不同的对象对同一消息作出不同的响应。此外,还将介绍...
《CoreJavaNoteBook》是为Java初学者提供的一份详细的学习笔记,涵盖了Java语言的核心概念和技术,旨在通过理论与实践相结合的方式,帮助读者快速掌握Java编程。以下是对笔记内容的详细解析: 首先,前言部分介绍了...
11. **访问修饰符**:`public`, `private`, `protected`和默认修饰符决定了类、方法和变量的可见性。 12. **异常处理**:Java使用异常处理来处理运行时错误。`try-catch-finally`结构用于捕获并处理异常,`throw`和...