本书封面如下:
下面是我觉得有帮助的一些知识:
page33 断言
assert contain(a,answer):“maxof Array answer is not equal in the array”; 调用函数执行
page72 static method
the static keyword means that the method is not activated by any one object.
无法通过对象调用,必须通过创建的类之间调用。
例如distance为一个static方法,调用时Location.distance而不是p.distance
page107 关于数组值的传递
public static void put42s(int[] data)数组均是通过地址传递到函数中,这一点JAVA和C语言是类似的
page112 int...elements
public void addMany(int...element)
the method can be called with anynumber of integer arguments.表明输入参数不唯一
addMany(8,4,4) addMany(1,2,3,4,5,6,7,8,9)
page133 clone函数
当类中包含数组的时候,clone函数执行需要进行额外的操作,不仅仅是调用a.clone(),需要针对每一个元素调用
page233 dummy nodes
在链表操作过程中,如果对链表头结点和尾结点需要进行操作,为了避免错误,可以使用伪头部和伪尾部。位于伪结点中的数据不属于链表。使用好处是头结点和尾结点的引用只需要设定一次即可,以后都可以保持不变,这样避免了考虑各种复杂情况。
page244 object类型
Object obj这样可以让obj对象指向任何类型数据,例如
String s=new String("Objection overruled");
Object obj;
obj=s;
page248 boxing and unboxing封装和解封
封装是指一个值被转换为一个对象和对应的类型,解封是逆过程,例子
int i=42;
int j;
Integer example;
example = new Integer(i);// boxing
example=i;//autoboxing
j=example.intValue();//unboxing
j=example;//autounboxing
page338-340 表达式的中缀转后缀
字符串括号是完整的情况,例如(((A+7)*(B/C))-(2*D))
1.初始化一个栈,用来保存操作符和括号
2.do
if(下个输入是左括号)
读取左括号直接放入栈中
else if(输入是一个数字或其它符号)
读入然后把它输出
else if(输入是操作符)
读入操作符放入栈中
else
{
读入并且抛弃下一个输入(输入肯定是右括号)。栈的顶部肯定有一个操作符,把该操作符弹出并且输出(如果没有操作符就输出错误信息停止)在把操作符弹出后,栈顶端肯定有一个左括号,弹出左括号并抛弃(如果没有表明括号不匹配,给出错误提示信息)
}
while(有字符串可读)
3.最后栈肯定为空,否则就输出错误提示信息
字符串中括号不完整的情况,例如2*(A-B)+3+C
1.初始化一个栈,用来保存操作符合括号
2.do
if(下个输入是左括号)
读入左括号直接放入栈中
else if(下个输入是数字或其它符号)
读入并直接输出
else if(下个输入是操作符)
{
弹出并且打印操作符直到栈出现下面三种情况
(1)栈为空
(2)栈中下一个符号是左括号
(3)栈中的下一个符号和下一个输入符号相比优先级要低
当出现上面三种情况后,停止出栈操作,读入下一个输入字符,把字符压入栈中
}
else
{
读入并且抛弃下一个输入(输入肯定是右括号)。栈的顶部肯定有一个操作符,把该操作符弹出并且输出(如果没有操作符就输出错误信息停止)在把操作符弹出后,栈顶端肯定有一个左括号,弹出左括号并抛弃(如果没有表明括号不匹配,给出错误提示信息)
}
while(有字符串可读)
3.最后栈肯定为空,否则就输出错误提示信息
page409 fractals
进行界面绘图时可以调用递归算法进行实现
public static void randomFractal
(
int leftX,
int leftY,
int rightX,
int rightY,
Graphics drawingArea
)
{
final int STOP=4;
int midX,midY;
int delta;
if((rightX-leftX)<=STOP)
drawingArea.drawLine(leftX,leftY,rightX,rightY);
else
{
midX=(leftX+rightX)/2;
midY=(leftY+rightY)/2;
delta=(int)(Math.random()-0.5)*(rightX-leftX);
midY+=delta;
randomFractal(leftX,leftY,midX,midY,drawingArea);
randomFractal(midX,midY,rightX,rightY,drawingArea);
}
}
page591 hash时间
填充因子为α,线性探测平均检查元素个数为: 1/2*(1+1/(1-α))
double hashing 平均检查元素个数为:-ln(1-α)/α
链式哈希 平均检查元素个数为:1+α/2
以上就是我这本书中获得的一些补充知识