我是靠谱客的博主 务实猎豹,最近开发中收集的这篇文章主要介绍每日面试题总结-------final与private的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.  final与private的区别 

   fiinal用于类的修饰的时候  :表示该类不可以被继承 ,函数隐式被指定为了final方法  变量根据需要指定final类型

          即他的成员变量是可以被多次修改的

public final class Test {
       int  p =5;
       void out() {
    	   System.out.println("大家好");
       }
}

class  B {
	
	public static void main(String[] args) {
		Test a =new Test();
		a.p=6;
		int b =a.p=7;
		System.out.println(b);
	}
	
}

            修饰函数的时候:表示该函数只可以被调用 不可以被复写  private函数被隐式指定为了final方法

           如果一个类的函数添加了final方法 那么子类继承这个类  该方法不可以被重写  但是如果修饰符为private,那么子类写一个同名的方法的话就不受影响 因为这不算重写 ,子类访问不到这个方法

            修饰类成员变量的时候:表示该变量只可以被赋值一次  要么在类的构造函数中赋值 ; 

            修饰引用类型的时候:表示他引用的值不会再变化  但是引用的值的值是可以变化的 

 

注意点:

public class Test { 
    public static void main(String[] args)  { 
        String a = "hello2";   
        final String b = "hello"; 
        String d = "hello"; 
        String c = b + 2;   
        String e = d + 2; 
        System.out.println((a == c)); 
        System.out.println((a == e)); 
    } 
}

 

第一个返回结果为true  第二个为false 因为在编译阶段 b就有了值 那么结果就被放入了常量池,然后别的使用的话也是从常量池取值

public class TestFinal {
    
    public static void main(String[] args){
        TestFinal testFinal = new TestFinal();
        StringBuffer buffer = new StringBuffer("hello");
        testFinal.changeValue(buffer);
        System.out.println(buffer);
        
    }
    
    public void changeValue(final StringBuffer buffer){
        //final修饰引用类型的参数,不能再让其指向其他对象,但是对其所指向的内容是可以更改的。
        //buffer = new StringBuffer("hi");
        buffer.append("world");
    }
}

结果为helloworld 即他指向的值不可以指向其他对象 但是他的值可以修改

 

最后

以上就是务实猎豹为你收集整理的每日面试题总结-------final与private的区别的全部内容,希望文章能够帮你解决每日面试题总结-------final与private的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部