您的位置:首页 > 编程语言 > Java开发

最近才开通的博客~与大家一起分享之前总结的一些学习经验~~~Java陷阱小结

2017-08-17 10:00 911 查看
之前学习一直都是自己做笔记  没有在网上发表任何内容  这次把自己以前学习碰到的值得收藏的内容拿出来与大家一起分享~

1、
     求奇数   i%2 ==1    X  
                   i%2 == 0
3、
     浮点数相加减
               2.2-1.1=0.9  X
               双精度浮点小数不是一个确定值
               可以使用bogdecimal("2.2").sub......
               如果只用于输出  也可以使用pringtf("%.2f",2.2-1.1);        
3、
     长整形计算
               float a=24*60*60*1000*1000;
               float b=24*60*60*1000;
               a/b=1000?    X
               在java中进行运算的 时候默认是int 型,溢出后再强转  数值已经变了
               正确写法:
               float  a=24L*60*60*1000*1000;
4、
      互换内容
               int a=1000;
               int b=2000;   

          y=(x^=(y^=x))^y;
5、
   字符串和字符
       "h"+"a" = "ha"
              'h'+'a' = 201
6、
   字符数组
       直接打印  就是数组里面的内容  print()默认参数是 char[]
               而进行字符串的拼接时  print( )  参数则为  String
7、
      转义字符

  \u0022 是双引号的Unicode转义字符

        System.out.println("a\u0022.length()
+\u0022b".length());
        System.out.println("a".length()
+"b".length());
        2
        2
8、
   打印输出类名
     
[align=left]      System.out.println([/align]
[align=left]                          MyClass.class.getName().[/align]
                            replaceAll(".","/")
+
".class");
[align=left]      }[/align]

          

//////////.class
          
[align=left]       System.out.println([/align]
<
4000
div align="left" style="min-height:10pt;">                          MyClass.class.getName().
                            replaceAll(".","/")
+
".class");
[align=left]      }[/align]

               

no8/MyClass.class
9、
     随机数的问题
     
[align=left]  StringBufferword=null;[/align]
          switch(rnd.nextInt(3))
{
[align=left]              case1: word=newStringBuffer("P");break;[/align]
[align=left]              case2: word=newStringBuffer("G");break;[/align]
[align=left]              default:word=newStringBuffer("M");[/align]
[align=left]           }[/align]
[align=left]          word.append('a');[/align]
[align=left]          word.append('i');[/align]
[align=left]          word.append('n');[/align]

           System.out.println(word);
注意点:rnd.next(n); 是0-n  但是不取到n
      switch  每次case 要break
      stringBuffer 里面的参数和传入的值有关  int/string ...

10、
     优柔寡断的返回值
       
publicstaticvoidmain(String[]args)
{
[align=left]              System.out.println(decision());[/align]
[align=left]      }[/align]
[align=left]      [/align]
      publicstaticbooleandecision()
{
[align=left]          try{[/align]
[align=left]              returntrue;[/align]
[align=left]           }finally{[/align]
[align=left]              returnfalse;[/align]
[align=left]           }[/align]

       }
     返回值:false  尽量避免在try  catch  里面有返回   

11、
     无情的增量操作
          
 intj=
0;
       for(i
118f8
nt
i=
0;i< 100;i++){
         j=j++;
  //j++    j=++j
[align=left]        }[/align]
[align=left]        System.out.println(j);[/align]

   结果:0   j=j++;   j=j   ++  只有自增  没有再次赋值
12、
     整数的边界问题
        
     publicstaticfinalintEND=
Integer.MAX_VALUE;
      publicstaticfinalintSTART=END-
100;
      publicstaticvoidmain(String[]args)
{
             intcount=
0;
[align=left]             for(inti=START;i<END;i++)[/align]
[align=left]                 count++;[/align]
[align=left]              System.out.println(count);[/align]
[align=left]      }[/align]

      无限循环  整数有边界  但是类似于一个环  上届和下届“差1”

13、
          计数器问题
               
     intminutes=
0;
       for(intms=
0;ms< 60*60*1000;ms++)
           if(ms%(60*1000)
== 0)  //加括号 运算符优先级
[align=left]               minutes++;[/align]
[align=left]        System.out.println(minutes);[/align]

14、     
     你好 再见
[align=left]      try{[/align]
              System.out.println("Hello
world");
[align=left]              System.exit(0);[/align]
[align=left]          }finally{[/align]
              System.out.println("Goodbye
world");

          }
       finally  不一定会执行  程序中断之后  则不会执行
15、
      到底关闭了么?
       
[align=left]       InputStreamin=null;[/align]
[align=left]        OutputStreamout=null;[/align]
[align=left]       try{[/align]
[align=left]           in=newFileInputStream(src);[/align]
[align=left]           out=newFileOutputStream(dest);[/align]
[align=left]           byte[]buf=newbyte[1024];[/align]
[align=left]           intn;[/align]
           while((n=in.read(buf))
> 0)
               out.write(buf,
0,
n);
[align=left]        }finally{[/align]
           if(in!=null)in.close();
  //in.close  也可能抛异常 也要try
[align=left]           if(out!=null)out.close();[/align]
[align=left]        } [/align]

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 后台
相关文章推荐