Java自学手册
喵先生MJ
喵了个咪的,才想起来喵在这儿还有个空间
展开
-
东京商城注册页面使用的正则表达式......
京东商城注册页面找到的一组,正则表达式,验证规则比较准确,包括几乎包括所有常用的规则decmal: "^([+-]?)\\d*\\.\\d+$", //浮点数 decmal1: "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$", //正浮点数 decmal2: "^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$", //负浮转载 2014-09-16 14:09:41 · 453 阅读 · 0 评论 -
JAVA 位运算符和位移运算符
java位运算符包括 &(与) AND |(或) OR ^(异或) XOR ~(非) NOT 位移运算符包括 >>(右移) >>>(右移,左边空出的位以0填充) 顾名思义,位运算符用于位运算,那就只能对整型或者字符型进行运算。而除了~(非)是一元运算符之外其他的都为二元运算符。 所有位运算都会把值转为二进制转载 2014-08-20 20:49:23 · 339 阅读 · 0 评论 -
Java读写Properties文件
Java中读写资源文件最重要的类是Properties,功能大致如下:1. 读写Properties文件2. 读写XML文件3. 不仅可以读写上述两类文件,还可以读写其它格式文件如txt等,只要符合key=value格式即可.注意:资源文件中含有中文时的处理方法 1. 将中文字符通过工作转成utf8编码,可以通过Java自带的nativetoascii或Eclipse中转载 2014-08-20 20:28:10 · 327 阅读 · 0 评论 -
简单学习动态代理模式
原来写过简单实用代理模式,即静态代理。原创 2014-08-06 16:43:50 · 282 阅读 · 0 评论 -
java常用类库续2(大数操作BigInteger、BigDecimal类、对象克隆技术、Arrays类)
大数操作(BigInteger、BigDecimal)大数操作:正常情况下一个整数最多只能放在long类型之中,但是现在如果有以下一个数字:11111111111111111111111111111111111111111根本是无法保存的,所以为了解决这种问题,在java中引入了两个大数的操作类:·操作整型:BigInteger·操作小数:BigDecimalB转载 2014-08-20 21:00:21 · 477 阅读 · 0 评论 -
程序员数学四部曲
细说第一部:《程序员的数学》目前销量领跑同类数学书,2012年11月上市,并在2012年当年销量过万。2013年这本书依然排在图灵销售榜前列! 之所以能够取得这样的成绩,是因为这本书可以看成是为初级程序员写的入门书,作者将数学以通俗易懂的方式娓娓道来,不是记忆,而是本质的理解与探索。比如书中对七桥问题,河内塔等著名难题进行了简洁说明,有助于打开初级程序员转载 2014-07-14 18:06:45 · 431 阅读 · 0 评论 -
为什么要用父类引用子类的实例
B 类继承A类,那么A a = new B(); 比 B b = new B(); 的好处在哪里? B b = new B(); b可以调用1)A类的没有被子类覆盖的方法2)A类被子类覆盖的方法3)B类特有的方法 而A a = new B();只可以调用 1和2,那么不直接用 B b = new B()呢?原创 2014-07-12 11:01:50 · 1067 阅读 · 0 评论 -
Java XML API 漫谈
在IBM的developerWorks上有几篇非常优秀的关于Java XML API的评测文章,它们是: http://www-900.ibm.com/developerWorks/cn/xml/x-injava/index.shtml http://www-900.ibm.com/developerWorks/cn/xml/x-injava2/index.shtml ht转载 2014-07-14 12:00:00 · 484 阅读 · 0 评论 -
Java程序员们最常犯的10个错误
本文由 ImportNew - 林林 翻译自 programcreek。欢迎加入Java小组。转载请参见文章末尾的要求。1.将数组转化为列表将数组转化为一个列表时,程序员们经常这样做:1List list = Arrays.asList(arr);Arrays.asList()会返回一个Ar转载 2014-07-31 10:20:26 · 529 阅读 · 0 评论 -
Java的单例模式与延时加载
单例模式使用简单,常见的使用ch原创 2014-07-13 23:23:06 · 386 阅读 · 0 评论 -
10个调试和排错的小建议
在空白的文本编辑器里打开一个崭新的文本,没有一行代码,出现在眼前的是一个充满了无限可能和希望的项目。可是,当数千行的代码写完之后,整个项目因为bug的出现而被压垮了,更别说添加什么新功能了...这也许是对程序员的最大打击,在饱满的热情上浇了一盆冷水。其实,最好的软件程序员当然知道怎样去发现并修复这些bug,在刚开始编程的时候就通过软件工程的最好方法来降低bug的出现概率。 几乎没有转载 2014-07-14 18:02:20 · 275 阅读 · 0 评论 -
Beanutils基本用法
Beanutils用了魔术般的反射技术,实现了很多夸张有用的功能,都是C/C++时代不敢想的。无论谁的项目,始终一天都会用得上它。我算是后知后觉了,第一回看到它的时候居然错过。1.属性的动态getter,setter在这框架满天飞的年代,不能事事都保证执行getter,setter函数了,有时候属性是要需要根据名字动态取得的,就像这样: BeanUtils.getProper转载 2014-08-05 13:19:50 · 288 阅读 · 0 评论 -
让人纠结的finally
最近分析某一apk,被其中的各种try-catch-finally块虐得死去活来,有木有。。。由于喜欢刨根,各种谷歌都没有给出解释。 一番研究之后,发现确实有些蹊跷。(本人水平有限,不喜勿喷,谢谢)切入正题:try{}catch反编译后,格式: eg: .catch Ljava/io/FileNotFoundException; {:try_start_0 ..转载 2014-07-13 00:24:13 · 459 阅读 · 0 评论 -
Java新IO介绍
BufferedReader它的一个特征:当BufferedReader读取输入流中的数据时,如果没有读到有效数据时,程序将在此处阻塞该线程的执行(使用InputStream的read方法从流中读取数据时,如果数据源中没有数据,它也会阻塞该线程),也就是前面介绍的输入、输出流都是阻塞式的输入、输出。不仅如此,传统的输入、输出流都是通过字节的移动来处理的(即使我们可以不直接去处理字节流,但底层的实现原创 2014-08-20 20:23:57 · 345 阅读 · 0 评论 -
serialVersionUID的作用
简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。(InvalidCastException)serialVersion转载 2014-08-20 20:47:27 · 271 阅读 · 0 评论 -
java输入输出流学习
Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象。在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流....本文的目的是为大家做一个简要的介绍。 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这转载 2014-08-09 01:54:38 · 302 阅读 · 0 评论 -
请别再拿“String s = new String("xyz");创建了多少个String实例”来面试了吧
这帖是用来回复高级语言虚拟机圈子里的一个问题,一道Java笔试题的。 本来因为见得太多已经吐槽无力,但这次实在忍不住了就又爆发了一把。写得太长干脆单独开了一帖。 顺带广告:对JVM感兴趣的同学们同志们请多多支持高级语言虚拟机圈子 以下是回复内容。文中的“楼主”是针对原问题帖而言。 ============================================转载 2014-08-17 22:45:21 · 399 阅读 · 0 评论 -
Java 8 简明教程
Java 8已于2014年3月18日正式发布了,新版本带来了诸多改进,包括Lambda表达式、Streams、日期时间API等等。本文就带你领略Java 8的全新特性。转载 2014-08-14 22:59:09 · 237 阅读 · 0 评论 -
Lock与synchronized 的区别
多次思考过这个问题,都没有形成理论,今天有时间了,我把他总结出来,希望对大家有所帮助 1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定, 如果使用 synchronized ,如果A不转载 2014-08-14 23:06:02 · 248 阅读 · 0 评论 -
Hashtable与HashMap引发的血案
本票文章很生动的给Hashtable和HashMap举例,并给出代码,方便大家理解。人物:王小胖:性别:男。程序员,工作经验1 year。爱好:吃肉、电玩、马小花。特技:吃肉不用考虑胃的容量。马小花:性别:女。学生,工作经验0 year。爱好:蛋糕、臭美、王小胖。特技:能够降服王小胖……/**2011年2月,电影《将爱情进行到底》火得不得了。周末,小胖也陪着小花去看这部转载 2014-08-13 11:38:22 · 320 阅读 · 0 评论 -
随机数是骗人的,.Net、Java、C为我作证
几乎所有编程语言中都提供了"生成一个随机数"的方法,也就是调用这个方法会生成一个数,我们事先也不知道它生成什么数。比如在.Net中编写下面的代码:Random rand = newRandom(); Console.WriteLine(rand.Next());运行后结果如下: Next()方法用来返回一个随机数。同样的代码你执行和我的结果很可能不一样,而且我多转载 2014-08-12 13:05:52 · 335 阅读 · 0 评论 -
理解class.forName()
使用jdbc方式连接数据库时会使用一句代码Class.forName(String className).这句话是什么意思呢?首先说一点Class.forName(String className)这个方法的作用是装载className这个字符串指定的类。官方文档返回与带有给定字符串名的类或接口相关联的 Class 对象。调用此方法等效于:转载 2014-08-23 00:25:11 · 600 阅读 · 0 评论 -
java IO(File类、字节流与字符流、字节字符转换流)
File类在整个io包中,唯一表示与文件本身有关的类就是File类。使用File类可以进行创建或删除文件等常用操作,要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下[java] view plaincopyprint?public File(String pathname)实例化File类的时候,必须设置好路径转载 2014-08-20 20:59:19 · 424 阅读 · 0 评论 -
java常用类库续3(比较器Comparable、Comparator、观察者设计模式、正则表达式、定时调度)
比较器(Comparable、Comparator)Comparable接口可以直接使用java.util.Arrays类进行数组的排序操作,但对象所在的类必须实现Comparable接口,用于指定排序接口。Comparable接口定义如下:[java] view plaincopyprint?public interface C转载 2014-08-20 20:57:25 · 329 阅读 · 0 评论 -
Java 内存分配全面浅析
本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。进入正题前首先要知道的是Java程序运行在JVM(Java Virtual Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在转载 2014-08-20 20:53:46 · 364 阅读 · 0 评论 -
抽象类和接口的区别,使用场景
抽象类和接口的区别,使用场景 1 接口是核心,其定义了要做的事情,包含了许多的方法,但没有定义这些方法应该如何做。 2 如果许多类实现了某个接口,那么每个都要用代码实现那些方法 3 如果某一些类的实现有共通之处,则可以抽象出来一个抽象类,让抽象类实现接口的公用的代码,而那些个性化的方法则由各个子类去实现。 所以,抽象类是为了简化接口的实现,他不仅提供了公共方法的实现,让转载 2014-08-20 20:37:53 · 369 阅读 · 0 评论 -
Java读取资源文件时内容过长与换行的处理
Java读取Properties文件时碰到两问题1. 资源文件中的key对应的value过长时,书写不方便,需要换行,若直接回车则回车后的内容被忽略2.资源文件中的key对应的value需要换行显示时,若直接回车,则同样丢掉回车后的部分针对上述问题找到如下解决办法:1. 内容过长需要换行时拼接个/斜杠,这样/后的内容后正常显示2.若内容本身需要换行时则用/n转载 2014-08-20 20:30:13 · 427 阅读 · 0 评论 -
OOP编程之is-a、has-a和is-like-a之间的关系
OOP编程思想中,继承是一个十分重要的内容。下面介绍几个 常见的容易混淆的术语。首先举例子:我们常见的动物,羊有很多种类,只是一种泛指,绵羊是其中一种,那么羊和绵羊的关系,就是is-a,即它们是继承的关系。再如,羊身上都有羊毛,而不同种类的羊,羊毛生物形态也不同,比如绵羊和羚羊,前者羊毛丰富、蓬松、柔软,呈白色;后者羊毛稀少、刚硬,呈灰褐色。对于绵羊来说,羊毛和羊的关系就是原创 2014-07-12 10:25:19 · 412 阅读 · 0 评论 -
Java内存管理基础篇- Java内存分配
1.简介 现摘录一段Java5内存管理白皮书中的一段话: One strength of the Java™ 2 Platform, Standard Edition (J2SE™) is that it performs automatic memorymanagement, thereby shielding the developer from the c转载 2014-07-30 14:06:17 · 282 阅读 · 0 评论 -
Java枚举的常见种用法
JAVA JDK1.5引入了枚举。在Java中它虽然算个“小”功能,却给我的开发带来了“大”方便。原创 2014-07-12 15:53:45 · 304 阅读 · 0 评论 -
JDK里的设计模式
下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patternsStructural(结构模式)Adapter:把一个接口或是类变成另外一种。java.util.Arrays#asList转载 2014-07-06 12:21:57 · 263 阅读 · 0 评论 -
String内存陷阱简介
String 方法用于文本分析及大量字符串处理时会对内存性能造成一些影响。可能导致内存占用太大甚至OOM。一、先介绍一下String对象的内存占用一般而言,Java 对象在虚拟机的结构如下:•对象头(object header):8 个字节(保存对象的 class 信息、ID、在虚拟机中的状态)•Java 原始类型数据:如 int, float, char 等类型的数据转载 2014-07-05 14:54:33 · 388 阅读 · 0 评论 -
Java中方法和变量在继承时的覆盖问题
想必你已经阅读了一两本这样的Java书籍,它们在开头都指出了面向对象编程的3个主要概念:封装、继承和多态。理解这3个概念对于领会Java 语言来说至关重要,而搞懂方法的覆盖又是理解继承概念的关键部分。这个例子摘自 Java 语言规范转载 2014-07-03 20:32:27 · 622 阅读 · 0 评论 -
面向对象编程语言为什么要有类?
打个比方,我们要建造一间房子,有很多的建筑方法。比如你可以用沙硕建造,或者把沙硕烧制成砖块建造;甚至直接从工厂购买定制房屋建造。这三种方法代表了不同的组合尺度,沙硕的单位最小,在沙硕基础上烧制的砖块要大一些,而定制的房屋则是最高的尺寸,使用它可以最快速的搭建我们的房子。 上面的比方与我们编程的概念有很大的相同之处。面向过程编程语言的基本单元是结构体和方法,它们实现了基本的代码复用。在我们需原创 2014-07-02 23:44:11 · 1076 阅读 · 0 评论 -
类和对象的概念
最近被问到类和对象,要求用白话文原创 2014-06-30 20:04:48 · 300 阅读 · 0 评论 -
java中的常量池技术
先用一个问题引入常量池技术。[java] view plaincopypublic class Test2 { public static void main(String[] args) { String s1="Hello Java"; String转载 2014-07-23 14:14:45 · 310 阅读 · 0 评论 -
基本数据类型在常量池中的体现
基本数据类型的使用量是很大的,java常量池,在节省内存方面是一个很好的机制,相同的数据,在常量池中只要保留一份即可。 Java的8种基本类型(Byte, Short, Integer, Long, Character, Boolean, Float, Double), 除Float和Double以外, 其它六种都实现了常量池, 但是它们只在大于等于-128并且小于等于127转载 2014-07-23 14:13:54 · 448 阅读 · 0 评论 -
简单代理模式
package org.practice.designpattern.proxy;public class StaticProxy { public static void main(String[] args) { SafeMode user = new User("张三"); SafeMode company = new Company(user); company.che原创 2014-07-05 15:24:20 · 446 阅读 · 0 评论 -
Java 内存分配全面浅析
转自:http://blog.csdn.net/shimiso/article/details/8595564本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。进入正题前首先要知道的是Java程序运行在JVM(Java Virtual Machine,Java虚拟机转载 2014-07-23 14:37:13 · 287 阅读 · 0 评论 -
模仿Hibernate的逆向工程
项目结构:运行效果:1 #jdbc.cfg.properties配置文件信息2 #database name3 DB_NAME = mytestPOJO效果:#jdbc.cfg.properties配置文件信息#database nameDB_NAME = hongten运行效果://说明:我们转载 2014-07-19 11:35:52 · 294 阅读 · 0 评论