
java基础
呼啸
09年开始编程,一直到现在。看看自己进步了什么。
展开
-
Java正则表达式(六)
先看一段代码:import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestRegular { public static void main(String[] args) { Pattern p = Pattern.compile(".{3}a"); String s ="3原创 2013-11-11 22:16:59 · 814 阅读 · 0 评论 -
java對於數組的反射
對於同類型和同緯度的數組的字節碼是相同的,如:int [] a1 = new int []{1,2,3};int [] a2 = new int [4];System.out.println(a1.getClass()==a2.getClass());輸出:true如何快速地遍歷一個數組呢?使用數組的一個工具類:ArraysString [] a4 = n原创 2013-11-24 13:51:13 · 987 阅读 · 0 评论 -
Java正则表达式(五)
要求找出字符串中所有匹配“love”的字符串,不区分大小写,第奇数个换成大写,偶数个换成小写。看代码:import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestRegular { public static void main(String[] args) { Pattern原创 2013-11-09 16:10:52 · 884 阅读 · 0 评论 -
Java正则表达式(四)
\d 匹配数字0-9\D 匹配非0-9数字\s 空白字符\S 非空白字符\w 字符[a-zA-Z_0-9]\W 以上取反注意:如何匹配一个反斜杠?p("\\".matches("\\\\"));仔细体会下为什么。^开头原创 2013-11-07 22:21:08 · 778 阅读 · 0 评论 -
java正则表达式(三)
x? 代表x出现零次或1次x*代表x0次或多次x+代表x1次或多次X{n} x出现多少次x{n,}最少出现x N次范围是用中括号表示的,下面先代码:public class TestRegular { public static void main(String[] args) { p("a".matches("[abc]"));//匹配其中一个 p("a".原创 2013-11-06 21:04:22 · 860 阅读 · 0 评论 -
Java 正则表达式(二)
java.util.regex.Pattern; 这是java的正则表达式的样式类,里面有个很重要的方法:Pattern.compile(String);这个方法的作用是将给定的正则表达式编译到模式中。比如:Pattern p = Pattern.compile("[a-z]{3}");有人可能会问,干嘛要先编译到模式中去呀?因为先编译好后,在匹配时可以直接匹配,不原创 2013-11-05 21:51:37 · 846 阅读 · 0 评论 -
Java 正则表达式(一)
1.用途:字符匹配字符串查找字符串替换2、相关类:java.lang.Stringjava.util.regex.Patternjava.util.regex.Matcher例子:public class Test { public static void main(String[] args) { System.out.println("abc".m原创 2013-11-04 21:36:44 · 767 阅读 · 0 评论 -
java面试200题
1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能转载 2013-11-04 15:25:20 · 1195 阅读 · 0 评论 -
带构造方法的枚举
package com.howlaa.day03;public class EnumTest { public static void main(String[] args) { WeekDay weekday =WeekDay.FRI; System.out.println(weekday); System.out.println(weekday.name()); Syst原创 2013-11-17 20:17:44 · 2965 阅读 · 0 评论 -
枚举的简单应用
先看代码:package com.howlaa.day03;public class EnumTest { public static void main(String[] args) { WeekDay weekday =WeekDay.FRI; System.out.println(weekday); System.out.println(weekday.name());原创 2013-11-17 13:21:01 · 1167 阅读 · 0 评论 -
JDK1.5的可变参数
一个方法接收的参数个数不固定。可变参数的特点:1、只能出现在参数列表的最后2、... 位于变量类型和变量名之间。前后有空格都可以。3、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。例如:package com.howlaa.day02;public class VariableParameter { public sta原创 2013-11-15 21:21:54 · 1757 阅读 · 0 评论 -
java删除物理文件
最近在一个图片空间管理。在删除数据库的图片信息时,得删除服务器上的图片。不然很容易导致图片挤爆服务器。java删除物理文件一般是使用java.io.File来操作的。File file = new File(“图片物理路径”);if(file.exists()){ file.delete();}原创 2013-10-23 10:31:30 · 2673 阅读 · 0 评论 -
java IO
节点流:节点流为可以从一个特定的数据源(节点)读写数据,如文件,内存。处理流:处理流是连接在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。jdk所提供的所有流类型位于包java.io内部分别继承自以下四种抽象流类型: 字节流字符流输入流 InputStreamReader 输出流Out原创 2013-10-14 21:58:33 · 659 阅读 · 0 评论 -
java中集合杂记
HashSet类按照哈希算法来存取集合中的对象,具有很有的性能。当HashSet向集合中加入一个对象时,会调用对象的hashCode()方法获得哈希码,然后根据这个哈希码进一步计算出对象在集合中的存放位置。为了保证HashSet能正常工作,要求当两个对象用equals()方法比较的结果为true时,他们的哈希码也要相等。TreeSet类实现了SortedSet接口,能够对集合中的对象进行排原创 2013-10-07 11:56:29 · 990 阅读 · 0 评论 -
用classLoader管理资源和配置文件
InputStream ips = ReflectTest2.class.getClassLoader().getResourceAsStream("com/howlaa/day04/config.properties");这个就是使用ClassLoader来加载配置文件。注意要填入包名。否则找不到文件。但是太麻烦了。来看这样:InputStream ips = ReflectTest原创 2013-11-30 23:44:33 · 1121 阅读 · 0 评论 -
注解的定义和反射调用
注解是一个特殊的类,关键字不是class。而是@interface.package com.howlaa.day04;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.RUNTIME)public @interfac原创 2013-12-08 00:05:11 · 1416 阅读 · 0 评论 -
为注解增加属性
package com.howlaa.day04;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.RUNTIME)public @interface WfAnnotation { String color() de原创 2013-12-08 23:50:23 · 714 阅读 · 0 评论 -
java实现百分比
long current = 30; long all = 70; NumberFormat nt = NumberFormat.getPercentInstance(); //设置百分数精确度2即保留两位小数 nt.setMinimumFractionDigits(0); float baifen = (float)current/all; System.out.prin原创 2015-03-06 14:42:01 · 10752 阅读 · 0 评论 -
Effective java读书札记第一条之 考虑用静态工厂方法代替构造器
对于类而言,为了让客户端获取它资深的一个实例,最常用的方法就是提供一个共有的构造器。还有一种放你发,也应该子每个程序员的工具箱中占有一席之地。类可以提供一个共有的静态 工厂方法,它只是返回类的实例的静态方法。类可以通过静态工厂方法类提供它的客户端(对象),而不是通过构造器。提这样做的好处有:1.静态工厂方法与构造器不同的第一大优势在于,它们有名称.比如构造器BigInteger(int,i原创 2014-08-20 23:26:04 · 1277 阅读 · 0 评论 -
effective java读书札记值第2条:遇到多个构造器参数时要考虑用构造器
对于一个参数有多个的构造器的类,程序员一向习惯采用重叠的构造器模式(我经常cai)。原创 2014-08-24 22:48:53 · 1186 阅读 · 0 评论 -
java中的按值传递和按引用传递
先使用int实验:public class TTEST { private static List mList = new LinkedList(); public static void main(String[] args) { int a = 0; changeA(a); System.out.println("a = "+a); } public stat原创 2014-07-15 16:49:37 · 2153 阅读 · 2 评论 -
ArrayList实现反转
借助Collections工具类:import java.util.ArrayList;import java.util.Collections;public class TTEST { public static void main(String[] args) { ArrayList arr = new ArrayList(); for(int i=0;i<10;++i)原创 2014-06-26 10:19:39 · 43609 阅读 · 4 评论 -
有关ArrayList增加Map引发的一个BUG
今天碰到一个很奇怪的问题。用一个ArrayList来增加map.具体是这样的:for(int i=0;i<arr.length();++i){ temp = (JSONObject) arr.get(i); mapTemp.clear(); mapTemp.put("materialName", temp.getString("mate原创 2014-02-28 15:05:54 · 2573 阅读 · 0 评论 -
Java多线程研究(八)使用Exchange在多个线程间交换数据
比如生活中两个人,一个人有零食,另一个人有钱,他们两个想等价交换,对好口号在某个地方相见,一个人先到了之后,必须等另一个人带着需要的东西来了之后,才能开始hi交换。代码:import java.util.concurrent.Exchanger;import java.util.concurrent.ExecutorService;import java.util.concurrent原创 2014-02-24 23:05:35 · 5025 阅读 · 0 评论 -
java 类加载器
java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类加载器负责加载特定位置的类。1、Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader,AppClassCloader.2、类加载器也是Java类。第一个类加载器不是java类。3、类加载器之间的父子关系和管辖范围图Bott原创 2013-12-22 00:02:13 · 996 阅读 · 0 评论 -
java多线程研究(六)保持各线程间的变量独立
为什么要保持各个线程间的变量独立,比如connection.小王给小李转账,使用线程A,小张给小马转账使用线程B,小张跟小马的转账一切搞定后,就在刚给小李的账户加钱,还没给小王的账户减钱的时候,线程B执行connection提交,假如A和B使用的是同一个线程,那么小王的钱将没有减少,出错。保持独立原理就是用个MAP给保存起来,然后根据不同的key去取。代码:import java.ut原创 2014-01-05 17:33:26 · 2628 阅读 · 0 评论 -
分析动态代理类的设计原理与结构
一、怎样将目标类传进去?1、直接在InvocationHandler实现类中创建目标类的实例对象。(没有实际意义)2、为InvocationHandler实现类注入目标类的实例对象,这样不能采用匿名内部类的形式了。3、让匿名的InvocationHandler实现类访问外面方法中的目标类实例对象的final类型的引用变量。原创 2013-12-29 18:00:09 · 829 阅读 · 0 评论 -
java使用泛型进行数组交换
private static void swap(T[] a,int i,int j){ T tmp = a[i]; a[i] = a[j]; a[j] = a[i]; }这个的尖括号的作用就是声明T是泛型。swap(new String[]{"abc","xyz","itcase"},1,2);为什么不用swap(new int[]{"1,2,3,4"}原创 2013-12-15 00:01:05 · 3011 阅读 · 0 评论 -
java如何遍历hashMap
通过Map的entrySet方法。将返回一个set集合。然后遍历这个set集合:package com.howlaa.day04;import java.util.HashMap;import java.util.Map;import java.util.Set;public class GenericTest { public static void main(String[]原创 2013-12-12 23:20:25 · 1107 阅读 · 0 评论 -
有关javaBean的简单内省操作
主要还是通过JDK提供的PropertyDescriptor来进行操作。直接看代码吧:package com.howlaa.day04;import java.beans.PropertyDescriptor;import java.lang.reflect.Method;public class IntroSpectorTest { public static void main(原创 2013-12-03 21:18:14 · 1197 阅读 · 0 评论 -
数据结构之顺序表上的基本运算
//表的初始化 void InitList(SeqList *L){ L.length=0;//表的初始化即将表的长度置于0 } //求表长 int getListLength(SeqList *L){ return L.length; } //取表中第i个节点 DataType GetNode(L,i){ if(iL.length)//此处自考网上写的是i>L.原创 2013-12-09 23:04:49 · 1611 阅读 · 0 评论 -
非递归解决斐波纳挈数列问题
是用迭代解决:看代码吧package com.howlaa.Exception;public class Fab { public static void main(String[] args) { System.out.println(f(40)); } public static long f(int index){ if(index < 1){ Sys原创 2013-10-04 21:53:28 · 2201 阅读 · 0 评论 -
java面试题2013/5/14
设计一个一百亿的计算器:完整实现非常复杂,可参考JDK中的java.math.BigInteger.大致思路如下:(1)这个类内部有两个成员变量,一个表示符号,另一个用字节数组表示数值的二进制数。(2)有一个构造方法,把一个包含有多位数值的字符串转换到内部的符号和字节数组中。(3)提供加减乘除功能。大致代码如下:public class BigInteger{ int原创 2013-05-14 23:36:32 · 940 阅读 · 0 评论 -
JAVA String.split方法
splitpublic String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串。该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,结果数组中不包括结尾空字符串。 例如:@Test public void test() throws SQLException{ String testStr="A原创 2013-02-19 14:52:32 · 941 阅读 · 0 评论 -
java面试题2 String与StringBuffer的区别
String与StringBuffer的区别?在JAVA中有三个类来负责字符的操作:1、Character是进行单个字符的操作2、String是对一串字符进行操作,是不可变类。3、StringBuffer是对一串字符进行操作,是可变类。String是对象不是原始类型为不可变对象,一旦创建就不能修改它的值对于已经存在的String的对象的修改都是重新创建一个新的对象,原创 2013-01-20 22:12:18 · 3245 阅读 · 0 评论 -
带抽象方法的枚举
enum Grade{//class A("100-90"){ public String localeValue(){ return "优"; } }, B("89-80"){ public String localeValue(){ return "良"; } }, C("79-70"){ public String localeValue(){原创 2013-02-05 10:52:39 · 2003 阅读 · 0 评论 -
java每日面试题13/02/03
1、一个".java"源文件是否可以包含多个类(不是内部类)?有什么限制?答:可以包含多个类。但是只能有一个public类,且public类的名字必须和.java源文件的名字一样。2、java有没有goto?答:java中的保留字,现在没有在java中使用。原创 2013-02-03 10:47:03 · 769 阅读 · 0 评论 -
java中的枚举
枚举的作用: 一些程序在运行时,它需要的数据不能使任意的,而必须是一定范围内的值,JDK5以前采用自定义类来解决,JDK5以后可以直接采用枚举来解决。JDK5 以前使用自定义类的代码:package com.feng.myemu;public class Demo1 { public void test(){ print(Grade.B); } publi原创 2013-01-30 14:54:49 · 813 阅读 · 0 评论 -
java面试题1
1面向对象的特征有哪些方面 :1、抽象抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分的注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用了解部分细节。抽象包括两个方面,一个是过程抽象,一个是数据抽象。2、继承继承是一种联结类的层次模型,允许和鼓励类的重用。它提供了一种明确表示共性的方法。对象的一个新类可以从现有的原创 2013-01-15 15:09:47 · 538 阅读 · 0 评论 -
java的变量赋值与传递
1 数据类型java的数据类型有两类:l PrimitiveType(简单类型)l ReferenceType(引用类型) 1.1 PrimitiveType(简单类型)(参考:langspec-3.0/typesValues.html#4.2) PrimitiveType的分类如下所示: l Primi转载 2013-01-14 13:40:43 · 498 阅读 · 0 评论