美文网首页
abstract,final,interface,static,

abstract,final,interface,static,

作者: 脏脏包盛 | 来源:发表于2017-12-05 20:51 被阅读0次

    final

    • final 可以用于成员变量,本地变量(局部变量),方法以及类
    • final 成员变量必须在声明的时候初始化或者在构造器中初始化,否则会编译报错
    • 你不能对final变量再次赋值
    • 本地变量(局部变量)必须在声明的时候赋值
    • 在匿名类中所有变量都必须是final变量
    • final方法不能被重写
    • final类不能被继承
    • 没有在声明时初始化final变量的成为空白final变量(blank final variable),它们必须在构造器初始化,或者调用this()初始化。不这么做的话,会报错

    类型转换

    byte short char int long float double
    只要两个操作数有一个double,结果也为double。如果两个操作数有一个float,另一个自动转为float,结果为float。如果两个操作数一个是long类型,则另一个自动转为long,结果也为long。否则(byte,char,int,short),两个数都会被转换为int,结果也为int。
    注意:被final修饰的类型不会自动类型转换,当两个final修饰相操作时,结果根据左边变量的类型而转化。

    byte b1=1, b2=2,b3,b6,b8;
    final byte b4=4,b6=6,b7;
    b3 = b1+b2;            //1
    b6 = b4+b5;            //2
    b8=b1+b4;              //3
    b7=b2+b5              //4
    

    结果除了2都转换成了int,而左边是byte,所以编译报错。而2正确

    static

    • 修饰成员变量,方法和类,不包括本地变量
    静态方法
    public class HelloWorld{
    //使用静态关键字声明静态方法
     public static void print(){
       System.out.println("hello");
     }
     public static void main(String[] args){
     //类调用  或者直接调用
     HelloWorld.print();
     print();
     //对象调用,更推荐使用类调用
     HelloWorld hello = new HelloWorld();
     hello.print();
     }
    

    在静态方法中可以直接调用同类中的静态成员和静态方法,但是不能直接调用非静态成员和非静态方法

    public class HelloWorld{
      String name = "lds";
      static hobby = "love";
      
      public static void print(){
        System.out.println(hobby);
        //System.out.println(name);     //错误使用
        HelloWorld hello = new HelloWorld();
        System.out.println(hello.name);    //  正确使用非静态成员或非静态方法,要声明对象
      }
    }
    

    相关文章

      网友评论

          本文标题:abstract,final,interface,static,

          本文链接:https://www.haomeiwen.com/subject/zoqhixtx.html