- 浏览: 47616 次
- 性别:
- 来自: 南京
文章分类
最新评论
final方法
将方法声明为final那有两个原因:
第一就是说明你已经知道这个方法提供的功能已经满足你要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用。
第二就是允许编译器将所有对此方法的调用转化为inline(行内)调用的机制,它会使你在调用final方法时,直接将方法主体插入到调用处,而不是进行例行的方法调用,例如保存断点,压栈等,这样可能会使你的程序效率有所提高,然而当你的方法主体非常庞大时,或你在多处调用此方法,那么你的调用主体代码便会迅速膨胀,可能反而会影响效率,所以你要慎用final进行方法定义。
final类
当你将final用于类身上时,你就需要仔细考虑,因为一个final类是无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展。
对于final类中的成员,你可以定义其为final,也可以不是final。
而对于方法,由于所属类为final的关系,自然也就成了final型的。你也可以明确的给final类中的方法加上一个final,但这显然没有意义。
将方法声明为final那有两个原因:
第一就是说明你已经知道这个方法提供的功能已经满足你要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用。
第二就是允许编译器将所有对此方法的调用转化为inline(行内)调用的机制,它会使你在调用final方法时,直接将方法主体插入到调用处,而不是进行例行的方法调用,例如保存断点,压栈等,这样可能会使你的程序效率有所提高,然而当你的方法主体非常庞大时,或你在多处调用此方法,那么你的调用主体代码便会迅速膨胀,可能反而会影响效率,所以你要慎用final进行方法定义。
final类
当你将final用于类身上时,你就需要仔细考虑,因为一个final类是无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展。
对于final类中的成员,你可以定义其为final,也可以不是final。
而对于方法,由于所属类为final的关系,自然也就成了final型的。你也可以明确的给final类中的方法加上一个final,但这显然没有意义。
发表评论
-
Non-terminating decimal expansion; no exact representable decimal result
2015-05-20 09:46 862异常信息:Non-terminating decimal ex ... -
java中静态代码块的用法 static用法详解
2013-06-18 17:14 801(一)java 静态代码块 ... -
java中的native关键字
2013-06-18 14:35 894JNI是Java Native Interface的 缩写。从 ... -
Java transient关键字
2013-06-18 14:33 828java关键字Transient 转自http:/ ... -
Java Assert使用
2013-06-14 14:01 1296主要总结一下在eclipse中如何使用断言。 (一)首先明确 ... -
Java中接口的使用方法简介
2013-06-14 13:48 2335接口申明必须有interface ... -
堆和栈的区别
2013-06-14 12:50 784堆和栈的区别 栈与堆 ... -
HashSet详解:不能重复(对象的哈希代码一样),无序
2012-09-27 16:05 1245HashSet中不允许有重复的元素。例如: Set hash ... -
java i++和++i
2012-08-28 10:30 722//i++是在一个先使用后加1,即先使用i的值,后让i+1 ... -
java 可变长参数
2012-08-15 17:08 889有时候,我们传入到方法的参数的个数是不固定的,为了解决这个问题 ... -
字符编码问题
2012-07-26 16:14 789String newStr = new String(oldS ... -
java发邮件包commons-email-1.0.jar
2012-07-26 16:11 896java发邮件的包commons-email-1.0.jar -
获取图片的宽和高 java
2012-07-26 16:09 964有两种要考虑的情况: 一种是:(图片在本地可以预览到),方法如 ... -
java 值传递和引用传递
2012-07-26 14:52 1106class Demo{ private static i ... -
java面试题解惑 之 多线程(转)
2012-07-20 15:25 10221,多线程 线程或者说 ... -
java定时器应用举例
2012-07-20 14:32 766package myThread; import jav ... -
Java中的IO整理完整版(二)
2012-07-12 16:41 638BufferedReader的小例子 注意: Buffere ... -
Java中的IO整理完整版(一)
2012-07-12 14:22 775【案例1】创建一个新文件 import java.io.*; ...
相关推荐
在Java中,多态主要通过方法重载(Overloading)和方法重写(Overriding)来实现。 #### 方法重载:参数差异化的功能实现 方法重载允许在一个类中定义多个同名但参数列表不同的方法。这种机制增强了代码的可读性和复用...
被声明为fina l的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用, 不能重载。 finally—在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,...
java基础教程301集191 fina.mp4
Java修饰符是编程中至关重要的概念,它们用来指定类、接口、变量和方法的访问权限以及其它特性。本文主要讨论了Java中除`final`之外的一些常见修饰符,包括`public`、`protected`、`private`、`default`、`static`、...
2. **测试注解**:通过注解标记测试类和测试方法,方便运行和组织测试。 3. **测试规则**:可以定义自定义规则,例如在测试前后执行特定操作,如资源清理。 4. **异常处理**:捕获和处理测试过程中抛出的异常,确保...
Java中的`final`关键字是一个非常重要的概念,它用于声明不可变的类、方法或变量,以确保代码的稳定性和安全性。下面将详细讲解`final`关键字的用途和使用细节。 一、`final`关键字的基本用法 1. 修饰类 当一个类...
赠送jar包:netty-all-4.1.27.Final.jar; 赠送原API文档:netty-all-4.1.27.Final-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
在Java编程语言中,Lambda表达式是一种简洁的匿名函数表示方式,它允许我们将代码块作为方法参数或在没有具体类实现的情况下定义行为。然而,Lambda表达式对变量的使用有特定的要求,这在标题和描述中已经提到。当...
基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点,采用hibernate3+struts2+spring2+freemarker主流技术架构,懂html就能建站,提供最便利、合理的使用方式 ,强大、灵活的标签,用户自定义...
6. **项目管理**:理解敏捷开发方法,如Scrum或Kanban,以及如何有效地规划和跟踪项目进度。 7. **云计算与大数据**:如果涉及大数据处理,可能会学习Hadoop、Spark等分布式计算框架,以及如何在云端平台(如AWS、...
资源有5.4.9和5.1.2两个Hibernate,Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,...
每个跳水动作都有相应的难度系数,由FINA预先设定,反映了动作的复杂程度和技术含量。难度系数乘以动作的实际得分,得出最后的总分。这鼓励运动员挑战更高难度的动作,以获得更高的积分。 在技术实现上,跳水评分...
FINA IRP 是基于 Web、J2EE、OS/DB 独立的 SupTech、BI 和 PM,用于 SUPERVISORS(监管机构)接收来自银行、微型金融机构(MFI)、合作社、保险公司等的数据。生成 UBPR、PEARLS、EWS 等。 FINA集成监管平台包括:-...
FINA IRP是基于Web的,J2EE,独立于OS / DB的SupTech,BI和PM,用于超级用户(监管者),以从银行,微金融机构(MFI),合作社,保险公司等接收数据。生成UBPR,PEARLS,EWS等。 FINA集成监管平台包括:-META结构...
这个"POI 3.5源码"是Apache POI项目的源代码版本,发布于2009年09月28日,它提供了对Office文档格式的低级和高级API,使得开发者可以在Java环境中读取、写入和操作这些文件。 在POI 3.5源码中,我们可以深入理解...
1. 设计源表(fina_test1)和目标表(fina_test2)。 2. 第一步,查询目标表的最大日期,作为源表数据的比较基准。 3. 第二步,基于第一步的结果,从源表中选择更新后的数据,这里的SQL语句会使用一个参数(即目标表...
例如,假设我们有两个表:源表`fina_test1`和目标表`fina_test2`,增量ETL流程如下: 1. **获取基准日期**: - SQL:`SELECT IFNULL(MAX(date_seal), '1900-01-01 00:00:00') FROM fina_test2` 2. **读取源表数据*...
操作步骤:根据前面讲解的例子一样,首先建立源表(fina_test1)和目标表(fina_test2),整个设计流程如下:其中第一个步骤(输入-目标表)的 sql 大概如下模式:select ifnull(max(date_seal),'1900-01-01 00:00:...
接着,我们需要创建一个WebSocket配置类,继承自`WebSocketConfigurer`接口,实现`registerWebSocketEndpoints`方法,用来注册WebSocket端点: ```java @Configuration @EnableWebSocket public class ...