JavaSE
临江别寄
软件工程专业
展开
-
利用反射获取方法的反回值类型和参数个数
package com.test;import java.lang.annotation.Annotation;import java.lang.reflect.Method;import java.lang.reflect.Type;import org.junit.Test;public class Application{ p原创 2014-05-01 16:23:58 · 862 阅读 · 0 评论 -
如何实现自己的输入流
1、 首先必须继承InputStream2、实现read方法3、由于ptr位置的使用,使得流的访问,一次必须读完。public class MyownStream extends InputStream{ protected byte[] data; protected int ptr; protected int mark = 0;原创 2015-08-30 19:07:38 · 618 阅读 · 0 评论 -
浅谈Java中的hashcode方法
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:1public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的转载 2015-08-31 10:50:20 · 369 阅读 · 0 评论 -
RandomAccessFile的用法
RandomAccessFile是一个很有用的类,可以将字节流写入到磁盘文件中,对应的也可以从磁盘文件中读取出字节流,它可以用于多线程下载,参考博客: 在API中关于RandomAccessFile的描述如下:此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始原创 2015-08-31 22:17:51 · 574 阅读 · 0 评论 -
Java中如何遍历Map对象的4种方法
在Java中如何遍历Map对象How to Iterate Over a Map in Java在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等) 方法一 在for-ea转载 2015-08-31 22:48:00 · 438 阅读 · 0 评论 -
怎么获取java项目中的文件
一 相对路径的获得 说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的java项目还是web项目) String relativelyPath=System.getProperty("user.dir"); 上述相对路径中,java项目中的文件是相对于项目的根目录 web项目中的文件路径视不同的web服务器不同而不同(tomcat是相对于 tomca转载 2015-09-02 10:39:11 · 894 阅读 · 0 评论 -
Java的深克隆和浅克隆
一、概念 1.浅复制与深复制概念⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。(即复制对象的基本类型是复制数据本身,而复制对象时,只复制对象的应用,并不产生新的对象)⑵深复制(深克隆)被复制对象的所有变量都含有与原来的对象相同的值,除去那原创 2015-09-08 15:56:42 · 352 阅读 · 0 评论 -
深入理解Java对象序列化
1. 什么是Java对象序列化Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。使用Java对象序列化,在保存对象时,会把转载 2015-09-01 20:21:07 · 1026 阅读 · 0 评论 -
Java线程:线程栈模型与线程的变量
线程调度的原理 下面通过一个示例性的代码说明线程(调用)栈的变化过程。 这幅图描述在代码执行到两个不同时刻1、2时候,虚拟机线程调用栈示意图。当程序执行到t.start();时候,程序多出一个分支(增加了一个调用栈B),这样,栈A、栈B并行执行。从这里就可以看出方法调用和线程启动的区别了。1、从图中可以看出,每次会创建一个原创 2015-09-05 17:35:38 · 553 阅读 · 0 评论 -
摘自<编写高质量代码:改善Java程序的151个建议>
建议1: 不要在常量和变量中出现易混淆的字母建议2: 莫让常量蜕变成变量建议3: 三元操作符的类型务必一致建议4: 避免带有变长参数的方法重载建议5: 别让null值和空值威胁到变长方法建议6: 覆写变长方法也循规蹈矩建议7: 警惕自增的陷阱建议8: 不要让旧语法困扰你建议9: 少用静态导入建议10: 不要在本类中覆盖静态导入的变量和方法建议11: 养成良好原创 2015-10-25 20:34:29 · 646 阅读 · 0 评论 -
Iterator的数据访问方式
在Java的集合中大部分集合类都是实现了迭代器的,那么我们关注的问题是迭代器到底是怎么实现的呢? 1、首先它必须实现Iterator 接口。 实现后一般由该集合类的内部类如ArrayList 有内部类ListItr实现了其迭代器访问效果如下为其源码 private class Itr implements Iterator { int cu原创 2015-10-27 16:43:21 · 998 阅读 · 0 评论 -
HashMap实现原理
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。(注意HashTab不允许插入null值) 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针原创 2015-10-27 16:59:12 · 372 阅读 · 0 评论 -
Java Enum详解
1、枚举(Enum) :我们所定义的每个枚举类型都继承自 java.lang.Enum 类,枚举中的每个成员默认都是 public static final 的。2、 每个枚举的成员其实就是您定义的枚举类型的一個实例(Instance) ) 。换句话说,当定义了一个枚举类型后,在编译时刻就能确定该枚举类型有几个实例,分别是什么。在运行期间我们无法再使用该枚举类型创建新的实例了,这些实例在编原创 2015-10-27 21:13:46 · 918 阅读 · 0 评论 -
serialVersionUID的作用
简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。(InvalidCastException)serialVer转载 2015-12-02 19:30:39 · 553 阅读 · 0 评论 -
Java序列化
关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结。此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制。在撰写本文时,既参考了Thinking in Java, Effective Java,JavaWorld,developerWorks中的相关文章和其它网络资料,也加入了自己的实践经验与理解,文、码并茂,希望对大家有所帮助。转载 2015-09-06 20:22:40 · 421 阅读 · 0 评论 -
装饰者模式
装饰模式(Decorator) 装饰模式又名包装(Wrapper)模式。 装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式通过创建一个包装对象,也就是装饰,来包裹真实的对象。 装饰模式以对客户端透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。 装饰模式可以在不创造更转载 2015-08-30 19:20:56 · 318 阅读 · 0 评论 -
如何实现Java从键盘输入
1、利用Scanner类 ,该类含有很多读取输入的数据的方法 Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); System.out.println(a);2、利用BufferedReader ,但是它仅仅提供readLine()方法,相关数据还需要自原创 2015-08-29 11:10:00 · 1121 阅读 · 0 评论 -
如何实现多线程下载文件
package com.it.threadhttp;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Ra原创 2015-08-14 16:22:00 · 683 阅读 · 0 评论 -
Java 编程中异常处理的最佳实践
异常是面向对象语言非常重要的一个特性,良好的异常设计对程序的可扩展性、可维护性、健壮性都起到至关重要。JAVA根据用处的不同,定义了两类异常 * Checked Exception: Exception的子类,方法签名上需要显示的声明throws,编译器迫使调用者处理这类异常或者声明throws继续往上抛。 * Unchecked Exception: RuntimeExc转载 2014-05-01 08:06:02 · 620 阅读 · 0 评论 -
Java中String的spilt
java 中String 的spilt方法是用于按照分割符进行分隔1、简介 splitpublic String[] split(String regex)Splits this string around matches of the given regular expression. This method works as if by invoking the原创 2014-05-08 17:04:56 · 1580 阅读 · 0 评论 -
Java泛型总结
1. 什么是泛型?泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。可以在集合框架(Collection framework)中看到泛型的动机。例如,Map 类允许您向一个 Map 添加任意类的对象,转载 2014-04-24 11:04:52 · 774 阅读 · 0 评论 -
JAVA 中的Array
Java 之 Array 数组 2012-04-30 23:49:41| 分类: 默认分类|字号 订阅Java反射技术除了可以在运行时动态地决定要创建什么类型的对象,访问哪些成员变量,方法,还可以动态地创建各种不同类型,不同维度的数组。动态创建数组的步骤如下:1.创建Class对象,通过forName(String)方法指定数组元素的类型2.调用Array.newInsta原创 2014-04-24 17:55:02 · 1016 阅读 · 0 评论 -
Java Annotation详解
转载自:http://william750214.javaeye.com/blog/298104元数据的作用如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类:l 编写文档:通过代码里标识的元数据生成文档。l 代码分析:通过代码里标识的元数据对代码进行分析。l 编译检查:通过代码转载 2014-04-28 08:48:10 · 511 阅读 · 0 评论 -
UML中聚合和组合的区别
一直以来,对UML的东西总是模棱两可,对于类图中的聚合和组合,知道两种的区别,但过一段时间后总是分不清两者谁是谁,唉,主要怪自己的语文没有学 好 ,呵呵!其实,对于聚合和组合,如果换成英文,就很好理解了:聚合就是“has-a”,组合就是“contains-a”。聚合是空心的菱形;组合是实心的菱形(这个比较好理解,实心的肯定比空心的扎实,哈哈)。摘录一段话:聚合和组合转载 2014-12-29 14:59:43 · 1780 阅读 · 0 评论 -
深度思考Java成员变量的初始化
上次同学问我Java的初始化问题时,我只是简单的告诉了他答案,今天参考CSDN博主 luohuacanyue (博客地址见参考)写的 深度思考Java成员变量的初始化 ,谈谈自己对这个的理解。 Java代码的时候很少去关注成员变量的声明和初始化顺序,今天借此机会抛出一些问题:语言的设计者们为什么会这样设计?比如说很常见的一个问题:abstract(抽象)类不能用final进行原创 2015-01-01 13:29:04 · 783 阅读 · 0 评论 -
Java如何判断对象和类和类与类之间的关系
1.如何判读某个对象属于某个类,可以利用Java中的的instanceof用法:判断每个对象是否属于某个类的特定实例,具体格式if(对象 instanceof 要判断的对象){}返回 true / false例如: public class Test {public static void main(String[] args){ Test t1 = new原创 2015-01-01 17:43:51 · 4117 阅读 · 2 评论 -
正则表达式-电话号码类
电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号) ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$) 匹配格式:11位手转载 2015-06-30 10:57:17 · 521 阅读 · 0 评论 -
Java集合框架
简化图:Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。Java 2集合框架图集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。实现类:8个实现类(实线表示),对接口的具体实现。在很大程度转载 2015-08-27 11:57:39 · 627 阅读 · 0 评论 -
Eclipse中的常用快捷键
一、查找方法:ctrl + o ,然后输入你的方法名,一般输入一两个字母就可以很快找到你想找的方法。二、跳转到某行ctrl+l,输入行数,将跳转到指定的行号处。· 三、如何在eclipse中通过接口查找它的实现类可以选择接口名称后,用CTRL+T快捷键,可以查看整个实现的结构eclipse快捷键 10个最有用的快捷键Eclips转载 2015-08-13 21:07:58 · 622 阅读 · 0 评论 -
Java中File常用用法总结
构造函数1、public File(String pathname)2、public File(String parent, String child) 在父目录下面创建文件,如果需要可以自己创建父目录,否则报异常,没有发现路径3、public File(File parent, String child) 在父目录下面创建文件,如果需要可以自己创建父目录,否则报原创 2015-08-28 10:40:16 · 645 阅读 · 0 评论 -
Java线程中断的本质深入理解
参考1:http://www.51ou.com/browse/java/21131_2.html参考2:http://blog.csdn.net/wxwzy738/article/details/8516253一、引入 java多线程中断有Stop和interrupt,此处不谈LockSupport。1、Stop是立即将一个线程中断,并释放锁,如果线程刚好执行到一半,很容易转载 2016-04-21 11:04:31 · 631 阅读 · 0 评论