来自: http://java.chinaitlab.com
开篇,还是得说说 ^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明:
"^The": 开头一定要有"The"字符串;
"of despair$": 结尾一定要有"of despair" 的字符串;
那么,
"^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配。
"notice": 匹配包含notice的字符串。
你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你没有把他锁 ...
JS验证页面的值有没有修改过...
function initPage()
{
for(i=0;i<document.all.tags("select").length;i++)
{
var select = document.all.tags("select").item(i);
if(select.defaultValue == undefined)
select.defaultValue = select.options[select.selectedIndex].value;
}
}
func ...
java中进行二进制,八进制,十六进制,十进制间进行相互转换
十进制转成十六进制:
Integer.toHexString(int i)
十进制转成八进制
Integer.toOctalString(int i)
十进制转成二进制
Integer.toBinaryString(int i)
十六进制转成十进制
Integer.valueOf("FFFF",16).toString()
八进制转成十进制
Integer.valueOf("876",8).toString()
二进制转十进制
Integer.valueOf("0101",2).toString()
java.lang.Inte ...
JDK: http://java.sun.com/products/archive/
Eclipse: http://archive.eclipse.org/eclipse/downloads/index.php
java取消换行,CSS强制换行...竟然忘记了....汗!
java 取消换行代码
public class Formatter {
public static void main(String...args) {
try
...
处理未捕获的异常...见 Thread.UncaughtExceptionHandler.
Thread-Safe的Collection,见java.util.conurrent包下
1.ConcurrentHashMap,不同步化所有的读取方法.处理掉很多锁定与threading的问题,将内部的hashtable区段间隔开来,可以在不同的线程写入不同的区段,同时对不同区段操作,使用与HashMap相同
2.CopyOnWriteArrayList,解决不常被更新但是常读取的array的方法,解除了同步化,能够允许任意数目的并发读取,对于写入实际是创建一个新的array拷贝,然后在分配给原 ...
关于Formatter,参照API...Formatter类
通过创建Formatter的示例进行...
//Formatter f = new Formatter("FileName");
StringBuilder s = new StringBuilder();
Formatter f = new Formatter(s);
f.format("hello: %s", s);
撰写格式化的输出...见farmat方法....
一些便利的format方法:
引用
String.format(format, args);
System.out.printf(format, ar ...
静态的import,没什么好说的...不过建议在使用超出三次时才使用
//可以是静态类、枚举、方法、成员
import static java.lang.System.out;
import static java.util.Arrays.sort;
import static java.lang.Math.*;//多个成员,不建议使用,除非是Enum...
importing多个member
如果是相同的名字的类,成员,那是不行的...编译出错.
但是如果是method,例如重载...那么编译器会根据参数判断调用那一个方法...很cool(如果参数一样-->NG)
一.抛弃Iterator
for/in语句排除了使用Iterator类的使用。
List<String> list = new ArrayList<String>();
list =getList();
for(String string: list){
System.out.println("======: "+ string );
}
for(Iterator i = list.iterator(); i.hasNext();){
String string = (String)i.next();
System.out ...
主要有四种的标准的meta-annotation,都在java.lang.annotation的package中...
1.@Target指定那个程序单元可以有其所定义的annotation
(程序单元:class.interface,enum,field,method,parameter,constructor,variable package,annotation。参看ElementType类)
需要import(java.lang.annotation.ElementType;java.lang.annotation.Target;)两个类
引用
//只能用于TYPE和METHOD的 ...
创建自己的Annotation通过@interface关键字来实现,如
引用
//没有member的Annotation
public @interface MyAnnotation {}
//有member的Annotation
public @interface MyAnnotation {
String value();//创建一个隐含没有且主体的abstract方法,编译器同时创建一个同名的member变量。
}
//有多个memberAnnotation
public @interface MyAnnotation {
public enum Type {CLASS, INTE ...
Annotation是通过定义好了的metadata机制来陈述类、方法、变量的各种变化的方法.
在 Tiger中有三种标准的annotation类型
Override:java.lang.Override是用来指示有一个method,它override掉它自己的superclass的method
引用
@Override
public String toString(){...}
确保你override某个方法...如果方法加上可@Override,但是没有override某个方法...那么编译器提示错误
Deprecated:java.lang.Deprecated是指出某一个m ...
可变参数,解决Method有不同个数参数的overload问题...
如何创建一个可变长度的参数,看代码:
引用
public void vararg(String varOne, String varTwo, String...strings ) {}
编译器会把它解析为"public void vararg(String varOne, String varTwo, String[] strings) {}",将"..."创建成一个<argument type>的array。
调用很简单...(零或以上多个参数)
引用
vararg("one","tow"); //可以不传参数
...
Conditional=ternary operator(三目运算符)...用"?"来表示,那么Tiger有什么不一样呢?
引用
Boolean case1 = true;
int s = case1? new Integer(1) : 1;
在Tiger之前,以上代码是不会通过的...因为在":"的两边的数值类型必须是一样的...
在Tiger,是OK的,因为是会unbox的..并且只要两个对象有交集,就可以了...如:
引用
CharSequence cs = case1? (CharSequence)"Hello" : (CharSequence)new StringBuffer("G ...
java 99% 是对象处理的,还有1%是primitive(int,short,char...等字面值)的处理,与之相对的wrapper class 是Integer,Short,Character...等,因此,总需要要在primitive和wrapper之间不断的转换...
Tiger来使用boxing和unboxing来解决这个问题...自动执行这些转换...即autoboxing和auto-unboxing..
1.primitive to wrapper
引用
//Tiger之前定义个Integer必须如下
Integer i = new Integer(100);
//Tig ...
在Enum加方法跟在class中加方法的是摸一样的..
引用
public enum AntStatus {
INSERT,
DELETE,
UPDATE;//必须加上分号";",表示enum这一节的值结束
private String enumObject; //声明变量必须放在enum值的后面,否则编译器提示错误
AntStatus(){//默认是private,可以显示什么是private(多余),不能是public和protected
enumObject = "Enum.....";
}
public static String getString() ...
之 Map -> EnumMap
使用EnumMap能够确保不会弄乱顺序来赋初始值,或不经意地造成enumerated类型重新排列顺序
用Enum来当Keyset....Map的index...看代码
引用
//定义一个enum
public enum AntStatus {
INSERT,
DELETE,
UPDATE
}
//定义一个EnumMap
EnumMap<AntStatus,String> eMap = new EnumMap<AntStatus,String>(AntStatus.class);
eMap.put(AntStatus.DELETE, " ...
Tiger之前的switch只能运用 int、short、char、bye值(不能用String很麻烦...),现在支持Enum...
引用
switch (te.getEn()) { //te.getEn() 取得一个Enum对象,进行case
case A : System.out.println("Hello A");
case B : System.out.println("Hello B");
//奇怪吧?关于 case A,case B,不能把Enum加上,如 EnumFirst.A 会出错的...所以要小心,必须case到所有的值(如果需要)
default: S ...
取出Enum的所有值,直接看代码...
引用
public enum EnumFirst {A, B, C, D, F, INCOMPLETE}
EnumFirst ef[] = EnumFirst.values();//取出来的是EnumFirst实例数组
System.out.print("EnumFirst values are: ");
for (int i = 0; i <ef.length; i++) {
System.out.print(ef[i] + " ");//自动调用toString类型,输出字符串
}
输出结果:
引用
EnumFirst value ...
Enum,Tiger新引进的类型,之前只能由class和interface来创建新类型...
主要摆脱 通过“public static final”的变量声明...<常量>
创建、使用的方式跟class类似,标识符一般用大写,如
引用
public enum EnumFirst {A, B, C, D, F, INCOMPLETE}
一些特性...
Enum是class
Enum继承过java.lang.Enum
Enum没有public构造函数
Enum值是public、static、 final的
Enum可以用 == 和equal 比较
....API
行内Inline声明 ...
写一个支持泛型的类,真的很简单,呵呵,看代码
引用
public class Generic<E> {
//private static List<E> staticList = new ArrayList<E>(); 不能这样写,编译出错,因为静态变量的实例共享的。
protected List<E> list;
public Generic(){
list = new ArrayList<E>();
}
}
这样就OK了,"E" 代表一个参数类型,可以用任何字母、单词来代替,不过一般用一个大写字母。
限制参数类型,也很简单,只要让你的类型变 ...
了解一个概念 擦除(erasure)
泛型基本上完全在编译器中实现,由编译器执行的时候类型检查和类型推断,保证类型安全,然后生成普通的非泛型的字节码(然后在生成字节码之前将其清除,使其跟不用泛型的写法生成的字节代码基本一样)。这种实现技术 -- 擦除(erasure)
泛型的转换是基于对象本身的基础类型的,而不是基于泛型的参数化,所以
引用
List<Integer> list1 = new ArrayList<Integer>();
list1.add(1);
List<Integer> list2 = list1;
是基于list1 转换的,不是基于I ...
方法的参数化...看代码
1->方法参数
引用
List list = new ArrayList();
list.add("Hello");
list.add("World");
setList(list);
public static void setList(List<String> list) {
//确保值能传入参数化相同的对象的List,或没有参数化的List
}
List list = new ArrayList(); 可以嘛?可以,但是,小心会有在运行是出现java.lang.ClassCastException 异常...应该写成List<St ...
泛型<Generic>之类型安全<Type-Safe>
1->List(collection,数组...类似)
在构造对像的时候就可以知道该对象操作的是什么样的数据<对象>类型,类型安全且省去烦人的转换类型。
通过Object<E> = new Object<E>();来实现,E占位符
引用
//Tiger之前
List list = new ArrayList();
list.add("String");
list.add(new Integer(111));
list.add(111);//提示错误,不能存放primitiv值,Tiger可以,
//操作 ...
几个相关类:Character,String,StringBuffer,StringBuilder
Character,单个字符的操作,JDK5.0新增了很多新方法,都是对应unicode4.0的
String,不可变类,不能被继承,对String值的改变都会引起新的String对象生成(例如通过"+"相加字符串)。
StringBuffer,可变类,对其改变不会引起新的对象生成(例如通过 append 相加字符串),对字符串的操作性能比String高很多。
StringBuilder,可变类,StringBuffer有的方法StringBuilder都有,唯一区别是StringBui ...
先来了解什么是Unicode和一些概念?
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
codepoint 代表特定字符的数字。例如 0x3c0 是 π codepoint
引用
int s = 0x3c0;
System.out.println((char)s);
输出:π
Tiger之前的Java版本支持Unicode 3.0,所有Unicode字符容于16位(也就是一个char),而Tiger改为支持Unicode4.0(大部分新字符是汉字),它定义 ...
先弄清Overload和Override的概念(都是Java多态性的不同表现)
Overload 重载(同一个类中有相同的方法名)
注意点:
1.重载可以通过相同方法名不同的参数样式表现(不同的参数类型,不同的参数个数和不同的参数顺序)
2.不能通过访问权限、返回类型、抛出的异常进行重载(方法的异常类型和数目不会对重载造成影响)
3.如果是继承的重载,父类中的方法的访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。
Override覆盖(子类跟父类【或接口】有相同的方法名)
注意点:
1.子类中方法名和父类的方法名必须相同,参 ...
Queue:interface,先进先出,通过LinkedList类实现
offer方法,添加元素。类似add方法,但是offer返回boolean,不能添加时不会抛出异常
poll方法,删除(首端)元素,类似remove方法,但是poll返回boolean,不能删除时不会抛出异常
引用
Queue queue = new LinkedList();
queue.offer("a");
queue.offer("b");
queue.offer("c");
queue.remove();
System.out.println("queue values are: " + queue);
...
toString方法:直接输出数组的各个元素的值
引用
String[] str1 = {"a","b","c"} ;
System.out.println("str1 values are : "+Arrays.toString(str1));
输出:str1 values are : [a, b, c]
deepToString方法:直接输出多维数组的各个元素的值
引用
String[][] str2 = {{"a","aa"},{"b","bb"},{"c","cc"}};
System.out.println("str2 values are: "+Ar ...
今天在电脑找到一份《Java设计模式》(不知道什么时候下的了)文档,看完后发现就是接口、抽象类的应用(可是要用得好不容易呀),并且好像这些模式还真是喜欢搞一些第三者,插在中间。哦,传说中的降低耦合性。嘿嘿,不过主要还是掌握其中的思想,有时间看看大部头..。下面是我看完《Java设计模式》文档后各个模式的一句话体会.
Factory
找老婆(创建对象),通通到工厂去
Prototype
不就是clone吗?
Builder
复杂点,你可以找两个老婆的地方
Singleton
一夫(Class)一妻(Object)制
Facade
男厕所,女厕所, ...
- 浏览: 16489 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
我的相册
me
共 6 张
共 6 张
最近加入圈子
最新评论
-
25 Skills Every Man Shou ...
菜头版的----好强....
-- by linxizeng -
25 Skills Every Man Shou ...
和菜头版 http://www.hecaitou.com/?p=2405
-- by 庄表伟 -
25 Skills Every Man Shou ...
呵呵,我觉得会用google比这里面的大部分技能都更有用,只除了像拯救落水船员这 ...
-- by gigix -
读 软件架构的十大错误 ...
现在,做什么都要考虑代价,如果要做的事情的代价高于没做的损失,当然就是不要做了。
-- by hyhongyong -
一句话Java设计模式
我觉得你这些解释对于理解设计模式没啥帮助,而且感觉有些理解容易误导别人。投个隐藏 ...
-- by movingboy






评论排行榜