Java基础知识
我爱大海V5
从事互联网工作
展开
-
Java Annotation入门
版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)原 文:[http://www.matrix.org.cn/resource/article/44/44048_Java+Annotation.html]http://www.mat转载 2014-03-20 11:52:48 · 437 阅读 · 0 评论 -
java代理模式与反射机制
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式一般涉及到的角色有: 抽象角色:声明真实对象和代理对象的共同接口; 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻转载 2014-02-26 10:20:29 · 564 阅读 · 0 评论 -
HashMap和Hashtable的区别
导读: 1 HashMap不是线程安全的 hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。2 HashTable是线程安全的一个Collection。HashM原创 2014-02-24 14:57:58 · 510 阅读 · 0 评论 -
静态内部类和非静态内部类的区别
如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部类声明为static。这通常称为嵌套类(nested class)。Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。想要理解static应用于内部类时的含义,你就必须记住,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类转载 2014-02-24 16:27:32 · 518 阅读 · 0 评论 -
Java内部类与静态内部类
定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现特定的接口。外部类按常规的类访问方式使用内部类,唯一的差别是外部类可以访问内部类的所有方法与属性,包括私有方法与属性。(1)创建实例 OutC原创 2014-02-24 16:29:09 · 576 阅读 · 0 评论 -
java面试题及答案(基础题122道,代码题19道)
JAVA相关基础知识1、面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的转载 2014-02-24 16:25:35 · 648 阅读 · 0 评论 -
final、finally和finalize的区别是什么?
这是一道再经典不过的面试题了,我们在各个公司的面试题中几乎都能看到它的身影。final、finally和finalize虽然长得像孪生三兄弟一样,但是它们的含义和用法却是大相径庭。这一次我们就一起来回顾一下这方面的知识。final关键字我们首先来说说final。它可以用于以下四个地方:1. 定义变量,包括静态的和非静态的。2. 定义方法的参数。3. 定义方法。4.转载 2014-02-24 16:18:40 · 556 阅读 · 0 评论 -
Servlet生命周期与工作原理
Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法Servlet初始化阶段: 在下列时刻Servlet容器装载Servlet: 1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.X转载 2014-02-24 15:44:38 · 558 阅读 · 0 评论 -
线程的sleep和wait的区别
Java中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行Java中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行。 共同点: 1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。 2. wait()和sleep()都可以通原创 2014-02-24 13:20:45 · 635 阅读 · 0 评论 -
Java 中switch-case的注意地方
下面是switch的简单写法:switch(A){case B;}A部分中的值必须是int型的,或者是能够自动进行饮试转换成int型的表达式。也就是说A部分可以是byte/short/char/int型的。其次要强调的是该程序中B部分的值必须是单个byte/short/char/int型的值,或者是final型的变量。但是final型的变量也是有要求的,转载 2014-02-24 11:09:22 · 775 阅读 · 0 评论 -
Java实现几种常见排序方法(上)
日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。转载 2014-02-24 10:48:29 · 1173 阅读 · 0 评论 -
【深入Java虚拟机】之三:类初始化
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17845821 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码。虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化:遇到new、getstatic、putstatic、invokestatic这四条字节转载 2014-01-23 09:05:14 · 461 阅读 · 0 评论 -
【深入Java虚拟机】之四:类加载机制
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17881581类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示: 其中类加载的过程包括了加载、验证、准备、解析、初始化五个转载 2014-01-23 09:04:28 · 538 阅读 · 0 评论 -
【深入Java虚拟机】之二:Class类文件结构
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17675609 平台无关性 Java是与平台无关的语言,这得益于Java源代码编译后生成的存储字节码的文件,即Class文件,以及Java虚拟机的实现。不仅使用Java编译器可以把Java代码编译成存储字节码的Class文件,使用JRuby等其他语言的编译器也可转载 2014-01-23 09:06:56 · 546 阅读 · 0 评论 -
【深入Java虚拟机】之六:Java语法糖
转载请注明出处:http://blog.csdn.net/ns_code/article/details/18011009 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家Peter.J.Landin发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。Java中最常用的语法糖主要有泛型、变转载 2014-01-23 09:01:54 · 525 阅读 · 0 评论 -
【深入Java虚拟机】之七:Javac编译与JIT编译
转载请注明出处:http://blog.csdn.net/ns_code/article/details/18009455编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现。很容转载 2014-01-23 09:01:06 · 709 阅读 · 0 评论 -
java参数后面 跟 三个点 含义 详解
java参数后面跟三个点是什么意思 (2011-04-14 11:55:36)转载标签: it 分类: OutStandingIdeasAVA中类型后面跟三个点是什么来的。浏览次数:808次悬赏分:5 | 解决时间:2009-6-26 10:30 | 提问者:不完美的ID看代码中那个三点,这样做起到重载的作用,但这是什么意思?class Father{转载 2014-02-26 10:29:02 · 740 阅读 · 0 评论 -
从代理模式到Java反射机制
代理模式,相信大多数人都非常熟悉,常见的实现方式是通过公共接口的方式,让我们的目标类和代理类实现同一接口,在代理类中调用目标类对象的方法。具体请看我另一个博客中的文章:Java的代理模式(通过公共接口实现) 。通过接口的方式,有个不好的地方,就是对每个目标类都要写一对与之相对应的接口和代理类,如果业务类很多,就是非常繁锁的工作了。 而加入反射机制的代理模式,可实现一个公共的代理类,转载 2014-02-26 10:44:21 · 533 阅读 · 0 评论 -
JAVA annotation入门
JAVA annotation入门 最近对spring源码感兴趣,今天看到annotation部分,略记之。一. 最常见的annotation@Override:用在方法之上,用来告诉别人这一个方法是改写父类的@Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上.@SuppressWarni转载 2014-03-20 15:04:52 · 585 阅读 · 0 评论 -
转:JAVA ANNOTATION详解
转载自:http://william750214.javaeye.com/blog/298104元数据的作用如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类:l 编写文档:通过代码里标识的元数据生成文档。l 代码分析:通过代码里标识的元数据对代码进行分析。l 编转载 2014-03-20 15:51:56 · 452 阅读 · 0 评论 -
Java中HashMap遍历的两种方式
原文地址: http://www.javaweb.cc/language/java/032291.shtml第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next();原创 2014-03-16 23:14:56 · 698 阅读 · 0 评论 -
类成员变量和实例成员变量分别指什么有什么区别(举例说明)?
例如定义一个类:class Text{ public static int number; public int temp;}如果你想访问temp属性,你就必须先创建一个Text的对象,才能访问:Text b = new Text();b.temp;这就是实例成员变量。而你想 访问number的话,不用创建Text的实例就可以访问,就像这样:Text.number.这就是类成员变原创 2014-03-16 11:23:16 · 2724 阅读 · 0 评论 -
JAVA中Stack和Heap的区别
1.Java中对象都是分配在heap(堆)中。从heap中分配内存所消耗的时间远远大于从stack产生存储空间所需的时间。 (1)每个应用程序运行时,都有属于自己的一段内存空间,用于存放临时变量、参数传递、函数调用时的PC值的保存。这叫stack。(2)所有的应用可以从一个系统共用的空间中申请供自己使用的内存,这个共用的空间叫heap。(3)stack中的对象或变量只要定义好就原创 2014-03-16 21:49:40 · 591 阅读 · 0 评论 -
排序都有哪几种方法?请列举。用JAVA实现一个快速排序。
本人只研究过冒泡排序、选择排序和快速排序,下面是快速排序的代码:public class QuickSort {/*** 快速排序*@param strDate*@param left*@param right*/publicvoid quickSort(String[] strDate,int left,int right){Stringmiddle,temp原创 2014-03-10 15:43:20 · 3429 阅读 · 0 评论 -
java动态代理(JDK和cglib)
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为转载 2014-03-03 15:14:34 · 554 阅读 · 0 评论 -
单例模式简析
说实话,这是我面试时被击中的第一枪,因为看的书少,实践的也少,所以当时根本不知道什么是单例模式。现在看的多了,就想把以前的一些失误记录下来。一是提醒自己不要再犯这类错误,二也是给其他人一些提醒吧。言归正传,所谓单子模式就是在整个应用过程中只向外界提供唯一的一份实例,也就是说在应用时只有一个实例,这样也就不用反反复复的创建实例了。那么根据他的要求,看下面一个最简单的单例模式的代码:转载 2014-03-03 11:51:12 · 599 阅读 · 0 评论 -
java动态代理学习笔记
没事的时候翻看lang.reflect包下的代码,发现有两部分内容:涉及反射和动态代理。 很多地方都可以看到动态代理的影子,只是一直没仔细看下。 在学习之前,先提出几个问题,带着问题来看代码: 1.什么是动态代理? 2.为什么使用动态代理? 3.使用它有哪些好处? 4.哪些地方需要动态代理? --------------------分隔线----------原创 2014-03-03 14:00:57 · 625 阅读 · 0 评论 -
JAVA反射机制
Reflection是Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来。 Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。Jav转载 2014-03-03 10:20:18 · 563 阅读 · 0 评论 -
Java面试宝典2013版(超长版)
一. Java基础部分......................................................................................................21、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?.....22、Java有没有goto?....................转载 2014-03-03 21:12:49 · 1002 阅读 · 0 评论 -
浅谈Java代理机制
可以说代理是java十分重要的一种机制,另一个当然是属于反射了,jdk中单独讲到了反射API(java.lang.reflect),可能有人认为反射对资源消耗比较厉害,确实也是,反射肯定是要消耗资源的,但也不是什么都要用到反射,所以最佳试验应该是在资源消耗程度和反射的使用程度之间找到一个平衡点,本文并不打算讲反射,关于反射的心得以后再贴出来,自己最近也在折磨折磨 代理可以分为:Static原创 2014-03-03 11:57:56 · 614 阅读 · 0 评论 -
Java动态代理与静态代理的定义与区别??
JAVA的静态代理与动态代理比较 一、概念 代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理类的创建时期,原创 2014-02-26 13:38:54 · 835 阅读 · 0 评论 -
反射和动态代理
之前参与一个项目,使用的技术框架是struts2+ibatis,业余好奇探索了下,于是有幸接触到java的反射和动态代理。我知道在struts2的拦截器中使用了反射和动态代理,据说很多经典的框架,比如spring、hibernate、ibatis等也都大范围使用了。这两种技术大概意思如下:反射:在程序运行的时候,动态的获取某个类中的属性和方法,并且能够调用(很多框架能自动识别你写的类,然后转载 2014-02-26 11:22:21 · 571 阅读 · 0 评论 -
Java 可变参数
Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。可变参数的特点:(1)、只转载 2014-02-26 11:08:50 · 515 阅读 · 0 评论 -
【深入Java虚拟机】之八:Java垃圾收集机制
转载请注明出处:http://blog.csdn.net/ns_code/article/details/18076173对象引用 Java中的垃圾回收一般是在Java堆中进行,因为堆中几乎存放了Java中所有的对象实例。谈到Java堆中的垃圾回收,自然要谈到引用。在JDK1.2之前,Java中的引用定义很很纯粹:如果reference类型的数据中转载 2014-01-23 09:00:14 · 514 阅读 · 0 评论 -
Java中try catch finally语句中含有return语句的执行情况(总结版)
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17485221 在这里看到了try catch finally块中含有return语句时程序执行的几种情况,但其实总结的并不全,而且分析的比较含糊。但有一点是可以肯定的,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有ret转载 2014-01-23 09:13:02 · 1068 阅读 · 0 评论 -
Java Socket实战之七 使用Socket通信传输文件
本文地址:http://blog.csdn.net/kongxx/article/details/7319410Java Socket实战之一 单线程通信Java Socket实战之二 多线程通信Java Socket实战之三 传输对象Java Socket实战之四 传输压缩对象Java Socket实战之五 使用加密协议传输对象Java Soc转载 2013-12-09 17:06:44 · 548 阅读 · 0 评论 -
Java Socket实战之五 使用加密协议传输对象
本文地址:http://blog.csdn.net/kongxx/article/details/7259837Java Socket实战之一 单线程通信Java Socket实战之二 多线程通信Java Socket实战之三 传输对象Java Socket实战之四 传输压缩对象前面几篇博文提到了Socket中一些常用的用法,但是对于一些有安全要求的应用就需转载 2013-12-09 15:15:56 · 520 阅读 · 0 评论 -
Java Socket实战之四 传输压缩对象
本文地址:http://blog.csdn.net/kongxx/article/details/7259834Java Socket实战之一 单线程通信Java Socket实战之二 多线程通信Java Socket实战之三 传输对象上一篇文章说到了用Java Socket来传输对象,但是在有些情况下比如网络环境不好或者对象比较大的情况下需要把数据对象进行压缩然后转载 2013-12-09 14:44:55 · 523 阅读 · 0 评论 -
Java多线程-线程的调度(让步)
线程的让步含义就是使当前运行着线程让出CPU资源,但是扔给谁不知道,仅仅是让出,线程状态回到可运行状态。线程的让步使用Thread.yield()方法,yield()为静态方法,功能是暂停当前正在执行的线程对象,并执行其他线程。代码如下:package thread;public class ThreadYield { public static void main(转载 2013-12-02 15:28:13 · 586 阅读 · 0 评论 -
Java多线程-线程的同步(同步方法)
线程的同步是保证多线程安全访问竞争资源的一种手段。线程的同步是Java多线程编程的难点,往往开发者搞不清楚什么是竞争资源、什么时候需要考虑同步,怎么同步等等问题,当然,这些问题没有很明确的答案,但有些原则问题需要考虑,是否有竞争资源被同时改动的问题?在本文之前,请参阅《Java多线程-线程的同步与锁》,本文是在此基础上所写的。对于同步,在具体的Java代码中需要完成一下两个操作转载 2013-12-02 13:57:40 · 672 阅读 · 0 评论