Java解惑六:库之谜

本文是根据JAVA解惑这本书,做的笔记。

电子书见:http://download.csdn.net/detail/u010378705/7527721

谜题56

BigInteger、BigDecimal以及包装类型的实例是不可改变。

BigInteger five = new BigInteger("5");
BigInteger total = BigInteger.ZERO;
total.add(five);  //这并不会改变total的值,调用该方法的返回值,才是加法得到的结果。
total = total.add(five); // 才是希望得到的结果

谜题57

HashSet中的元素,首先计算hashCode,然后在调用equals()方法。

一个类如果重写了equals()方法,而没有重写hashCode()方法,对HashSet会有影响。

因此两个方法尽量一起重写。

谜题58

本来应该重写equals(Object o),但是重载了,写成了:equals(Class class)

因此在重写的时候尽量使用:@Override

谜题59

主要讲述了:在数字前面加个0就是八进制的数了。

谜题60

一行编码解决问题,主要讲述是四个知识点。

1. LinkedHashSet:维持来的顺序,且没有重复的。

2. 正则表达式在split中的应用。

3. Arrays.deepToString的使用

4. 包装类的位操作:Integer.bitCount();

谜题61

主要讲了Calendar和Data使用的问题。使用时候要注意查API文档。

谜题62

HashMap存储String时候的问题。

HashMap比较键时,使用的是引用等价性而不是值等价性。

语言规范字符串是内存限定的,相等的String常量也是相同的。

谜题63

不要将构造器声明变成方法声明:添加返回值。

谜题64

整数边界的问题

Math.abs(Integer.MIN_VALUE) 仍是其本身

PS:负数取余的问题

谜题65

整数相减越界的问题。

两个整数相减会导致越界,compare时最好不要使用两数相减,改为

public int compare(Integer i1, integer i2) {
      return (i2 < i1 ? -1 : (i2 == i1) ? 0 : 1);
}

Java解惑六:库之谜,布布扣,bubuko.com

时间: 2024-10-25 13:23:55

Java解惑六:库之谜的相关文章

java解惑之字符之谜(谜题22)

谜题22:URL的愚弄 本谜题利用了一个java编程语言中一个鲜为人知的特性.请考虑下面的程序将会做什么? public class BrowerTest{ public static void main(String[] args){ System.out.ptintln("iexplore"); http://www.google.com; System.out.println(":maximize"); } } 这是个有点诡异的问题.当我们初次看到这个程序时,

java解惑之字符之谜(谜题16)

谜题16:行打印程序 行分隔符是为分割文本行的字符或字符串而起的名字,并且在不同平台上它是存在差异的.在windows平台上,它由CR字符(回车)和紧随其后的LR(换行)字符组成.在UNIX平台上,通常引用单独的LF字符作为换行字符.那么,这次的谜题也就由行分隔符引出,来看看下面这个将LF字符传递给println方法的程序会打印什么,它的行为是否依赖于平台? public class LinePrinter{ public static void main(String[] args){ //N

java解惑之字符之谜(谜题20)

谜题20:我的类是什么 来看一个打印其类文件名称的程序: package com.javapuzzlers; public class Me{ public static void main(String[] args){ System.out.println(Me.class.getName().replaceAll(".","/") + ".class"); } } 这个程序是先获得它的类名("com.javapuzzlers.Me

java解惑之字符之谜(谜题21)

谜题21:我的类是什么?镜头2 下面的程序所要做的事情正是前一个谜题所做的事情,但是它没有假设斜杠符号就是分隔文件名组成部分的符号.相反,该程序使用的是java.io.File.separetor,它被指定为一个公共的String域,包含了平台相关的文件名分隔符.这个程序会打印正确的.平台相关的类文件名吗?该程序是从这个类文件中被加载的. package com.javapuzzlers; import java.io.File; public class MeToo{ public stati

java解惑之字符之谜(谜题18)

谜题18:字符串奶酪 下面这个程序从一个字节序列创建一个字符串,然后迭代遍历字符串中的字符,并将它们作为数字打印.请描述程序打印的数字序列: public class StringCheese{ public static void mian(String[] args){ byte bytes[] new byte[256]; for(int i = 0; i < 256; i++){ bytes[i] = (byte)i; } String str = new String(bytes);

Java解惑八:更多库之谜

本文是根据JAVA解惑这本书,做的笔记. 电子书见:http://download.csdn.net/detail/u010378705/7527721 谜题76 将线程的启动方法start(),写成了run(); PS:管程(monitor)锁有待进一步理解. 谜题77 线程中锁的问题. 理解不深刻. 谜题78 反射会造成访问其他包中的非公共类型的成员,引起运行期异常. 谜题79 遮蔽:Thread.sleep()方法遮蔽了自定的方法. 谜题80 反射:如何实例化非静态内部类以及静态内部类.

Java解惑八:很多其它库之谜

本文是依据JAVA解惑这本书,做的笔记. 电子书见:http://download.csdn.net/detail/u010378705/7527721 谜题76 将线程的启动方法start(),写成了run(); PS:管程(monitor)锁有待进一步理解. 谜题77 线程中锁的问题. 理解不深刻. 谜题78 反射会造成訪问其它包中的非公共类型的成员.引起执行期异常. 谜题79 遮蔽:Thread.sleep()方法遮蔽了自定的方法. 谜题80 反射:怎样实例化非静态内部类以及静态内部类.

Java解惑七:更多类之谜

谜题66 继承的问题. 对于实例方法:命名相同时,子类会覆写父类的方法,且访问权限至少和父类一样大. 对于域:命名相同时,子类会隐藏父类的域,且访问权限任意. 谜题67 不要重用库中的类名. 谜题68 命名的问题. 类名应该以大写字母开头,形式为:MixedCase. 变量以小写字母开头,形式为:mixedCase. 常量以大写字母开头,形式为:MIXED_CASE. 单个大写字母,只能用于类型参数,形式为:Map<K, V>. 包名应该都是小写,形式为:lower.case. 当一个变量和一

Java解惑三:循环之谜

谜题24 byte是有符号的,范围是-128 - 127.而0x90是int类型.比较的时候,不相等. 如果想让其相等,需要进行类型转换:(byte & 0xff) 或者 (byte)0x99. 谜题25 自增运算符对循环的影响.j = j++,先赋值. 谜题26 Integer.MAX_VALUE加一之后会变成Integer.MIN_VALUE,这对循环会有影响. 可以考虑使用long来表示i变量,或者使用效率更高的i != Integer.MAX_VALUE. 谜题27 (-1 <<