Java的default、native关键字以及label简介

来源:互联网 发布:java框架是什么意思 编辑:程序博客网 时间:2024/05/05 21:18

1.default关键字

    

  我们知道java interface定义了方法规范,Java8以前interface中的方法是不能有方法体的 that is to say 你不可以在接口中规定非静态方法的实现只能规范其返回值类型以及入口参数(这里我想说一下,在java的interface规范中方法、成员变量、内部类的作用域是有默认值的,interface中的成员变量的修饰符默认值是且仅是 public static final的,方法的默认值是且仅是public的,内部类是且仅是public static的,所以以后在interface中就不要再加访问修饰符了,看着很别扭,再者,我们可以将权限访问修饰符default和这里的default关键字结合起来理解这一点,如果interface的方法等访问修饰符没有默认值,那么我们使用default约定其作用域编译器是不能区别到底是default关键字还是访问修饰控制,再者,接口存在的意义就是制定规范以供使用所以它public是复合逻辑的,注意区别访问修饰符default和这里的default),当一个类实现了接口就必须重写其抽象方法,但有些方法,在Java8中引入了default修饰符表示在接口中定义了默认的方法实现,当接口被接口继承时我们可以重写其方法或者直接使用其默认方法实现。

 

 

2.native关键字

            

       "native"关键字修饰的方法定义了其他语言实现的Java层的方法-:说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如CC++)实现的文件中。Java语言本身不能对操作系统底层进行访问和操作(这个在Java9中的jshell做了一定的弥补),但是可以通过JNI接口调用其他语言来实现对底层的访问。

 

3.Java的标签

        

  这段代码是String类源码的中的toLowerCase()方法中的一段代码,第一次见到时很惊奇,卧槽,Java代码还能这样写,去查了下也没有什么具体的资料,最后在Stack Overflow上看到有人说这是Label,然后查了下javaLabel,概括起来说就是:java的嵌套循环在中没有goto语句的实现,只有breakcontinue结束当前循环,为了方便在复杂的嵌套里实现不同循环的终止或者中断,java引入了label,具体语法如下: lable:你的for循环体;上图中的{}是普通代码块,为的是在sca中的break条件未被满足时返回String对象值。

  以上是我看源码遇到的一些个人觉得比较新奇的东西,还在看源码中,遇到问题不定期更新,如果上面的阐述有错误的地方请指正我好及时纠正,射射大家(我的个人邮箱是rolltion.zhang@foxmail.com)

原创粉丝点击