零碎笔记(二)
来源:互联网 发布:java interrupt sleep 编辑:程序博客网 时间:2024/05/29 06:33
列举一些常用的算法,希望能有一定的参考价值.
1.判断一个正整数是否事2的幂
注意:x必须为正整数,0也不可以.
2.判断一个正整数是否是2^n-1的形式
当j=k+1时,就变成了公式1了.
当k=0时,就变成公式2了.
4.求一个整数的绝对值.
当n为正:x>>31为0,结果为x.
当n为负:x>>31为全1,也就是-1,x-(x<<1)等于-n
不过注意的是:当Integer.MIN_VALUE<n<-230该公式不行,因为这个时候x<<1溢出了.
当x为Integer.MIN_VALUE时,返回Integer.MIN_VALUE,这个是对的.
最佳的互换操作:
A = A ^ B;
B = A ^ B;
A = A ^ B;
Java 判断字符串是否为空的三种方法
1:if(s == null || s.equals(""));
直观, 方便, 但效率很低.
2:if(s == null || s.length() <= 0);
比较字符串长度, 效率高.
3:if(s == null || s.isEmpty());
Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等.
注意:if(strNewsFileName==null||strNewsFileName=="")改为if(null==strNewsFileName||"".equal(strNewsFileName)) 防止空指针或者直接用StringUtils的静态方法。< import org.apache.commons.lang.StringUtils; >
一些常用的正则表达式示例:
1、匹配所有的正数:^[0-9]+$
2、匹配所有的小数:^\-?[0-9]*\.?[0-9]*$
3、匹配所有的整数:^\-?[0-9]+$
4、提取信息中的中文字符串: [\u4e00-\u9fa5]* ;
5、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
6、提取信息中的中国手机号码:(86)*0*13\d{9}
7、提取信息中的中国固定电话号码:(\d3,4|\d{3,4}-|\s)?\d{8}
8、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
9、提取信息中的中国身份证号码:\d{18}|\d{15}
10、提取信息中的任何数字:(-?\d*)(\.\d+)?
11、匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*)\/>/
每个Classloader运行过程,加载流程:
1.判断一个正整数是否事2的幂
boolean is2Power(int x){ return (x &(x-1))==0;}x&(x-1)就是把x的最右边的一个1位变为0位,如果x为2的幂,那么就只有一个位为1,返回的结果就是0了.
注意:x必须为正整数,0也不可以.
2.判断一个正整数是否是2^n-1的形式
boolean is2PowerOne(int x){ return x &(x+1);}
3.判断一个正整数是否事2^j-2^k的形式,j>k>=0.
boolean is2PowerJK(int x){ return (((x|(x-1))+1)&x)==0;}首先要明白要满足2j-2k的形式,x中为1的位必须连续,也就是这个样子的 00...01..10...0,明白了这一点就好办了,x-1就是改变最右边的1位以及后面的,也就是10...0变成01...1,高位不变.x|(x-1)使得x的尾0都变成了1,最后的形式是:000...011..1这个已经是2n-1的形式了,只要套用 x&(x+1)公式就可以了.
当j=k+1时,就变成了公式1了.
当k=0时,就变成公式2了.
4.求一个整数的绝对值.
int abs(int x){ return x-((x<<1)&(x>>31));}当n为0时:x<<1=0,x>>31=0,结果为0.
当n为正:x>>31为0,结果为x.
当n为负:x>>31为全1,也就是-1,x-(x<<1)等于-n
不过注意的是:当Integer.MIN_VALUE<n<-230该公式不行,因为这个时候x<<1溢出了.
当x为Integer.MIN_VALUE时,返回Integer.MIN_VALUE,这个是对的.
最佳的互换操作:
A = A ^ B;
B = A ^ B;
A = A ^ B;
Java 判断字符串是否为空的三种方法
1:if(s == null || s.equals(""));
直观, 方便, 但效率很低.
2:if(s == null || s.length() <= 0);
比较字符串长度, 效率高.
3:if(s == null || s.isEmpty());
Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等.
注意:if(strNewsFileName==null||strNewsFileName=="")改为if(null==strNewsFileName||"".equal(strNewsFileName)) 防止空指针或者直接用StringUtils的静态方法。< import org.apache.commons.lang.StringUtils; >
一些常用的正则表达式示例:
1、匹配所有的正数:^[0-9]+$
2、匹配所有的小数:^\-?[0-9]*\.?[0-9]*$
3、匹配所有的整数:^\-?[0-9]+$
4、提取信息中的中文字符串: [\u4e00-\u9fa5]* ;
5、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
6、提取信息中的中国手机号码:(86)*0*13\d{9}
7、提取信息中的中国固定电话号码:(\d3,4|\d{3,4}-|\s)?\d{8}
8、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
9、提取信息中的中国身份证号码:\d{18}|\d{15}
10、提取信息中的任何数字:(-?\d*)(\.\d+)?
11、匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*)\/>/
每个Classloader运行过程,加载流程:
//检查类是否已被装载过(从cache中)Class c = findLoadedClass(name);if(c == null) { //指定类未被装载过 try{ if (parent != null){//如果父类加载器不为空,则委派给父类加载 c = parent.loadClass(name, false); }else{//如果父类加载器为空,则委派给启动类加载器加载 c = findBootstrapClass0(name); } }catch (ClassNotFoundException e){ //启动类加载器或父类加载器抛出异常后, //当前类加载器将其捕获,并通过findClass方法,由自身加载 c = findClass(name); }}
0 0
- 零碎笔记(二)
- Hibernate3 零碎笔记(二)
- 零碎python学习笔记(二) - 20121205
- 零碎的学习笔记二
- C++学习笔记之零碎知识点(二)
- 零碎笔记(一)
- 零碎笔记(三)
- 零碎笔记(四)
- 零碎笔记(五)
- 零碎笔记(六)
- 零碎笔记(七)
- Java零碎知识点(二)
- javascript零碎笔记(基础)
- javascript零碎笔记(高级)
- python学习笔记(零碎)
- 工作笔记(零碎知识点)
- 零碎笔记
- 零碎笔记
- 离散系统的响应
- 自定义可适应ScrollView的ListView
- C语言内存空间分布详解
- codingbat:recursion-1:3
- USACO--Milking Cows
- 零碎笔记(二)
- bash: /opt/Tools/linux-devkit/bin/arm-arago-linux-gnueabi-gcc: No such file or directory
- Python中请使用isinstance()判断变量类型
- 2个无线路由器怎么连接
- Python中配置matplotlib模块
- C语言:strcpy()
- codingbat:recursion-2:1(JAVA)
- 动态内存分配
- NSURLConnection — GET请求的第二种方式