![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java随笔记
文章平均质量分 75
imu2008
这个作者很懒,什么都没留下…
展开
-
【java解惑】java中那些反常识的小知识(续)
六、Q:请为 i!=0 && i ==-1 提供一个声明,使得其成立。 分析:在布尔表达式(i != 0 && i == -i)中,一元减号操作符作用于 i,这意味着它的类型必须是数字型的:一元减号操作符作用于一个非数字型操作数是非法的。因此,我们要寻找一个非 0 的数字型数值,它等于它自己的负值。NaN 不能满足这个属性,因为它不等于任何数值,因此,i 必须表示一个实际的数字。肯定没有任何原创 2015-11-04 08:42:06 · 286 阅读 · 0 评论 -
HashMap.values().addAll()异常
问题:在使用一个Collection.addAll()方法时报告UnsupportedOperationException。追溯原因发现该collection是来自于hashMap.values()。分析原因:通过查看源代码,发现hashMap.values()实现如下: //HashMap.java public Collection values() { Collec原创 2015-11-04 08:42:42 · 702 阅读 · 0 评论 -
【java解惑】关于异常捕获的三条要求
有如下所示代码:public class Example037 { static void output1() { try { System.out.println("如果一个 catch 子句要捕获一个类型为 E 的被检查异常," + "而其相对应的 try 子句不能抛出 E 的某种子类型的异常,那么这就是一个编译期错误"); } catch (IOException原创 2015-11-04 08:42:08 · 371 阅读 · 0 评论 -
【java解惑】java编译器对空final赋值的妥协
如下所示代码:public class Example038 { private final static String GUEST_ID = "ape_it"; private final static String ID; static { try { ID = getID(); } catch (GetIDException e) { ID = GUEST_ID;原创 2015-11-04 08:42:22 · 545 阅读 · 0 评论 -
【java解惑】长整数计算防止溢出
如下代码:public class Example003 { public static void main(String[] args) { final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000; final long MICROS_PER_DAY_L1 = 24 * 60 * 60 * 1000 * 1000L; fina原创 2015-11-04 08:41:23 · 2772 阅读 · 0 评论 -
【java解惑】重载构造函数
如下所示代码:public class Example046 { private Example046(Object o) { System.out.println("Object"); } private Example046(double[] dArray) {//2 System.out.println("double array"); } private Examp原创 2015-11-04 08:42:29 · 231 阅读 · 0 评论 -
【java解惑】本地变量声明只能放在语句块中
如下所示代码:public class Example055 { private static long numCreated = 0; public Example055() { numCreated++; } public static long numCreated() { return numCreated; } public static void main(原创 2015-11-04 08:42:34 · 415 阅读 · 0 评论 -
【java解惑】java字符串替换方法使用
如下代码:public class Example020 { public static void main(String[] args) { String separator = File.separator; String clazzName = Example020.class.getName(); String rs1 = clazzName.replace(".", se原创 2015-11-04 08:41:47 · 865 阅读 · 0 评论 -
【java解惑】java构造器的那些事儿
如下所示代码:public class Example040 { private Example040 e40 = new Example040(); public Example040() throws Exception { throw new Exception("这里是exception,不是error"); } public void output() { System原创 2015-11-04 08:42:24 · 277 阅读 · 0 评论 -
【java解惑】类和实例的初始化循环问题
如下所示代码:public class Example049 { private int overtime; public static Example049 INSTANCE = new Example049();//1 private static int CURRENT_YEAR = Calendar.getInstance().get( Calendar.YEAR);//2原创 2015-11-04 08:42:32 · 535 阅读 · 0 评论 -
【java解惑】十六进制加法问题
如下代码:public class Example005 { public static void main(String[] args) { System.out.println("out1=" + Long.toHexString(0x100000000L + 0xcafebabe)); System.out.println("out2=" + Long.toHexS原创 2015-11-04 08:41:26 · 5556 阅读 · 0 评论 -
Java判断两个路径对应的文件是否相同
今天遇到一个bug,查了一个小时才发现是文件路径比较出了问题: 比如有两个路径:D:\dir\..\a.txt和D:\a.txt。这两个路径写法虽然不同,但是很容易知道这两个路径指向的是同一个文件。如果我们使用Java的File去判断两个路径是否相同,判断如下:File f1 = new File("D:\\dir\\..\\a.txt");File f2 = new Fi原创 2015-11-15 21:26:30 · 2540 阅读 · 0 评论 -
java 对象序列化使用
java序列化的使用很简单的用法就是,在类定义时实现java.io.serializable即可。扩展这个接口不需要实现它的任何方法,Java会自动序列化。需要注意的,被标为transient和static的属性是不会被java自动序列化的。 在面对比较复杂的对象时,比如存在双向链接关系的对象时,如果实现该接口,java在序列化时会栈溢出,如果对象比较大,会出现堆溢出。那么这时候原创 2015-11-15 21:30:07 · 328 阅读 · 0 评论 -
【java解惑】多重强转引发的问题
如下代码:public class Example006 { public static void main(String[] args) { System.out.println("(byte) -1 = " + (byte) -1); // System.out.println("(char) -1 = " + (char) -1); // System.out.println原创 2015-11-04 08:41:28 · 372 阅读 · 0 评论 -
【java解惑】java中那些反常识的小知识
一、Q:请为 i == i + 1 ; 提供一个声明使得条件成立。 分析:一个数字永远不会等于它自己加 1对吧!如果这个数字是无穷大的又会怎样呢?Java 强制要求使用IEEE二进制浮点数算术标准IEEE 754,它可以让你用一个 double 或 float 来表示无穷大。无穷大加 1 还是无穷大。如果 i 在声明为无穷大那么i == i + 1 就成立。 A:可以用任何被计算为无原创 2015-11-04 08:42:03 · 274 阅读 · 0 评论 -
【java解惑】整型溢出的循环控制变量
如下代码:public class Example026 { public static final int END = Integer.MAX_VALUE; public static final int START = END - 100; public static void main(String[] args) { int count = 0; for (int i =原创 2015-11-04 08:41:55 · 690 阅读 · 0 评论 -
【java解惑】输入输出流使用后及时关闭问题
如下所示代码:public class Example041 { public static void main(String[] args) throws IOException { Example041 e41 = new Example041(); e41.copy("d:\\微信名ape_it.txt", "d:\\微信名爱题猿.txt"); } private void原创 2015-11-04 08:42:13 · 457 阅读 · 0 评论 -
【java解惑】递归异常与有限循环
如下代码:public class Example045 { public static void main(String[] args) { long start = System.currentTimeMillis(); workHard(); System.out.println("递归花费时间:" + (System.currentTimeMillis() - start)原创 2015-11-04 08:42:27 · 547 阅读 · 0 评论 -
【java解惑】复合赋值与简单赋值
复合赋值操作符有:+=、-=、*=、/=、%=、 >=、 >>>=、&=、 ^=和| = ; 简单赋值操作符为= ; 如下所示代码:public class Example009 { public static void main(String[] args) { short x = 1; int x1 = 1; int i = 123456; x += i; //原创 2015-11-04 08:41:34 · 2032 阅读 · 0 评论 -
【java解惑】Unicode转义符的使用
如下所示代码:public class Example014 { public static void main(String[] args) { /** * it is a test for \utest. */ // \u0022 是双引 号的 Unicode 转义字符 System.out.println("a\u0022.length() + \u0022b".原创 2015-11-04 08:41:39 · 3178 阅读 · 0 评论 -
【java解惑】Unicode转义字符的使用(续)
如下所示代码:public class Example016 { public static void main(String[] args) { char c = 0x000a; /** * \u000A 注释1 */ // \u000A 注释2 System.out.println("c = " + c); System.out.println("a ne原创 2015-11-04 08:41:42 · 1890 阅读 · 0 评论 -
【java解惑】无处不在的bug
如下所示代码:public class Example023 { public static void main(String[] args) { errorMethod(); rightMethod(); } private static void errorMethod() { StringBuffer word = null; Random rnd = new Ra原创 2015-11-04 08:41:49 · 354 阅读 · 0 评论 -
【java解惑】前缀自增自减和后缀自增自减问题
如下代码:public class Example025 { public static void main(String[] args) { int ape = 100; int it = 100; int ape_it = 100; for (int i = 0; i < 100; i++) { ape--; it = it--; ape_it = --a原创 2015-11-04 08:41:52 · 1276 阅读 · 0 评论 -
【java解惑】try-finally语句执行问题
如下所示代码:public class Example039 { public static void main(String[] args) { Example039 example039 = new Example039(); System.out.println(example039.output1()); example039.output2(); } boolean原创 2015-11-04 08:42:11 · 287 阅读 · 0 评论 -
【java解惑】&和&&、|和||使用
如下所示代码:public class Example042 { public static void main(String[] args) { int[][] tests = { { 6, 5, 4, 3, 2, 1 }, { 1, 2 }, { 1, 2, 3 }, { 1, 2, 3, 4 }, { 1 } }; System.out.println("func1 ou原创 2015-11-04 08:42:16 · 411 阅读 · 0 评论 -
【java解惑】使用double进行小数运算
如下代码:public class Example002 { public static void main(String args[]) { System.out.println("println:( 2.00 - 1.10) = " + (2.00 - 1.10)); System.out.printf("printf:( 2.00 - 1.10) = %.2f%n", 2.00 -原创 2015-11-04 08:41:21 · 733 阅读 · 0 评论 -
【java解惑】条件表达式结果类型规则
如下代码:public class Example008 { public static void main(String[] args) { char x = 'X'; int i = 0; System.out.println(true ? x : 65535); //1 System.out.println(true ? x : 65536); //2 System.o原创 2015-11-04 08:41:31 · 1743 阅读 · 1 评论 -
【java解惑】java字符串比较那些事儿
如下代码:public class Example013 { public static void main(String[] args) { final String pig = "length:8"; final String pig1 = "length:8"; int length = pig.length(); final String dog = "length:"原创 2015-11-04 08:41:37 · 323 阅读 · 0 评论 -
【java解惑】字符串的字节数组构造函数使用
如下代码:public class Example018 { public static void main(String[] args) { byte bs[] = new byte[256]; for (int i = 0; i < 256; i++) { bs[i] = (byte) i; } string(bs);// 调用1 string(bs, "iso-原创 2015-11-04 08:41:44 · 1522 阅读 · 0 评论 -
【java解惑】移位运算符规则
如下代码:public class Example027 { public static void main(String[] args) { int i = 0; while (-1 << 32 != 0) { i++; } System.out.println(i); }} 结果说明: 将上述程序放到eclipse中,在输出行会有提示“Unreacha原创 2015-11-04 08:42:00 · 349 阅读 · 0 评论