《java 解惑》学习笔记
文章平均质量分 56
jiqikewang
这个作者很懒,什么都没留下…
展开
-
Math.abs()方法不一定总是返回整数
下面的程序将生成整数对3取余的柱状图,那么,它将打印出什么呢? public class Mod { public static void main(String[ ] args) { final int MODULUS = 3; int[] histogram = new int[MODULUS]; // Iterate over al转载 2011-12-14 11:10:03 · 3502 阅读 · 0 评论 -
还是一个类的初始化问题(初始化过程解释的非常清楚)
下面的程序在一个类中计算并缓存了一个合计数,并且在另一个类中打印了这个合计数。那么,这个程序将打印出什么呢?这里给一点提示:你可能已经回忆起来了,在代数学中我们曾经学到过,从1到n的整数总和是n(n+1)/2。class Cache { static { initializeIfNecessary(); } private static int sum;转载 2011-12-12 16:38:51 · 958 阅读 · 0 评论 -
关于instanceof和转型的理解
package ClassPuzzle;public class TypePuzzle { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String str = null; //尽管null对于每一个引用类型来说都是其子转载 2011-12-12 16:22:43 · 626 阅读 · 0 评论 -
类谜题:初始化循环问题;还是static问题(详细分析了初始话过程)
知识点:递归的初始化会被忽略;(比较重要的一点是关于final类型常量的初始化过程,非常清晰!!!假如小报是可信的,那么摇滚之王“猫王”就会直到今天仍然在世。下面的程序用来估算猫王当前的腰带尺寸,方法是根据在公开演出中所观察到的他的体态发展趋势来进行投射。该程序中使用了Calendar.getInstance().get(Calendar.YEAR)这个惯用法,它返回当前的日历年份。那转载 2011-12-12 15:23:31 · 512 阅读 · 0 评论 -
类谜题:static使用的另外一个问题
知识点:static关键字修饰的方法调用问题!!!下面的程序对巴辛吉小鬣狗和其它狗之间的行为差异进行了建模。如果你不知道什么是巴辛吉小鬣狗,那么我告诉你,这是一种产自非洲的小型卷尾狗,它们从来都不叫唤。那么,这个程序将打印出什么呢?class Dog { public static void bark() { System.out.print("wo转载 2011-12-12 15:15:12 · 671 阅读 · 2 评论 -
类谜题:关于静态域的一个小问题
知识点:静态与只有一个,没有拷贝,是共享的。第二个:关于使用集成还是组合。下面的程序使用了一个Counter类来跟踪每一种家庭宠物叫唤的次数。那么该程序会打印出什么呢? class Counter { private static int count = 0; public static final synchronized void increment() {转载 2011-12-12 15:10:09 · 569 阅读 · 0 评论 -
类谜题 46:构造器
package ClassPuzzle;public class ConstructorPuzzle { public ConstructorPuzzle(Object o) { // TODO Auto-generated constructor stub System.out.println("Object"); } public ConstructorPuzzle(原创 2011-12-12 15:04:51 · 59 阅读 · 0 评论 -
异常谜题37:有的不能抛出异常
两个知识点:a: println()方法不抛出异常b:一个方法可以抛出的被检查异常集合是它所适用的所有类型声明要抛出的被检查异常集合的交集,而不是合集import java.io.IOException;public class Arcane1 { public static void main(String[] args) { try {原创 2011-12-09 11:18:23 · 961 阅读 · 0 评论 -
异常谜题1:finally中最好别有return,若try中也有return。
下面这个可怜的小程序并不能很好地做出其自己的决定。它的decision方法将返回true,但是它还返回了false。那么,它到底打印的是什么呢?甚至,它是合法的吗?public class Indecisive { public static void main(String[] args) { System.out.println(decision());原创 2011-12-09 11:09:42 · 547 阅读 · 0 评论 -
循环谜题26Interger。MaxValue的理解
package loopPuzzles;public class IntergerMaxPuzzle { public static final int END = Integer.MAX_VALUE; public static final int START = END - 100; public static void main(String[] args) { int c原创 2011-12-09 10:56:20 · 825 阅读 · 0 评论 -
循环谜题25:增量操作
package loopPuzzles;public class ZizengPuzzle { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int j = 0; for(int i=0; i<100; i++) {原创 2011-12-09 10:55:31 · 525 阅读 · 0 评论 -
finally不一定总是执行
package ExceptionPuzzles;public class Hellogoodbye {/* * 总之,System.exit将立即停止所有的程序线程,它并不会使finally语句块得到调用, */ public static void main(String[] args) { try { System.out.print原创 2011-12-09 15:47:04 · 1259 阅读 · 0 评论 -
异常谜题之关闭流
这里忽然想到,其实这个知识点当时看马士兵的视频教程的时候看到过,但是没有仔细的研究:static void copy(String src, String dest) throws IOException { InputStream in = null; OutputStream out = null; try { in原创 2011-12-09 15:55:18 · 625 阅读 · 0 评论 -
谜题70:(其实涉及到对于修饰符的一个理解)
先摘抄java解惑里面的一个谜题下面这个程序设计在不同的包中的两个类的交互,main方法位于hack.TypeIt中。那么,这个程序会打印什么呢? package hack;import click.CodeTalk;public class TypeIt { private static class ClickIt extends CodeTalk { void p原创 2011-12-14 16:20:35 · 514 阅读 · 0 评论 -
谜题72:final相关的几个知识点
本谜题旨在检验当你试图隐藏一个final域时将要发生的事情。下面的程序将做些什么呢? class Jeopardy { public static final String PRIZE = "$64,000";}public class DoubleJeopardy extends Jeopardy { public static final String PRIZE =转载 2011-12-14 16:15:30 · 462 阅读 · 0 评论 -
不要使用基于减法的比较器
下面的程序使用定制的比较器,对一个由随机挑选的Integer实例组成的数组进行排序,然后打印了一个描述了数组顺序的单词。回忆一下,Comparator接口只有一个方法,即compare,它在第一个参数小于第二个参数时返回一个负数,在两个参数相等时返回0,在第一个参数大于第二个参数时返回一个整数。这个程序是展示5.0版特性的一个样例程序。它使用了自动包装和解包、泛型和枚举类型。那么,它会打印出什么呢转载 2011-12-14 11:15:56 · 1351 阅读 · 0 评论 -
日期谜题(也暴露了Java)设计中不大好的两个类库
下面的程序演练了Date和Calendar类的某些基本特性,它会打印出什么呢? import java.util.*;public class DatingGame { public static void main(String[ ] args) { Calendar cal = Calendar.getInstance(); cal.set(1999转载 2011-12-14 10:48:21 · 780 阅读 · 0 评论 -
不要隐藏变量。
在下面的程序中,子类的一个域具有与超类的一个域相同的名字。那么,这个程序会打印出什么呢? class Base { public String className = "Base";}class Derived extends Base { private String className = "Derived";}public class PrivateMatter转载 2011-12-14 11:38:05 · 709 阅读 · 0 评论 -
库谜题60:用一行代码实现功能
package LibPuzzles;import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedHashSet;import java.util.List;/** * 下面中的方法都是用一行的代码实现功能。 * * @author xixizhao * */public clas原创 2011-12-14 10:33:13 · 710 阅读 · 0 评论 -
库谜题之57名字问题(equals和hashcode)(考虑散列函数的问题)
但是一个问题,怎么保证散列函数返回的函数值,对于不同的名字不同?还有,对于eauqls方法重写的时候,要注意它的参数类型一定要是Object。package LibPuzzles;import java.util.HashSet;import java.util.Set;/** * 无论何时,只要重写了equals方法,就要重写hashCode方法。 * @author xixizha原创 2011-12-14 10:02:07 · 443 阅读 · 0 评论 -
千万不要在构造器中调用可覆 写的方法。
下面这个程序有两个不可变的值类(value class),值类即其实例表示值的类。第一个类用整数坐标来表示平面上的一个点,第二个类在此基础上添加了一点颜色。主程序将创建和打印第二个类的一个实例。那么,下面的程序将打印出什么呢? class Point { protected final int x, y; private final String name; // Cached转载 2011-12-12 16:46:31 · 1257 阅读 · 0 评论 -
2011年12月12号,学习完成了java解惑的第五章。
并且把第六章的第一个BigInteger问题看完了。加油啊!!原创 2011-12-12 16:57:28 · 322 阅读 · 0 评论 -
BigInteger类型是不可变的(String)
import java.math.BigInteger;public class BigProblem { public static void main(String[ ] args) { BigInteger fiveThousand = new BigInteger("5000"); BigInteger fiftyThousand = new B转载 2011-12-12 16:55:13 · 3737 阅读 · 0 评论 -
今天比较在状态,很high,java解惑的第二章字符的全部看完了。
RT,不过现在好困啊,明显感觉思维不大灵活了。 加油!!!! 看起来,本月底计划可以提前完成啊!!!!等会去散分庆祝。原创 2011-12-08 16:36:19 · 319 阅读 · 0 评论 -
字符谜题最后一个
非常经典,所以全文摘抄package characterPuzzles;import java.util.Random;public class Switch { private static Random rnd = new Random(); /** * @param args */ public static void main(String[] args) {转载 2011-12-08 16:27:36 · 382 阅读 · 0 评论 -
表达式谜题之6,多重转型(待看浮点数补码等等知识点)
RT,补充相关知识点后,连同5一起看。原创 2011-12-07 16:24:49 · 332 阅读 · 0 评论 -
字符谜题之4:Unicode转义字符
package characterPuzzles;public class ZhuanYI { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // \u0022 是双引号的Unicode转义字符 System.out.pr原创 2011-12-08 11:05:09 · 1551 阅读 · 0 评论 -
表达式之谜9&10:复合赋值
package expressionPuzzles;public class ComplexPuzzle { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub short x = 0; int i = 123456;原创 2011-12-07 16:58:02 · 653 阅读 · 0 评论 -
三目运算中的puzzle
package expressionPuzzles;public class DosEquasPuzzle { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub char x = 'X'; int i = 0; Sy原创 2011-12-07 16:38:37 · 457 阅读 · 0 评论 -
表达式谜题之5,16进制(待学习浮点数等。)
混合类型运算要小心,但是对于进制之间的问题,还有浮点数等等问题要重新回去学习下,忘记了都。原创 2011-12-07 16:18:00 · 365 阅读 · 0 评论 -
表达式谜题之4long类型数据最好用大写L防止和数字混淆
RT,并且避免使用单独的一个l作为变量名。原创 2011-12-05 16:53:31 · 640 阅读 · 0 评论 -
表达式谜题之3大数相乘时提防溢出
package expressionPuzzles;public class LongDividePuzzle { /**操作很大的数字时候一定要提防溢出。 * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub final long MICR原创 2011-12-05 16:50:34 · 652 阅读 · 0 评论 -
为什么1.0 - 0.7 != 0.3?????
Java代码 public static void main(String[] args) { System.out.println(1.0 - 0.1); System.out.println(1.0 - 0.2); System.out.println(1.0 - 0.3); System.out.println(1.0转载 2011-12-01 17:27:02 · 5447 阅读 · 0 评论 -
表达式之谜2找零时刻(需要精确答案的地方,避免使用float和double;货币运算使用int,long或BigDecimal)
package expressionPuzzles;import java.math.BigDecimal;public class chargesPuzzle { /**物品一共是1.10美元,手里只有2美元,精确打印出找零值; * @param args */ public static void main(String[] args) { // TODO Auto-原创 2011-12-01 17:16:00 · 1706 阅读 · 0 评论 -
字符谜题之1:最后的笑声(之所以说是最后的笑声,是因为输出两个Ha,第二个出问题)
package characterPuzzles;public class LastLaugh { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("H" + "a");//这个输出为Ha原创 2011-12-08 10:29:07 · 362 阅读 · 0 评论 -
字符谜题之2:ABC
package characterPuzzles;public class ABCPuzzle { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String letters = "ABC"; char[] numbers原创 2011-12-08 10:39:48 · 367 阅读 · 0 评论 -
字符谜题8:指定字符集
public class StringCheese { public static void main(String[] args) { byte bytes[] = new byte[256]; for (int i = 0; i < 256; i++) bytes[i] = (byte)i; String str原创 2011-12-08 15:46:26 · 356 阅读 · 0 评论 -
URL:其实是标号问题
public class BrowserTest { public static void main(String[] args) { System.out.print("iexplore:"); http://www.google.com; System.out.println(":maximize"); }}public原创 2011-12-08 16:20:38 · 326 阅读 · 0 评论 -
字符谜题3,replace方法总结
要想要得到类名:方法如下:System.out.println(ClassName.class.getName().replaceAll("\\.", "/") + ".class"); // 为了解决这类问题,5.0版本提供了新的静态方法java.util.regex.Pattern.quote。它接受一个字符串作为参数,并可以添加必需的转义字符,它将返回一个正则表达式字符串,原创 2011-12-08 16:16:37 · 357 阅读 · 0 评论 -
字符谜题:replace方法2
package characterPuzzles;import java.io.File;public class ClassName2 { /** * 在replace方法里,如果第一个直接用的“。”,那么第二个参数也直接用File。separator。如果第一个用的是正则表达式,那么第二个参数不能用File。separator * @param args */ pub原创 2011-12-08 16:15:06 · 363 阅读 · 0 评论