Java编程思想学习笔记系列之-第 3 章 操作符

1. 静态导入import static net.mindview.util.Print.*;  JDK1.5中的新特性。一般导入一个类都用 import com.....ClassName;而静态导入是这样:import static com.....ClassName.*;这里的多了个static,还有就是类名ClassName后面多了个 .* ,意思是导入这个类里的静态方法。也可以只导入某个静态方法,只要把 .* 换成静态方法名就行了。然后在这个类中,就可以直接用方法名调用静态方法,而不必用ClassName.方法名的方式来调用。这种方法的好处就是可以简化一些操作,例如打印操作System.out.println(...);就可以将其写入一个静态方法print(...),在使用时直接print(...)就可以了。

2. 应使用()明确多个操作符的优先级

3. 基本类型赋值是内容赋值,对象赋值是引用赋值,a=b,则a、b指向同一个对象。

4. ★★★★值传递与引用传递:

class Emp {
public int age;
}
public class Main {
public static void main(String[]args) {
//Test A
int[] a = {10,20};
        System.
out.print(a[0] +" ");
change(a);
        System.
out.println(a[0]);
//Test B
Emp emp = newEmp();
        emp.
age =100;
        System.
out.print(emp.age+ " ");
change(emp);
        System.
out.println(emp.age);
//Test C
String s = newString("lisi");
        System.
out.print(s +" ");
change(s);
        System.
out.println(s);
    }
public static void change(int[] a) {
        a[
0] = 50;
    }
public static void change(Emp emp) {
        emp.
age =50;
emp=newEmp();//再创建一个对象

emp.age= 100;
    }
public static void change(String s) {
        s =
"zhangsan";
    }
}

输出结果:

10 50   //显然输出结果为10   50。实际传递的是引用的地址值

100 50  // emp = newEmp()创建对象和源对象不同,不改变源对象的值

lisi lisi  对于String类,由于String类是final修饰的,不可变,它会在内存中在开辟一块新空间。

5. 整数除法会直接去掉结果的小数位,而不是四舍五入

6. Random random=new Random(47);Random 对于特定的种子产生的随机数序列是相同的,如果不传参数,将使用当前时间作为种子产生随机序列。

7. 前缀递增/减(++a或--a)先执行运算,再生成值,而后缀递增/减则相反。

8. 测试对象的等价性:基本类型直接用==和!=即可。对于对象,==和!=比较的是对象的引用,但是比较实际内容可以用equals()【需覆盖此方法】方法。例如 new Integer(47)==newInteger(47)结果为false。而newInteger(47).equals(new Integer(47))结果为true

9. Java逻辑表达式有短路功能【提高性能】:test(1)&&test(2)&&test(3)只有当test(1)为true时,才会计算test(2)……。test(1)||test(2)||test(3) 只有当test(1)为false时,才会计算test(2)……。

10. 0x2F 十六进制 0177八进制。直接常量后缀L/l 标识long,f/F 标识 float,d/D标识double型。

11. Java中数字存储用有符号二进制补码:补码=反码+1  -5(0000 0101)补码为:1111 1011

12. 指数计数法:float f=47e38F;末尾的F必须有,否则编译错误,编译器默认将指数作为双精度处理。e/E 代表10的幂,而不是自然基数2.718

13. boolean不仅可以使用逻辑运算符&&、||、!,还可以使用按位操作符【非操作~除外】|、&、^(异或),效果一样。但使用按位操作符没有短路功能。

14. 移位操作符:

左移(<<)底位补0

“有符号”右移(>>)使用“符号扩展”,符号为正高位补0,否则补1

“无符号”右移(>>>)高位补0

对char/byte/short移位时,会先转成int,然后截断,转化成原来的类型。“无符号”右移时会得到错误结果-1  Page50

15. Java语言没有运算符重载

16. Java 不会自动将int 转换为 boolean型,因此,以下语句编译会出错

int x; inty; while(x = y){}

17. float 、double 转 int时总是舍去小数部分,四舍五入请用Math.round()

18. 表达式中的最大数据类型决定了表达式的最终类型。如float类型的数*double类型的数,结果为double

19. Java中 char 为16位,汉字占一个char长度

20. Java 中 float double 无法进行 逻辑运算 按位操作 移位操作

你可能感兴趣的:(Java编程思想)