下面3句是冲别人的帖子上看到的。其中“转入内嵌机制”是什么意思?怎样提高了执行效率
使用final方法的原因有二: 
第一、把方法锁定,防止任何继承类修改它的意义和实现。 
第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。 附那帖子链接 http://topic.csdn.net/u/20081028/17/f2993356-f89b-4dde-a94f-9ec5821c5ac3.html?49508

解决方案 »

  1.   

    真没听说过
    不过final还有一大用处就是解决了c++中多继承中父类成员变量重名的麻烦
      

  2.   

    转入内嵌机制类似于C++里面的inline,但是。java编译器只是可能这样做,并没有说一定这样做
      

  3.   

    这个只是一种说法而已什么意思呢,比如说你有一个方法 int maxNumber(int a,int b)返回给定的两个数的最大的一个数字.public int maxNumber(int a,int b){
       return (a>b?a:b);
    }
    我们可以在main方法中调用这个方法来获得最大值...
    public static void main(String[] args){
       Test test=new Test();
       int result=test.maxNumber(3,5);
       System.out.println(result);  //输出8 
    }或者,对于这样的简单逻辑,我们根本就不需要写一个方法,直接写逻辑:...
    public static void main(String[] args){
      int result=3>5?3:5; 
      System.out.println(3>5?3:5); 
    }
    你可以自己测试下,加上100000次的循环来计算时间间隔,可以比较出,直接写代码在逻辑中比调用方法maxNumber效率高。所以,当你将一个方法声明为final后,就相当于直接在调用处展开这个方法的代码一样。 速度就会快,效率也高。实际就是说,当将一个方法声明为final后,当你编译应用程序时就可以确定房方法的代码,并且编译其可以将该方法的代码展开插入到调用者代码处,提高了应用的运行速度和系统效率。这也就是它提到了“内嵌机制”,展开final声明的方法的代码,嵌入到调用处。final声明的方法,有点类似c++中的内联函数,避免被调用产生的开销提高执行效率,且能被编译器优化处理。
      

  4.   

    内嵌调用机制,即 inline,也叫内联或内行。
    意思是调用方法的时候直接将方法的主体插入到调用处,而不用去访问类或者对象,这样做会提高50%左右的效率。
    但是,如果方法的主体比较庞大的时候,并且多处被调用将导致主题代码迅速膨胀,同样也产生效率问题,总之,final修饰方法要慎用。
      

  5.   

    使用final方法的原因有二: 
    第一、把方法锁定,防止任何继承类修改它的意义和实现。 
        这是java编译器负责限定的语义,当你打算在子类中重定义final方法时,编译报错。第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。 
        这是java虚拟机可能提供的语义。虚拟机中的编译器会考虑将final方法展开,避免调用开销只是很小的一部分收益,更重要的是可以在更大的范围内进行优化,此外,jit会进行很多的内联,并不限于final存在的情形。即使方法不是final的,编译器如果能够确定,在当前已经加载的类中,并不存在对方法的重写,也可以进行inline处理。当然,这种假设不成立的时候,可以恢复。
      

  6.   

    final方法被当作inline处理是不被保证的。所以Java不推荐仅为了效率而使用final,final的取舍应该更多地(或者完全地)从设计方面考虑。
      

  7.   

    final 用在类上,主要是防止被其他类继承,比如STRING CLASS。
    final 用在变量上,主要是防止变量的值被更改。至于效率方面的作用不是太明显
      

  8.   

    第一个就不说了吧,final的东西是不能继承和覆盖的。java.lang下的不少类基本都是final的,比如你继承个String试试至于第二点,楼上有人说了,内嵌和c++的内联函数(inline)有点类似。这点不假。
    说说原理吧。
    所谓内联函数,就是说这个函数/方法在编译的时候会被联编到调用它的函数/方法里面。
    比如说,f是一个内敛函数,method1,method2...调用了f。那么,f就被编译到method1和method2内部。再来说说为何会提高效率。大家都知道,函数/方法调用过程中CPU要进行现场处理(不妨看做是一种中断),当前的变量状态、寄存器状态、程序计数器PC都要一一入栈保护起来,调用返回时又要一一出栈恢复以继续执行。相对于顺序执行流程,函数调用的入栈出栈带来了额外的开销,效率没有顺序执行高。
    而内联函数基本上可以等价于把函数体直接“复制”到调用函数中。就不存在调用了。这样执行效率就提高了。
    说明:1)由于内敛函数不单独占用内存空间,编译出来的应用程序比普通应用程序大。调用越多也就越大
          2)一般函数体较小而使用频繁、功能相对简单的方法/函数可以使用内联--也就是final
         3)目前硬件性能越来越高,这点性能差异已经不重要了。重要的是在多线程、多任务处理中,内敛函数方法处理起来要更简单、安全(原因就不说了吧。)