java你所不知道的实用技巧
来源:互联网 发布:mac numbers 格式刷 编辑:程序博客网 时间:2024/04/30 00:34
java你所不知道的实用技巧
记得BigDecimal()构造方法里传的是一个String类型的对象,如果直接传数值进去,也许得不到你所要的结果哦。
5、“&”和“&&”的区别:
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
最近整理了一下过去所学的知道,觉得收获不少,都说学而时习之,不亦说乎。java之中有很多功能不经意之间会被我们遗忘,对此我也整理出来,做下总结,分享给大家,有误之处,希望大家指出批评。
1、System.out.println();
相信程序员写的最多的重复语句莫过于此,这个常用于打印输出、调试程序,可以说是无处不在。
默认的System.out是向控制台输出,但是,如果输出的信息量很大,要怎样轻易的观察到输出的结果呢?设置一下System.setOut(),该方法传入的是一个PrintStream类型的对象,即可将输出的内容输出到你指定的路径文件中。
- PrintStream out = System.out; //保留默认System.out的输出对象
- PrintStream ps = new PrintStream( "D:/log.txt"); //构建新的输出对象
- System. setOut(ps);
- Scanner scanner = new Scanner(System. in);
- System. out.println( "请输入您的姓名:" );
- String name = scanner.nextLine();
- System. out.println( "您好:"+name);
- System. setOut(out); //还原默认的输出对象
- System. out.println( "执行OK");<span style="font-family: Tahoma;"> </span>
2、位运算的妙用。
大家都知道:
1的二进制数:00000001
2的二进制数:00000010
4的二进制数:00000100
8的二进制数:00001000
观察其中的规律,可见左移一位,相当于乘以2,右移一位,相当于除以2。所以,乘以2的n次方的数可以用位运算来提高执行效率。
- int numa = 5;
- int numb = numa<<3;
- int numc = numb>>1;
- System. out.println(numb);
- System. out.println( numc);
当然了,位运算还可以对两数进行交换,不过只支持整型。
- int num[] = {11,33};
- num[0] = num[0]^num[1];
- num[1] = num[1]^num[0];
- num[0] = num[0]^num[1];
- System. out.println( "num[0]="+num[0]);
- System. out.println( "num[1]="+num[1]);
3、对于高精度的加减乘除。BigDecimal
这个不用多说,相信许多程序员需要经常用到这个类。
- double money = 2;
- double price = 1.1;
- double result = money - price;
- System. out.println(result);
- BigDecimal deMoney = new BigDecimal( "2");
- BigDecimal dePrice = new BigDecimal( "1.1");
- BigDecimal deResult = deMoney.subtract(dePrice);
- System. out.println(deResult.toString());
记得BigDecimal()构造方法里传的是一个String类型的对象,如果直接传数值进去,也许得不到你所要的结果哦。
4、结束双层循环:
大家都知道,break是结束整个循环体,continue是结束单次循环,那么双层循环如何跳出,我想大部人都会,给大家复习一下吧。
不多说这就是结束双层循环的用法:
- <span style="font-size: 18px;"> No1:for (int i = 0; i < 10; i++) { //用当前的for循环“取个名字”
- for ( int j = 0; j < 10; j++) {
- System. out.print( "i="+i+ ",j="+ j+"\t");
- if(i== j) {
- break No1; //跳出名字为“No1”的for
- }
- }
- System. out.println();
- }</span>
5、“&”和“&&”的区别:
简单点的理解,
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
- public static void main(String[] args) {
- String name = "java";
- for( int i=0; i<5; i++) {
- if(name.equals( "jav") && i++ ==0) { //&&前半句为假时,后半句将不执行
- // if(name.equals("jav") & i++ ==0) { &无论前半句是真是假,后半句都将执行
- break;
- }
- System. out.println(i);
- }
- }
这里还有一个初学者经常不理解的地方:异或( ^ )与或( | )的不同之处是,(^)是当左右都为true时,结果为false。(|)是只要其中有一个为true时,结果为true.两者是逻辑相反的。
6、switch语句选择的类型只有四种:byte,short,int , char????? NO!
jdk1.7以后,switch可以支持String类型的选择了。当然了,如果你想问1.7以前的版本要如何实现String类型的选择,得到字符的hashCode,返回的就是int 类型的数了。
- public static void main(String[] args) {
- String name = "java";
- switch (name.hashCode()) {
- case 3254818: //"java".hashCode()得到的数据
- System. out. println("java");
- break;
- }
- }
7、静态导入
import static java.lang.Math.*;这样就可以直接调用Math中的静态方法,如max(2,3);如果不导入就要写成Math.max(2,3);
import static java.lang.Math.*;这样就可以直接调用Math中的静态方法,如max(2,3);如果不导入就要写成Math.max(2,3);
8、我们常常要做一个关于字符串判断的操作,如下:
String name;
//通过一些方式,我得到了name的值。
name = "java";
//不推荐的用法
if(name.equals("java")) {
doSth...
}
//推荐用法
if("java".equals(name)) {
doSth....
}
原因,当我们所要判断的字符串为null时,会抛空指针异常。比如 你获取用户提交的参数,当并没有获取到这个参数,又对其进行了判断逻辑,如果使用了不推荐的方法,就会抛空指针异常。除非你的程序确实很健壮,确信在这个判断上根本不可能出现name为null的情况。
9、boolean值做为循环条件。
//不推荐用法
if(x==3){
doSth....
}
//推荐用法
if(3==x) {
doSth....
}
两则都是以判断x是否等于3的结果作为判断条件,但是人总有一疏忽,如果你不小心把代码写成了这种情况怎么办:
if(x=3){
doSth...
}else{
doSth...
}
如果在万千行代码中,不小心出了个这样的问题,情况好的时候,测试一下结果就发现问题,改正即可。人品不好的时候,你可能会一直以为程序运行正常。
- java你所不知道的实用技巧
- java你所不知道的实用技巧
- 你所不知道的java调用dll
- 你所不知道的Java序列化
- 关于JAVA你所不知道的10件事
- Java之关于你所不知道的String
- 你所不知道的JAVA浮点数运算
- java中你所不知道的'=='
- 你所不知道list的妙用
- 你所不知道的西安
- 你所不知道的知识
- 你所不知道的华为(z)
- 你所不知道的const
- 告诉你所不知道的typedef
- 告诉你所不知道的typedef
- 你所不知道的台湾宗教
- 你所不知道的8020法则
- 你所不知道的传输层
- ACM之AC,WA,orPE?
- Core Data
- Introduce Continuous integration
- PHP中流程控制的替代语法
- 视频会议行业发展趋势http://www.plcm.com.cn/service/s1/201208/329.htm
- java你所不知道的实用技巧
- GM8126 文件系统初探
- Statement的sql注入问题
- 无刷新上传原理【网上整理而来】
- Winsock编程基础介绍
- String类的常用方法
- ACM之取石子游戏I
- 关于fiddler使用教程
- 给一个对象赋值 会随原来的对象变化 关于java对象复制clone(转)