- 浏览: 925472 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (322)
- Hibernate研究&源码 (27)
- Server (10)
- Coder碎语 (64)
- EnglishMulling (11)
- About XML (1)
- persistence (12)
- Core Java & OO (23)
- Java EE (6)
- JavaScript/JSON/Ajax/ext... (22)
- 我的读书笔记 (16)
- Source Codes Study (29)
- workFlow/jBPM (22)
- OFBiz: Open For Business (1)
- 项目积累 (21)
- srcStudy_acegi (1)
- Cache/Ehcache... (9)
- Java Test/JUnit.. (7)
- maven/ant (2)
- 设计模式 (1)
- SOA/cxf/ws-security (2)
- Android (4)
- 云计算/Hadoop (2)
- 加密/签名 (1)
- 正则表达式 (1)
- htmlparser (1)
- 操作系统 (5)
- DB (1)
最新评论
-
天使建站:
这里这篇文章更详细 还有完整的实例演示:js跳出循环 ...
jQuery中each的break和continue -
heshifk:
刚刚我也遇到同样的问题,然后就在纠结为什么不能直接使用brea ...
jQuery中each的break和continue -
masuweng:
不错写的.
集万千宠爱于一身的SessionImpl:get研究(四): Hibernate源码研究碎得(8) -
muzi131313:
这个老是忘,做一下笔记还是挺好的
jQuery中each的break和continue -
lg068:
data = data.replace("\n&qu ...
项目小经验: eval与回车符
Q 13: Java中为什么有些接口里并没有定义任何方法? LF FAQ
A 13:Java中的那些没定义任何方法的接口当做Marker来用的,利用它可以告诉编译器对这类接口的实现类另行对待.
Java中像java.io.Serializable,java.lang.Cloneable,java.util.EventListener等这些接口也称为"tag"接口,因为用它们可以将其实现类基于某种特性再分类.
Q 14: 谈谈你对Java里覆盖与重载的理解?它们有什么不同?
Q 14:
Method Overloading:
方法重载说的是,在同一类中可以有同名但不同方法签名的方法,利用方法重载,我们可以针对不同的数据以不同的实现方法来定义the same operation.
如下类所示:
class MyClass {
public void getInvestAmount(int rate) {...}
public void getInvestAmount(int rate,long principal) {...}
}
在上例中,两个方法的名字相同,不过它们的method signatures,这就是我们所说的方法重载.
Method Overriding:
方法覆盖是指,在有父子关系的两个类中方法可以有同样的名字和签名,利用方法覆盖,我们可以针对不同类型的对象以不同的方式定义the same operation.
如下类所示:
class BaseClass {
public void getInstanceAmount (int rate) {...}
}
class MyClass extends BaseClass {
public void getInvestAmount(int rate) {...}
}
上例中,两个类中的方法具有相同的名字和签名,不过子类中的方法覆盖了父类中的相应方法.
Q 15: Java中的ArrayList和Vector有什么区别?HashMap与Hashtable呢?stack与queue又有什么不同呢?
What is the main difference between an ArrayList and a Vector? What is the main difference between HashMap
and Hashtable? What is the difference between a stack and a queue? LF DC PI CI FAQ
A 15:
Vector/Hashtable:
这两个类是在没有引入Collections API前已有的,Vector和Hashtable这两个类都是sychronized,Any method that touches their contents is thread-safe.
ArrayList/HashMap:
不过若我们并不想用线程安全这个特性时(毕竟这个线程安全是很影响性能的),就可以选ArrayList或HashMap.
Q. 哪一个更好呢? 通常来说,ArrayList/HashMap优于Vector/Hashtable.若项目是基于多线程并且其中至少有一个线程要么add要么delete collection中的entry的话,我们选现在Java中新collection API里的external synchronization功能,下面例子中我们就可以根据需要临时地获得一个synchronized的collection:
Map myMap = Collections.synchronizedMap(myMap);
List myList = Collections.synchronizedList(myList);
Note:
1,若使用J2SE5的话,为了提高性能,我们可以用那个新的"java.util.concurrent"包中的API,这样...because the concurrent package collections are not governed by a single synchronized lock as shown above. The “java.util.concurrent” package collections like ConcurrentHashMap is threadsafe and at the same time safely permits any number of concurrent reads as well as tunable number of concurrent writes. The “java.util.concurrent” package also provides an efficient scalable thread-safe non-blocking FIFO queue like ConcurrentLinkedQueue.
2,The “java.util.concurrent” package also has classes like CopyOnWriteArrayList, CopyOnWriteArraySet, which gives you thread safety with the added benefit of immutability to deal with data that changes infrequently. The CopyOnWriteArrayList behaves much like the ArrayList class, except that when the list is modified, instead of modifying the underlying array, a new array is created and the old array is discarded. This means that when a caller gets an iterator (i.e. copyOnWriteArrayListRef.iterator() ), which internally holds a reference to the underlying CopyOnWriteArrayList object’s array, which is immutable and therefore can be used for traversal without requiring either synchronization on the list copyOnWriteArrayListRef or need to clone() the copyOnWriteArrayListRef list before traversal (i.e. there is no risk of concurrent modification) and also offers better performance.
Array:
1,Java中的arrays要比ArrayList/Vector快的多,因此若我们提前已知道了array的长度的话就尽多地使用arrays.
2,array里的任何item都可以直接地访问到.
List/Stack等:
1,ArrayList/Vector are specialized data structures,其底层是应用了array不过是另外又加了许多方便实用的方法,如add(...),remove(...)等,这样其底层array的大小就会"自动"地伸缩.ArrayList另外也支持基于index的search,如indexOf(Object obj)和lastIndexOf(Object obj).
2,这些类(接口)与其底层的array相比是更为abstact,对其元素的访问也更为restricted.如对stack添加元素时只能从最后一个元素的位置进行.(These are more abstract than arrays and access is restricted. For example, a stack allows access to only last item inserted. )
Queue<E>(J2SE5.0中引入):
1,先进先出.
2,This mechanism is called First In First Out(FIFO);
3,Placing an item in the queue is called “enqueue or insertion” and removing an item from a queue is called “dequeue or deletion”. Pre J2SE 5.0, you should write your own Queue class with enqueue() and dequeue() methods using an ArrayList or a LinkedList class.
J2SE 5.0 has a java.util.Queue<E> interface.
Stack:
1,元素只能在最后一个元素处添加.
2,LIFO
3,If you want to reverse "XYZ" -->"ZYX",then you can use a java.util.Stack.
A 13:Java中的那些没定义任何方法的接口当做Marker来用的,利用它可以告诉编译器对这类接口的实现类另行对待.
Java中像java.io.Serializable,java.lang.Cloneable,java.util.EventListener等这些接口也称为"tag"接口,因为用它们可以将其实现类基于某种特性再分类.
Q 14: 谈谈你对Java里覆盖与重载的理解?它们有什么不同?
Q 14:
Method Overloading:
方法重载说的是,在同一类中可以有同名但不同方法签名的方法,利用方法重载,我们可以针对不同的数据以不同的实现方法来定义the same operation.
如下类所示:
class MyClass {
public void getInvestAmount(int rate) {...}
public void getInvestAmount(int rate,long principal) {...}
}
在上例中,两个方法的名字相同,不过它们的method signatures,这就是我们所说的方法重载.
Method Overriding:
方法覆盖是指,在有父子关系的两个类中方法可以有同样的名字和签名,利用方法覆盖,我们可以针对不同类型的对象以不同的方式定义the same operation.
如下类所示:
class BaseClass {
public void getInstanceAmount (int rate) {...}
}
class MyClass extends BaseClass {
public void getInvestAmount(int rate) {...}
}
上例中,两个类中的方法具有相同的名字和签名,不过子类中的方法覆盖了父类中的相应方法.
Q 15: Java中的ArrayList和Vector有什么区别?HashMap与Hashtable呢?stack与queue又有什么不同呢?
What is the main difference between an ArrayList and a Vector? What is the main difference between HashMap
and Hashtable? What is the difference between a stack and a queue? LF DC PI CI FAQ
A 15:
Vector/Hashtable:
这两个类是在没有引入Collections API前已有的,Vector和Hashtable这两个类都是sychronized,Any method that touches their contents is thread-safe.
ArrayList/HashMap:
不过若我们并不想用线程安全这个特性时(毕竟这个线程安全是很影响性能的),就可以选ArrayList或HashMap.
Q. 哪一个更好呢? 通常来说,ArrayList/HashMap优于Vector/Hashtable.若项目是基于多线程并且其中至少有一个线程要么add要么delete collection中的entry的话,我们选现在Java中新collection API里的external synchronization功能,下面例子中我们就可以根据需要临时地获得一个synchronized的collection:
Map myMap = Collections.synchronizedMap(myMap);
List myList = Collections.synchronizedList(myList);
Note:
1,若使用J2SE5的话,为了提高性能,我们可以用那个新的"java.util.concurrent"包中的API,这样...because the concurrent package collections are not governed by a single synchronized lock as shown above. The “java.util.concurrent” package collections like ConcurrentHashMap is threadsafe and at the same time safely permits any number of concurrent reads as well as tunable number of concurrent writes. The “java.util.concurrent” package also provides an efficient scalable thread-safe non-blocking FIFO queue like ConcurrentLinkedQueue.
2,The “java.util.concurrent” package also has classes like CopyOnWriteArrayList, CopyOnWriteArraySet, which gives you thread safety with the added benefit of immutability to deal with data that changes infrequently. The CopyOnWriteArrayList behaves much like the ArrayList class, except that when the list is modified, instead of modifying the underlying array, a new array is created and the old array is discarded. This means that when a caller gets an iterator (i.e. copyOnWriteArrayListRef.iterator() ), which internally holds a reference to the underlying CopyOnWriteArrayList object’s array, which is immutable and therefore can be used for traversal without requiring either synchronization on the list copyOnWriteArrayListRef or need to clone() the copyOnWriteArrayListRef list before traversal (i.e. there is no risk of concurrent modification) and also offers better performance.
Array:
1,Java中的arrays要比ArrayList/Vector快的多,因此若我们提前已知道了array的长度的话就尽多地使用arrays.
2,array里的任何item都可以直接地访问到.
List/Stack等:
1,ArrayList/Vector are specialized data structures,其底层是应用了array不过是另外又加了许多方便实用的方法,如add(...),remove(...)等,这样其底层array的大小就会"自动"地伸缩.ArrayList另外也支持基于index的search,如indexOf(Object obj)和lastIndexOf(Object obj).
2,这些类(接口)与其底层的array相比是更为abstact,对其元素的访问也更为restricted.如对stack添加元素时只能从最后一个元素的位置进行.(These are more abstract than arrays and access is restricted. For example, a stack allows access to only last item inserted. )
Queue<E>(J2SE5.0中引入):
1,先进先出.
2,This mechanism is called First In First Out(FIFO);
3,Placing an item in the queue is called “enqueue or insertion” and removing an item from a queue is called “dequeue or deletion”. Pre J2SE 5.0, you should write your own Queue class with enqueue() and dequeue() methods using an ArrayList or a LinkedList class.
J2SE 5.0 has a java.util.Queue<E> interface.
Stack:
1,元素只能在最后一个元素处添加.
2,LIFO
3,If you want to reverse "XYZ" -->"ZYX",then you can use a java.util.Stack.
发表评论
-
Java实现将源文件中的注释替换成空行。
2011-12-27 15:39 2797以Css文件为例, 为了能准确地定位,需要把段注释也要替换 ... -
JVM内存溢出问题分析排查
2011-10-25 10:27 3747内存溢出与数据库锁表的问题,可以 ... -
ant运行java程序时, 它不能加载指定properties文件, 怎么处理?
2011-07-27 17:47 3722运行时, 目录结构如下: . ... -
关于用多线程时任务分配与结果收集的问题的设计讨论
2011-07-27 10:47 2079假定任务是这样的: 对于给定字符串,如“threadTe ... -
File类createNewFile时的一个注意点
2010-11-03 17:42 26579今天体会到一个陷阱,刚开始还觉得是JDK的bug呢 ... -
要static还是不要static?
2010-09-25 14:18 1211内部接口声明加不加static没什么不同 附件Inn ... -
线程join方法的理解
2010-08-22 11:11 2437一个偶然机会,又接 ... -
should effort go into reuse above maintainability and extensibility?
2010-06-04 09:37 1306Master and Student Maste ... -
对接口编程的一些思考
2009-04-10 08:41 1258对一个问题的持续深追,又想起了Java中接口编 ... -
JVM创建一个新对象到底有多大的代价?
2009-04-02 09:54 1624好像是在听一人讲JVM性能调优方面事时, 知道 ... -
序列化(二): 为什么要序列化?
2009-03-20 08:25 1950在readResolve()方法与序列化中, 由r ... -
序列化(一): readResolve()方法与序列化
2009-03-17 10:08 3124在CJC(一) 中提到一个问题,即 readResolve方 ... -
Core Java: 继承覆盖时的一个问题
2009-02-23 21:01 1264看如下Java代码: public class Main { ... -
CoreJava: 父子类都需要实现同一个接口?
2009-02-18 16:16 2451前些写用LinkedHashSet带来的思考(http ... -
Spring中配置Qaurtz时的singlton问题
2008-11-23 17:24 1571上一篇中用TimerTask做了个简单的实验, ... -
试下Spring的scheduledTask: 不应该出问题的问题
2008-11-21 20:39 3101要用Spring的scheduledTask了 ... -
在Java里不用Socket而直接操作远程计算机里的文件.
2008-06-25 18:27 2810今天上班时偶然发现在Java里可以在不用Socket情况下操作 ... -
about @SuppressWarnings.
2008-06-24 13:50 7680about @SuppressWarnings. ... -
java.sql.Timestamp转为相应字符串的问题及解答
2008-04-01 14:28 2906工作中用到了java.sql.Timestamp这个类,先不说 ... -
"异常"的梦
2008-03-24 08:33 1327"不对呀,电子地图上 ...
相关推荐
根据给定文件的部分内容,我们可以总结出一系列与Java EE相关的面试知识点,这些知识点涵盖了核心Java、异常处理、数据库连接、Web开发、企业级组件等多个方面。以下是对这些知识点的详细解释: ### 1. Java核心...
以上知识点涵盖了Java基础以及JavaEE面试中常见的问题,包括数据类型的比较、类与接口的设计、异常处理机制以及内存管理的细节,这些都是Java程序员应掌握的基本概念和技能。在面试中理解和熟练运用这些知识,能够...
MyBatis动态sql可以根据不同的条件生成不同的sql语句,例如使用<if>标签或<choose>标签。 16. Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?例如<resultMap>、<parameterMap>、<sql...
JavaEE面试题是Java开发人员在求职过程中常常会遇到的一类问题,涵盖了广泛的Java和Java Web技术领域。这里,我们将深入探讨这些领域的关键知识点,帮助你更好地准备面试。 1. **Java基础知识** - **数据类型与...
### JAVAEE常见面试知识点汇总 #### 一、JavaSE基础 ...通过以上总结,我们不仅了解了JavaSE的基础知识点,还深入探讨了一些重要的概念和技术细节,这对于准备JavaEE面试的人来说是非常宝贵的参考资料。
JavaEE基础面试题通常会涵盖Java的核心概念,包括面向对象的特性、数据类型、操作符、内存管理等。以下是对这些知识点的详细说明: 1. **面向对象的特征**: - **抽象**:抽象是将复杂的问题简化,只关注核心特征...
10. **goto在Java中的地位**: - Java中保留了`goto`关键字,但并未使用,因此无法在Java代码中使用。 11. **length方法与length属性**: - 数组没有`length()`方法,但有`length`属性来获取长度。 - String类有...
- 面向对象:Java是一种面向对象的语言,对象的概念、类的定义、构造函数、方法重载和覆盖、接口等是面试中的常见问题。 - 集合部分:Java集合框架包括List、Set、Queue和Map等,面试中常会考察ArrayList与...
### 葵花宝典之Java、JSP、JS、Oracle等面试知识点解析 #### JavaEE基础 **一、面向对象的特征** 面向对象编程(OOP)的主要特征包括封装、继承、多态。 1. **封装**: 隐藏对象内部状态和行为,仅通过公开的接口...
Java面试题库大全涵盖了广泛的Java技术领域,是准备Java面试的宝贵资源。下面将详细解析其中可能涉及的重要知识点,帮助你全面了解Java的基础知识、进阶技能以及面试中常见的问题。 1. **J2SE基础知识**: - **...
JavaEE面试题涵盖了许多核心的Java编程概念,这里我们将深入探讨其中几个关键知识点。 1. **final, finally, finalize的区别**: - `final`:这个关键字用于声明不可改变的变量、类或方法。对于变量,一旦赋值后就...
### 自整理Java关于基础和框架的面试题 #### 基础知识点 ##### JDK常用的包 - **java.lang**: 包含所有基本类,如`String`、`Math`等。 - **java.util**: 提供集合框架、日期/时间设施、事件模型、杂项实用程序类...
### Java初级面试题知识点解析 #### 一、Java三大开发平台 Java的三大开发平台分别是: 1. **JavaSE (Standard Edition...以上知识点覆盖了Java初级面试中常见的概念和技术要点,对于初学者来说是非常重要的基础知识。
#### 1.5 JavaSE.JavaEE和JavaME有什么区别? - **Java SE (Standard Edition)**:标准版,提供核心 Java 技术,包括基本的类库和开发工具,适用于桌面应用程序开发。 - **Java EE (Enterprise Edition)**:企业版...
- 新建状态 -> 就绪状态 -> 运行状态 -> 阻塞状态 -> 死亡状态 **26. 如何停止一个线程** - 使用`interrupt()`方法中断线程。 - 使用`stop()`方法强行终止线程(不推荐)。 **27. 线程安全概念** - 指多个线程...
在Java面试中,通常会考察开发者对Java基础知识的掌握,包括Javase和Javaee两个部分。以下是对一些常见面试题的详细解释: 1. `super()`与`this()`的区别: `super`关键字用于访问父类的成员,而`this`关键字则指...
本资料“常见面试题200道题目”包含了JavaSE(Java标准版)和JavaEE(Java企业版)的相关问题,旨在帮助应聘者全面准备面试。 1. **Java基础知识**: - 讲解Java的内存管理,包括堆内存、栈内存、方法区和本地方法...
它的这三个主要体系结构——JavaSE、JavaEE和JavaME,分别对应标准版、企业版和微型版,覆盖了从桌面应用到大型企业级系统再到嵌入式设备的广泛应用场景。 Java的封装性是面向对象编程的核心特征之一。它通过访问...
Java编程语言中,方法覆盖(Overriding)和方法重载(Overloading)是两种重要的多态性体现,它们是理解面向对象编程的关键概念。 方法重载(Overloading)指的是在一个类内部,允许存在多个同名方法,但这些方法的...