精华内容
下载资源
问答
  • Java中的final关键字

    2018-11-05 11:35:28
    final修饰的变量值得多说两句,对于引用类型的变量,final的意思是声明变量时它指向哪个对象,它就要一直指向那个对象,那个对象变化与否都没关系。上代码: public class FinalDemo { public st...

    Java中的final关键字修饰的项不可更改。具体来说就是

    • final class不能被继承
    • final 变量的值不能更改
    • final方法不能被覆写。

    final修饰的变量值得多说两句,对于引用类型的变量,final的意思是声明变量时它指向哪个对象,它就要一直指向那个对象,那个对象变化与否都没关系。上代码:

    public class FinalDemo {
        
        public static void main(String[] args) {
            StringBuffer sb = new StringBuffer("original string");
            sb = new StringBuffer("another string");
        }
    }
    

    这段代码可以编译通过。

    public class FinalDemo {
        
        public static void main(String[] args) {
            final StringBuffer sb = new StringBuffer("original string");
            sb = new StringBuffer("another string");
        }
    }
    

    这段代码编译时会报错:FinalDemo.java:5: 错误: 无法为最终变量sb分配值
    sb = new StringBuffer(“another string”);
    ^
    1 个错误

    public class FinalDemo {
        
        public static void main(String[] args) {
            final StringBuffer sb = new StringBuffer("original string");
            sb.append("another string");
        }
    }
    

    这段代码可以编译通过。

    展开全文
  • Java中final关键字

    2020-11-03 12:02:48
    被final修饰的变量的值不可修改,被final修饰的方法不能被继承,即不能派生出它的子类。 目的:出于安全性和面向对象设计的考虑,有些方法不能不继承。例如jva.lang.String类 ,保证了如果方法中有一个指向String类...

    .被final修饰的变量的值不可修改,被final修饰的方法不能被继承,即不能派生出它的子类。

    目的:出于安全性和面向对象设计的考虑,有些方法不能不继承。例如jva.lang.String类
    ,保证了如果方法中有一个指向String类的引用,那么它肯定是一个真正的String类型,而不是
    一个已经被更改的子类。。。
    (2)把方法标记为final有时也用于优化。因为编译器编译此类方法生成的代码允许对该方法直接调用
    而不再像对待一般成员方法那样使用通常的虚拟调用,即在执行时在决定究竟调用哪个方法。从而提高了编译运行效率。

    2.如果将一个引用类型的变量标记为final,那么这个变量将不能再执行其他对象,但它所指对象的取值
    仍然可以是改变的。

    展开全文
  • 讲一讲static final...final修饰方法是不能被子类覆盖的,由于final是静态绑定的(静态绑定即在编译期间就知道这个方法属于哪个类的),所以运行速度要比非final的速度要快。 final修饰类不可继承,一般都是比较

    讲一讲static final关键字
    在java中static 和 final关键字是十分重要的。
    final关键字可以修饰类,方法,以及变量。
    final修饰变量即为只读变量,只能赋值一次。
    final修饰方法是不能被子类覆盖的,由于final是静态绑定的(静态绑定即在编译期间就知道这个方法属于哪个类的),所以运行速度要比非final的速度要快。
    final修饰类不可被继承,一般都是比较完善的类,在java中有很多这样类,例如String,Integer等基础类型的包装类。
    final类型的好处。
    1)final关键字可以提交性能,jvm和java都为其提供了缓存。
    2)final类型线程安全。

    static 关键字可以修饰类,方法,变量以及代码块。
    static 在类加载到内存的时候,static就会被执行(静态属性,静态代码块),且只会被执行一次,它属于类的方法或属性,非静态的方法不能引用静态方法。
    因为static是属于类的,所以不允许在类的方法里定义。关于static主要面试加载的顺序,面试也会经常被问到,下面是一道面试题
    public class Test {

    Person person = new Person("Test");
    
    static {
    	System.out.println("test static");
    }
    
    public static void main(String[] args) {
    	new MyClass();
    }
    
    public Test() {
    	System.out.println("test constructor");
    }
    

    }

    class Person {

    static {
    	System.out.println("Person static");
    }
    
    public Person(String str) {
    	System.out.println("person " + str);
    }
    

    }

    class MyClass extends Test {
    Person person = new Person(“MyClass”);
    static {
    System.out.println(“MyClass static”);

    }
    
    public MyClass() {
    	System.out.println("myclass constructor");
    }
    

    }

    执行结果
    test static
    MyClass static
    Person static
    person Test
    test constructor
    person MyClass
    myclass constructor
    这里讲一下静态内部类的好处。(如果场景允许,尽可能的使用静态内部类)
    1)使用静态内部类并不需要持有外部类的引用,减少了资源的开销和空间的占用。
    2)因为减少了外部类的引用,更容易被垃圾回收器回收,不易出现内存泄漏。

    展开全文
  • 被final关键字所修饰的类不能被继承 被final关键字修饰的方法不能被复写 this关键字 它表示当前的对象。就是所在函数所属对象的引用,他只能用在非静态方法里 this的意思是指当前对象。即哪个对象调用this所在的方法...

    final关键字

    1. 被final关键字所修饰的变量为常量,即最终量,不可改变的量。
    2. 被final关键字所修饰的变量一定要出初始化,不管它是不是静态变量还是非静态变量
    3. 被final关键字所修饰的类不能被继承
    4. 被final关键字修饰的方法不能被复写
      this关键字
      它表示当前的对象。就是所在函数所属对象的引用,他只能用在非静态方法里
      this的意思是指当前对象。即哪个对象调用this所在的方法,this就代表哪个对象
      this关键字的应用
      1.可以用来在构造函数中调用其它的构造函数,用this来调用其它构造函数这句代码只能放在第一行 格式为: this(参数列表);
      为什么要把 this(参数列表);放到第一行?因为java的初始化动作要先执行
      2.在创建一个对象时,可以进行一步初始化,即直接在构造方法里初始化。
      可以进行分步初始化。即一个对象在初始化时(创建时)可以调用多个构造函数。
      分步初始化的好处?可以提高代码的复用性。
      super关键字
      它通常用于继承体系中子类中,它用于调用父类的方法。可以调用父类的所有方法。
      *** static关键字****
      用于修饰成员(成员变量和成员函数),它既是关键字也是修饰符
      被static关键字修饰后的成员具备以下特点
      1.随着类的加载而加载
      2.优先于对象存在
      3.被类中所有的对象所共享
      4.可以直接被类名调用
      注意:
      1.静态方法只能访问静态成员
      2.静态方法中不可以使用this,super关键字
      3.主函数是静态的
      内存图解:被static关键字修饰的成员存在JAVA中虚拟机中的方法区中的静态方法区中,随着类的加载,静态方法中的成员就可以被类使用了。
      -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------JAVA中常用的修饰符
      public :被public所修饰的类,可以被一个工程,任意一个类访问
      private:被private所修饰的成员,只能在本类中使用,即使子类继承了父类,它也不能使用父类私有的成员。
      protected: 只能被集成体系中的子类访问
    展开全文
  • final 的一些总结

    2017-03-04 12:37:30
    1.修饰"类"则类不能被继承,所以没有子类,final类中的方法默认是final的。可以提高效率。JDK中很多加final是这个原因的。编译期确认调哪个方法,所以更快。1.5以后这样做没有效果。 2.修饰"方法"则方法不能被重写,...
  • 被final关键字所修饰的类不能被继承 被final关键字修饰的方法不能被复写 this关键字 它表示当前的对象。就是所在函数所属对象的引用,他只能用在非静态方法里 this的意思是指当前对象。即哪个对象调用this所在的方法...
  • 1)final修饰类,不能被继承。 2)修饰方法,不能被重写或覆盖。而且final方法是静态绑定的,在编译时就确定好是哪个类的方法,所以final方法效率要高。 3)修饰变量,只能赋值一次。 当final修饰一个基本...
  • 子类重写父类的方法或者成员变量时,就会隐藏父类的方法和成员变量,但是可以用super关键字负责 子类重写时,访问权限可以提高,不能降低,访问...final修饰的类,方法不能被继承,修饰成员变量不能被修改,是常量 ...
  • 答案:不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”a”;其实和String str=new String(“a”)还是有差异的。前者默认调用的是String.value...
  • 1.super 子类重写了父类的方法时,子类里父类的方法就被隐藏,而子类隐藏了之后,子类就不能再进行调用父类的方法,除非使用super关键字,如super.父类的方法名. 而当子类的构造方法创建子类...final修饰的类不能被
  • final关键字java语法中被final修饰的变量为不可修改。 1、变量为基础类型,表示变量的值不可改变; 2、变量为引用类型,表示变量存储的对象的引用不能改变,换句话说,不能改变指向的是哪个对象。而对象自身是可以...
  • 修饰方法时,代表方法只能调用,不能被 override ;修饰类时,代表类不能够派生出子类,所以一个类不能既是 final 又是 abstract; (注意:final指的是引用不可变性,即它只能指向的初始化时的指向的哪个对象,而不...
  • 有一部分是在类加载的解析阶段,这种解析成立的前提是:该方法“编译期可知,运行期可变”,主要包括静态方法(与类型直接关联)、私有方法(外部可访问),其他还有实例构造器方法、父类方法和被final修饰的...
  • (1).final标记的类不能被继承; (2).final标记的方法不能被子类复写; (3).final标记的变量即成为常量,只能被赋值一次. 注意: 如果使用final来声明常量,请遵守以下常规: final标记的变量名,所有单词字母都需...
  • 20201019:算法+错题

    2020-10-19 16:25:36
    final修饰的类,不能被覆盖。 final修饰的变量,不能改变值。 final所修饰的成员变量只能赋值一次,可以在类方法中赋值,也可以在声明的时候直接赋值, 而final修饰的局部变量可以在声明的时候初始化,也可以在第一...
  • 练习题

    2019-06-10 12:27:54
    1.下列Java常见事件类中哪个是鼠标事件类?(MouseEvent) InputEvent KeyEvent MouseEvent WindowEvent ...2.java中,用(final)关键字定义常量?...final修饰变量,则等同于常量 ...final修饰类,则类不能被继承 ...
  • 1.哪个正确(ACD) A abstract类只能用来派生子类,不能用来创建abstract类的对象。 B final类不但可以用来派生子类,...2、final类不能用来派生子类,因为用final修饰的类不能被继承; 3、如2所述,final不能与a.
  • 1.java 中哪个关键字可以对...final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。 abstract 修饰符,用来创建抽象类和抽象方法...
  • java学习——多态

    2018-06-04 17:43:19
    该方法不能被重写 修饰类 该类不能被继承 多态 定义 多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会...
  • 你知道String、StringBuilder、Stringbuffer的区别吗?当你创建字符串的时候,有考虑过该...我们知道,一个类被final修饰,那么这个类无法被继承,方法也不能被重写,属性也不能改变。 看看这段代码: String s = "abc
  • 中软Java笔试题

    2020-03-27 23:32:21
    该类必须被final修饰 *强调文本* _强调文本_ 解析: 使用private关键字声明的构造函数由于类的构造函数时私有的所以此类不能被实例化,同时也不能被继承EffectiveJava第三条用私有构造器或...
  • 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”a”;其实和String str=new String(“a”)还是有差异的。前者默认调用的是String.valueOf来...
  • 1.继承:可以理解为:把同一类的东西里,有相同的属性行为,抽取出来,单独做个类,这就是父类,继承它的,就是子类.子类拥有父类的属性和行为. 2.继承的好处:代码的复用性 ...5.final修饰的类,不能被继承 final修饰的变...
  • 2018JAVA面试题附答案

    千次阅读 2018-05-03 16:25:42
    不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”a”;其实和String str=new String(“a”)还是有差异的。前者默认调用的是String.valueOf来...
  • 笔试错题记录2

    2018-09-24 17:16:56
    选择题 1.在Java中哪个修饰词可以体现变量的原子性volatile static 修饰符表示变量被所有实例共享,变量属于类 ...如果类中有Logger实例,那么Logger实例也是不能被序列化的。 volatile 具有两层含义。...
  • JAVA基础

    2018-03-03 11:41:06
    不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”a”;其实和String str=new String(“a”)还是有差异的。前者默认调用的是String.valueOf来...
  • JAVA基础--面试题1

    2018-06-08 15:28:22
    不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”a”;其实和String str=new String(“a”)还是有差异的。前者默认调用的是String.valueOf来...
  • 面试经常问的Java基础

    2018-03-29 09:03:37
    1、可以,String类有final修饰符,而final修饰符类是可以继承的。2、平时定义的String str = “a” 与 String str = new String(“a”)还是有差别的①前者默认调用的是String.valueOf来返回String实例对象,...
  • Java常见易错题3

    2018-12-12 20:13:55
    abstract 关键字 哪个正确 A. abstract类只能用来派生子类,不能用来创建abstract类的对象。 B. final类不但可以用来派生子类,也可以用来创建final类的对象。 C....B,final不能被继承。 C,...
  • 2020JAVA面试题附答案

    2020-10-26 14:48:01
    不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”a”;其实和String str=new String(“a”)还是有差异的。 前者默认调用的是String.valueOf来...

空空如也

空空如也

1 2 3 4
收藏数 71
精华内容 28
关键字:

哪个不能被final修饰