javafinal对象

java可以修改final 对象

基本数据类型是不可以被修改了,包括String.但是也有例外.如Map,List等,即使你用final修饰了,依然可以put和add说到底,还是引用问题.final意味着引用不可变罢了

java final对象在这种情况下什么时候会被销毁?

不会,Java使用的是GC(垃圾回收)机制,只有对象还有有效引用就不会被回收,举个栗子:

void Method()

{

  final FooManager manager = new FooManager();

  new AsyncTask(new AsyncTaskHandler()

  {

    @Override

    public Object execute()

    {

      // A long long running…

      return null;

    }

    

    @Override

    public void onPostExecute()

    {

      manager.doXxx();  // 这里回调调用方法。

    }

  }).execute();

}

这个情况下,manager的对象被AsyncTaskHandler“捕捉”了,直到onPostExecute运行完之前,AsyncTaskHandler都会持有manager的有效引用,不会被GC清理掉。

javafinal对象

java 中的 final 关键字有哪些用法

(1)修饰变量

用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。final 修饰的变量可以先声明,后赋值。

final修饰基本类型时,起到常量的作用,基本类型的值不可变。

final修饰引用类型时,不能再指向其他的对象,但被引用的对象的值是可以改变的(引用变量的值

实际上是它所引用的对象的地址)。

当用final作用于类的成员变量时,成员变量(局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值。

(2)修饰方法参数

编写方法时,可以在参数前面添加final关键字,它表示在整个方法中,不会(实际上是不能)改变参数的值,具体类似于修饰数据。

即不能改变参数的值,但是可以改变引用类型参数的对象的值。同时,即使没有final的修饰,参数的改变也不会影响到方法外的变量。

(3)修饰方法

final关键字修饰方法,它表示该方法不能被覆盖(重写)。另外,类中所有的private方法都隐式地指定为是final的,由于无法在类外使用private方法,所以也就无法覆盖它。此时可以在子类中定义相同的方法名和参数,这种情况不再产生重写与final的矛盾,而是在子类中重新定义了新的方法。可以对private方法添加final修饰符,但并没有添加任何额外意义。

(4) 修饰类

用final修饰的类是无法被继承的。且final类中的所有成员方法都会被隐式地指定为final方法。

JAVA–final修饰符 final一个对象(一段程序)

final就是一个修饰符,只是要被final注明了的对象或变量都是“最终的”,不可再次改变的。

如楼上所说final Box boxobj = new Box(25);只是说明了Box所生成的实例是最终的,但这个实例的成员变量如果没有被final注明了就还是可以改变的,所以boxobj.height = 32;是可以的。

多想几遍,理清关系就能够理解了。

Java中final 一般是什么作用,什么情况用

1. 修饰基础数据成员的final

这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰为常量,意味着不可修改。如java.lang.Math类中的PI和E是final成员,其值为3.141592653589793

和2.718281828459045。

2. 修饰类或对象的引用的final

在Java中,我们无法让对象被修饰为final,而只能修饰对象的引用,这意味着即使你写public final A a = new A(); 事实上a指向的对象的数据依然可以被修改,不能修改的是a本身的引用值,即你不能再对a进行重赋值。同样的情况出现在数组中,比如public final int[] a = {1, 2, 3, 4, 5},事实上a中的数值是可修改的,即可以写a[0] = 3。据目前了解,java中数组内的数据是无法修饰为不可修改的,而C/C++可以。

3. 修饰方法的final

修饰方法的final和C/C++中修饰成员对象的const大不相同。首先,修饰方法的final含义不是“不可修改”,而是指该方法不可被继承成员重新定义。(注意,这里所说的不能被重新定义,并不是指子类一定不能定义同名方法,如果父类的方法是私有类型,子类是允许定义该方法的,这里指的不能重新定义是指不能通过改写方法来使得方法重写的多态性得以实现,如不希望A a = new B(); a.f();这样的重写方法情况出现)

示例:

public class A {

// final方法f

public final void f() {

System.out.println(“类A中的final方法f被调用了”);

}

}

public class B extends A {

// 编译错误!父类的f方法是final类型,不可重写!

//! public void f() {

//! System.out.println(“类B中的方法f被调用了”);

//! }

}

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月24日 21:00:37
下一篇 2024年3月24日 21:09:43

相关推荐

  • excel选定图片对象,excel对象图标图片

    excel如何全选图片 1、全选图片打开EXCEL表格,在键盘上按下“ALT+A”,全选所有的图片。调大图片点击任意一个图片选择框上四个角落的小圆圈,往外拉动鼠标,所有的图片统一调大。 2、按住 Alt 键,再单击图片。也可以右击图片,然后在图片外空白区单击一下。在选中任一幅图片之后,按下组合键“Ctrl + A”,即可选中所有图片了。“Ctrl + A”,…

    2024年5月23日
    4700
  • java对象比较工具类,java 比较对象

    在java中写一个工具类,该类是将从浏览器传进来的List和数据库中的数据… 1、在同期推出的还有被称为HotJava(热咖啡)的浏览器,Hotjava是一个完全由Java语言编写,基于Java典型应用的web浏览器,并且第一个支持Java Applet。 2、在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相…

    2024年5月23日
    3900
  • java对象的产生,java对象生成过程

    java对象是怎么创建出来的 工厂模式 工厂模式抽象了具体对象的过程,用函数来封装以特ing接口创建对象的细节。 javascript面向对象知识很广泛,想深入理解需要花费一些时间对象的创建:1 创建一个面向对象缺点:当我们想创建多个面向对象的时候,重复代码过多,需要封装,所以有了工厂方法。2 工厂方式缺点:无法识别创建的对象的类型。 你好很高兴回答你的问题…

    2024年5月23日
    3900
  • java集合对象排序,java集合对象 排序

    java集合类型有哪些 1、java有三种集合,包括Set、List和Map,它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set中的对象不按特定方式排序,并且没有重复对象。 2、Java集合主要有四种,分别为:List列表、Queue队列、Set集合、Map映射。List列表:有序的,可重复的;Queue队列:有序…

    2024年5月22日
    4600
  • javaobject对象转数组,java object 转对象

    java如何把Object中的数据转化为String数组 1、数组虽然不能强转,但是数组中每个元素可以强转。 2、session.getAttribute(uauthority).toString() 。标作的方式 ,你可以把任何对象转为String ,就可以看到每个对象都有这个方法。 3、赋值不会报错。args2[i]=args[i].toString()…

    2024年5月22日
    3800
  • java对象字符串,java对象字符串转json

    Java的String类的对象可以是字符串常量,为什么不可以是字符串变量 使用 String 类定义:在 Java 中每个双引号定义的字符串都是一个 String 类的对象。因此,可以通过使用 String 类的构造方法来创建字符串,该类位于 java.lang 包中,作用域是 final。 首先String不属于8种基本数据类型,String是一个对象。因…

    2024年5月22日
    5200
  • javascript对象长度,javascript数组长度

    判断map对象长度 你首先设定一个投影坐标系,然后看图层的属性表,里面有Length一项。 在arcmap窗口的“tools”工具条上面有个小尺子上面带两个相反箭头的图标的工具,就是测量工具。不过你的地图窗口要有单位设置,这个工具才能被激活。 没有长度限制。map可以根据新增的key-value动态的伸缩,因此它不存在固定长度或者最大限制,但是也可以选择标明…

    2024年5月22日
    4300
  • java对象的创建,java对象的创建过程包括

    北大青鸟java培训:创建新对象的两种方式? 1、工厂模式 工厂模式抽象了具体对象的过程,用函数来封装以特ing接口创建对象的细节。 2、java允许将子类对象直接赋给父类引用变量。(向上转型upcasting) 编译时类型转换成运行时类型,需要强制类型转换,要借助于类型转换运算符。 instanceof:前一个操作数通常是一个引用类型变量,后一个通常是一个…

    2024年5月22日
    3900
  • c语言中有类和对象么,c语言中有类的概念吗?

    C语言有像JAVA那样的方法和类吗 c十十增加了类,提供了类算法,该算法是与类相连的函数,c十十类方法与Java类方法十分相似,然而,由于c十十仍然支持c,所以不能阻止c十十开发人员使用函数,结果函数和方法混合使用使得程序比较混乱。 C语言中没有什么框架的概念,几乎只有Windows的某些工作,例如窗口要用到比较规范的框架,其他的几乎一个程序一个样,完全属于…

    2024年5月21日
    5100
  • java对象序列号static,java如何实现对象的序列化

    介绍Java对象序列化使用基础 1、对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。Java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。 2、序列化的过程就是对象写入字节流和从字节流中读取对象。将对象状态转换成字节流之后,可以用Java.io包中的各种字节流类将…

    2024年5月21日
    4700

发表回复

登录后才能评论



关注微信