原来我错了;
final 修饰的量以视为常量,
当修饰对象引用时,我错误的认为变量指向的对象是不可变的,然而对象是可变的,不可变只是“变量对对象的引用”
TestFinal
package src.test;
import java.util.HashMap;
import java.util.Map;
public class TestFinal {
private String name ;
private Map map = new HashMap ();
public TestFinal(){
name = "li" ;
}
public void put(Object key , Object value){
map.put(key, value);
}
public Object get(Object key ){
return map.get(key);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
CodeTest1
public class CodeTest1 {
final TestFinal tf = new TestFinal ();
public static void main(String[] args) {
CodeTest1 ct1 = new CodeTest1 ();
ct1.tf.setName("wew");
System.out.println(ct1.tf.getName());
}
}
分享到:
相关推荐
如果修饰的是引用类型的变量,那么初始化后就不能让他指向另一个对象,如下图所示 2.修饰方法 用final关键字修饰的方法是不能被该类的子类override(重写),因此,如果在想明确禁止 该方法在子类中被覆盖的情况下...
new关键字,new创建对象实例(对象实例在堆内存中),对象引用指向对象实 例(对象引用存放在栈 内存中)。一个对象引用可以指向0个或1个对象(一根 绳子可以不系气球,也可以系一个气球);一个 对象可以有n个引用...
30.2 引用类型加final修饰表示引用不可变 44 31 static关键字 44 31.1 static关键字可以修饰4个地方 44 31.2 静态属性 44 31.3 静态的与实例的 45 31.4 静态代码块 45 31.5 静态方法 45 31.6 静态方法是不能被继承 ...
声明抽象类语法: abstract class{…… } 使用:父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子类提供这种抽象方 法的实现细节 abstract 修饰符 3-2 抽象类可以具有指向子类对象的对象引用 abstract 修饰...
final修饰的成员变量,必须在声明的同时赋值,一旦创建不可修改; final修饰的方法,不能被子类重写; final类中的方法默认是final的; private类型的方法默认是final的; java 中的 Math.round(-1.5) 等于多少...
1>对于基本类型前加以final修饰,表示被修饰的变量为常数,不可以修改。一个既是static有是final的字段表示只占据一段不能改变的存储空间。 2>final用于对象应用时,final使应用恒定不变。一旦引用被初始化指向一个...
1、JDK 和 JRE 有什么区别? JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含JRE,JDK中有一个名为...当使用final修饰方法时,这个方法将成为最终方法,无法被
栈内存:基本数据类型的变量,方法的返回值,对象的引用(对象的引用地址) 3.static:存放在静态域中和类属于同一个属性,修饰的方法:类名.static 4.Java多态的体现方式方法的重载,重写,对象的多态性 1.编译时...
要知道,当某个对象被定义为stataic的变量所引用,那么GC通常是不会回收这个对象所占有的内存,如 public class A{ static B b = new B();} 此时静态变量b的生命周期与A类同步,如果A类不会卸载,那么b对象会常驻...
被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。方法的参数被final修饰表示在方法体内,该参数的值不可以被修改。 finally在异常...
给定初值, 而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用, 不能重载。 finally:再异常处理时提供finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会...
" "7.Final类中的属性和方法都必须被final修饰符修饰。 " "8.最终类不能派生子类,最终方法不能被覆盖。 " "9.子类要调用父类的方法,必须使用super关键字。 " "10.一个Java类可以有多个父类。 " " " "二、选择...
然 new 运算符返回对一个对象的引用,但与 C、C++中的指针不同,对象的引用是指 向一个中间的数据结构,它存储有关数据类型的信息以及当前对象所在的堆的地址, 而对于对象所在的实际的内存地址是不可操作的,这就保证...
被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,...
被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个...
l的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用, 不能重载。 finally—在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的...
在构造函数内对一个 final 域的写,与随后把这个构造对象的引用赋值给一个变量,这两个操作之间不能重排序 初次读一个包含 final 域的对象的引用,与随后初次读这个 final 域,这两个操作之间不能重排序 举...
final修饰基本类型和引用类型 •当使用final修饰基本数据类型时,不能对其重新赋值,不能被改变。 •但对引用类型的变量而言,它仅仅保存的是一个引用,final只能保证他的地址不变,但不能保证对象,所以...
java中的类只有单继承,接口具有多继承 继承具有单根性,一个类只能有一个父类 不能继承父类的有三种情况 · 用private修饰的属性和方法 · 构造方法 · 用protected修饰的属性和方法,父类和子类不在同一包下...
第三章 Java面向对象程序设计 Java面向对象程序设计("方法"相关文档)共57张全文共57页,当前为第1页。 3.1 面向对象程序设计的基本概念 对象是客观世界中的某个具体事物。(客车) 事物的特性就是数据(载客数量、...