Java 之 内联函数

来源:互联网 发布:淘宝账号忘了怎么办 编辑:程序博客网 时间:2024/05/20 03:04

       突然看到一个词----Inline Method(内联函数), 对于我这个菜鸟来说是不明白的,赶紧查了下资料。大致是这样的。

       所谓内联函数就是指函数在被调用的地方直接展开,编译器在调用时不用像一般函数那样,参数压栈,返回时参数出栈以及资源释放等,这样提高了程序执行速度。

       C++,内联函数这个概念,一般用inline关键字修饰;在C++定义类时,写中Class定义里面的函数,也被编译器当做内联函数处理。C++中是否为内联函数由自己决定,而在java中,则是由编译器决定的。

       Java不支持直接声明为内联函数的,如果想让他内联,只能够向编译器提出请求,最后是不是内联函数,是由编译器说了算。

        那么怎么申请呢?
       1.使用final,如

public final void function(){    //TODO}
        该方法在被调用时,会在调用处直接展开使用,从而提高程序执行速度。此外final关键字还有一个作用,防止fucntion方法在子类中被覆盖,如果你希望function是一个最终行为的话,那它应该被设计成final。
    内联不一定好,当被指定为内联的方法体很大时,展开的开销可能就已经超过了普通函数调用调用的时间,引入了内联反而降低了性能,因为在选择这个关键字应该慎重些,不过,在以后高版本的JVM中,在处理内联时做出了优化,它会根据方法的规模来确定是否展开调用。

    2.函数为private,也可能是内联

     总的来说,一般的函数都不会被当做内联函数,只有声明了final后,编译器才会考虑是不是要把函数变成内联函数。      

   本文是整理了一下两篇文章而来的,
  http://qaohao.iteye.com/blog/450299
  http://www.2cto.com/kf/201211/165952.html

  我认为他们都解释的很简单易懂,所以很多是这两篇文章的原话。如果有哪位大牛看到后认为哪里理解有误,或是有更好的理解,敬请赐教

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝上申请退款卖家不处理怎么办 淘宝买东西商家发错货退回怎么办 假模特头头发毛燥怎么办 投资了网上融资平台被骗怎么办 微信被覆盖了怎么办 微信号被覆盖了怎么办 样品鞋子在灯光下变黄怎么办 美图秀秀拼图后发朋友圈模糊怎么办 手机重开淘宝网店怎么办 淘宝店铺下架了怎么办 淘宝东西下架了怎么办 淘宝衣服下架了怎么办 淘宝物品下架了怎么办 淘宝货品下架了怎么办 淘宝cmcc下架了怎么办 修手机主板被换怎么办 换手机屏幕被调换零件怎么办 买了东西想退换怎么办 淘宝退货卖家不同意怎么办 淘宝退货退错了怎么办 商品质量问题换货后仍有问题怎么办 货没收到想退款怎么办 淘宝退货店家不退款怎么办 京东退货快递显示签收怎么办 买家已付款卖家不发货怎么办 两个地址发给买家退货怎么办 超市盘点少了货怎么办 月盘点出错领导要理由怎么办 做外汇被坑怎么办?亏损二十多万 iphone储存空间已满怎么办 icloud储存空间将满怎么办 手机店没人进店怎么办 淘宝退货运单填错了怎么办 淘宝快递单号填错了怎么办 拼多多48小时不发货怎么办 想开化妆品店没有经验怎么办 淘宝卖家收钱不发货怎么办 nike拖鞋买小了怎么办 京东换货没货了怎么办 淘宝申请退货退款卖家不处理怎么办 家具连接扣坏了怎么办