zoukankan      html  css  js  c++  java
  • 10.使用final关键字修饰一个变量时...

    10.使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

            答:引用不能变,不能将引用再次指向另一个新的对象,但引用所指向的对象中的内容是可以改变的。

    补充:

        1.对于基本类型,final使数值恒定不变,而用于对象引用,final使引用恒定不变。

        2.一个既是static又是final的域只占据一段不能改变的存储空间。

        3.定义为public,则可以被用于包之外;定义为static,则强调只有一份;定义为final,则说明他是一个常量。

        4.带有恒定初始值(即编译其常量)的final static基本类型全用大写字母命名,并且字与字之间用下划线隔开。

    11.“==”和equals方法究竟有什么区别?

        Java中的数据类型,可以分为两类:

        一.基本数据类型:

                     数值型 :(整数类型byte,short,int,long)(浮点类型float,double)

                     字符型 :char

                     布尔型 :boolean

            他们之间的比较,应该用双等会(==),比较的是他们的值。

        二.引用数据类型:

                     类 :class

                     接口 :interface

                     数组 :[ ]

             当他们用==进行比较的时候,比较的是对象的引用。

      说明:java当中所有的类都继承于Object这个基类,在object中的基类定义了一个equals方法,public boolean equals(Object obj) {

        return (this == obj);}这个方法的初始行为是比较引用,但在一些类库中这个方法被覆盖掉了,如String,Integer,Date等在这些类中equals有其自身的实现,而不再是比较对象在栈内存中的地址(即引用)了,如果不覆盖,则equals默认行为是比较引用。
         对于引用数据类型之间进行equals比较,在没有覆盖equals方法的情况下,他们之间的比较还是基于对象的引用,因为object的equals方法也是用==进行比较的,所有比较后的结果与双等号的结果相同。eg:
                  class Value {

                        int i ;

                    }

                   public class EqualsDemo {

                         public static void main(String args[]){

                              Value v1=new Value();

                              Value v2=new Value();

                              v1.i=v2.i=100;

                              System.out.print(v1.equals(v2));

                     }

                } /*Output:false

                 

  • 相关阅读:
    java把集合数据写入txt文档
    eclipse 启动报内存溢出的问题out of memory!
    面向对象基础知识整理
    在不同环境下MD5加密相同字符串,密文不一样的问题
    氮化镓选型
    碳化硅选型
    DSP选型
    FPGA选型
    MCU选型
    正点原子
  • 原文地址:https://www.cnblogs.com/dazuihou/p/3564670.html
Copyright © 2011-2022 走看看