每日面试题总结-------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 即他指向的值不可以指向其他对象 但是他的值可以修改

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值