java编程思想第四版第三章要点总结
1. 静态导入
首先定义了一个Print类,里面有静态方法print package net.mindview.util; public class Print { static void print(Object s){ System.out.println(s); } } 使用的时候 在类前使用import static导入即可. 需要手动导入 package net.mindview.operators; import java.util.Date; import static net.mindview.util.Print.*; HelloData { main(String[] args) { print("hello,it is"); print(new Date()); } } ? 2. java操作符
3. 赋值
package net.mindview.operators; Tank{ int level; } Assignment { main(String[] args) { Tank t1 = Tank(); Tank t2 = Tank(); t1.level = 27; t2.level = 41; System.out.println(t1.level:" + t1.level + ,t2.level:" + t2.level); t2 = t1; System. t2.level); t1.level = 5 t2.level); } } 这种特殊的现象叫做"别名现象",是java操作对象的一种基本方式。在这个例子中,如果想辨别名问题应该怎么办呢? 应该这样写: t1.level = t2.level; 下面这句话不太理解: 这样便可以保持两个对象彼此独立,而不是将t1和t2绑定到同一个对象上。 但你很快就会意识到, 直接操作对象的域容易导致混乱,并且, 并且违背了良好面向对象程序设计的原则。这可不是一个小问题, 所以从现在开始大家就应该注意, 为对象赋值可能会产生意想不到的结果。 我的问题: 什么结果呢? 假设成员变量不是基本类型, 而是引用类型。 如果给引用类型赋值, 指向的又是一个地址, 这样一个地方改了, 那么使用这个引用地址的地方都会受到影响, 我是这么理解的。 不知道对不对 方法调用中的别名现象。也就是参数是一个引用类型,传递的是引用地址. 一旦在方法内部修改了引用地址的成员变量,那么所有指向这个引用地址的地方都会被修改. Letter{ char c; } PassObject { f(Letter y){ y.c = 'z'; } main(String[] args) { Letter x = Letter(); x.c = a1: x.c="+x.c); //传递的时x所指向的引用 f(x); System.x.c); } } ? 4. 自动递增和递减
记忆方法,运算都是+1,如果先生成值,那么就是没+1之前就生成了,后生成值,就是运算后生成的,所以+1了. package net.mindview.operators; import AutoInc { main(String[] args) { int i = 1; println(i:i); println(++i:"+ ++i);先执行运算,在生成值 println(i++:"+ i++);先生成值,在运算 println(i); } } 输出结果: i:1 ++i:2 i: i++:3 ?5. 对象的等价性
EqualsMethod { main(String[] args) { Integer n1 = new Integer(47); Integer n2 = ); System.out.println(n1 == n2); System.out.println(n1 != n2); } }
? 6.截尾和舍入
fasdfasdf
(编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |