java解惑(谜题56到。。库之谜)
谜题56:大问题
import java.math.BigInteger;public class BigProblem {public static void main(String[] args) {BigInteger i = new BigInteger("5000");BigInteger j = new BigInteger("50000");BigInteger k = new BigInteger("500000");BigInteger total = BigInteger.ZERO;total.add(i);total.add(j);total.add(k);System.out.println(total); //0??}}total =total.add(i);total =total.add(j);total =total.add(k);
import java.util.HashSet;import java.util.Set;public class Name {private final String first, last;public static void main(String[] args) {Set<Name> s = new HashSet<Name>();s.add(new Name("Mickey","Mouse"));System.out.println(s.contains(new Name("Mickey","Mouse")));}public Name(String first, String last) {this.first = first;this.last = last;}public boolean equals(Object o) {if (!(o instanceof Name))return false;Name n = (Name) o;return n.first.equals(first) && n.last.equals(last);}}Name a = new Name("Mickey","Mouse");Name b = new Name("Mickey","Mouse");System.out.println(a.equals(b)); //true,如果没有重载equals函数,结果为falseSystem.out.println(a==b);//falseimport java.util.HashSet;import java.util.Set;public class Name {private final String first, last;public static void main(String[] args) {Set<Name> s = new HashSet<Name>();s.add(new Name("Mickey","Mouse"));System.out.println(s.contains(new Name("Mickey","Mouse")));}public Name(String first, String last) {this.first = first;this.last = last;}public boolean equals(Name n) {return n.first.equals(first) && n.last.equals(last);}public int hashCode(){return 31*first.hashCode()+last.hashCode(); //只要重载即可,}}import java.util.HashSet;import java.util.Set;public class Difference {public static void main(String[] args) {int vals[] = {789,678,567,456,345,234,123,012};for(int k = 0 ;k<vals.length;k++)System.out.println(vals[k]);Set<Integer> s = new HashSet<Integer>();for(int i =0 ;i<vals.length;i++){for(int j = 0;j<vals.length;j++){s.add(vals[i]-vals[j]);}}System.out.println(s.size());}}