Java学习拾遗(一)

1. 在类的成员变量中,使用 static 修饰的称作“类变量”, 其他的称作“实例变量”(对象变量)。

    实例变量允许在声明时不赋予初值,如果这样做,在类被实例化时其将有默认值 null。

    类变量允许在声明时不赋予初值,如果这样做,它将具有默认值 null。


    声明一个局部变量(包括基本类型和实例类型)时,如果不赋予初值,则该变量不具有任何默认值,并且无法在对其赋值前对其使用(编译时非法)。

    对一个实例变量赋初值为 null 与不对其赋初值是不同的概念。最大的区别在于,在上一行所描述的情况下,如果对一个局部实例变量赋初值 null 则可以在后面使用它。但不可以调用其引用,会抛出空指针异常。

    例子:

int foo(){
    String s;
    if(s == null)
        return 1;
    else 
        return 0;
}

这段代码是无法通过编译的,因为对 s 未赋初值,不可以使用它。

int foo(){
    String s = null;
    if(s == null)
        return 1;
    else 
        return 0;
}

上述这段代码则可以通过编译,并且正常运行。


int foo(){
    String s = null;
    if(s.length() == 0)
        return 1;
    else 
        return 0;
}
上述这段代码则将抛出空指针异常。



2. Java中,不带任何字母后缀的数字,默认类型为 double。


3. 参数传递中,基本类型总是传值,实例类型总是传引用。需要注意的是,如果在方法中,形参的引用改变了,那么它就与实参切断了联系。

public class Main {
    public static void main(String[] args) {
        SubClass subClass = new SubClass(1);
        foo(subClass);
        System.out.println(subClass.num);
    }

    static void foo(SubClass s){
        s = new SubClass(2);
        s.num = 2;
    }
}

class SubClass{
    int num;

    SubClass(int i){
        num = i;
    }
}

上述代码中,运行结果为 1。因为形参的引用改变后,它的任何修改都与实参无法发生影响。但在引用改变前做的修改都将生效。


4. 在二元运算中,如果操作数都为整型,只要其中有一个为long型,则表达式结果为long型,否则都为int型。包括其中有1或2个 char、byte、short、int参与的运算。例如(byte + byte)其结果也为int型。

    如果操作数有浮点型,则如果有double,结果为 double 类型。否则都为 float 类型。


5. 字符串的(连续) “+” 号表达式中,如果第一个操作数为字符串类型,则后续所有操作数都将独立作为字符串类型操作。而如果其中字符串类型的操作数不在第一个,在其之前的操作数将按照其本身类型进行加法运算和类型转换。

例如:1 + 2 + 3 + “hello”,其结果为“6hello”

而:“hello” + 1 + 2 + 3,其结果为“hello123”

所以,为了避免以后出现类似的错误,仅进行字符串拼接时,最好在最前面加上空字符串操作符:

“” + 1 + 2 + 3 + “hello”  ---->   “123hello”


6. 对象的 equals() 都继承自 Object 类,在 Object 类中,equals() 方法默认实现为 “this == object”,比较的是两个变量引用的是否为同一个对象。所以在未改写 equals() 的对象调用此方法时需注意。


7. 逻辑表达式的 “短路”特性。一个复杂逻辑表达式中,按优先级高到低,如果某个逻辑值可以代表整个表达式的结果时,则后续表达式将不被求值,即不会被执行。


8. 移位运算符:<<、>>、>>>

<<:算数左移,低位以0补充,相当于乘2

>>:算数右移,高位以原来的高位补充,相当于除以2取商

>>>:逻辑右移 ,高位以0补充

上述的算数,是以补码形式进行计算的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值