在牛客网上刷剑指Offer 遇到问题积累

1.与 或 非 与非 或非 && ||

与:and -> 有0出0,全1出1 例如:1 ,1–>1 1 ,0–>0 0 ,1–>0 0 ,0–>0
或:or -> 有1出1,全0出0 例如:1 ,1–>1 1 ,0–>1 0 ,1–>1 0 ,0–>0
非:not ->有1出0,有0出1 例如:1 -->0 0–>1
与非:nand ->先按与的操作,然后结果取反 例如:1 ,1–>0 1 ,0–>1 0 ,1–>1 0 ,0–>1
或非:nor ->先按或的操作,然后结果取反 例如:1 ,1–>0 1 ,0–>0 0 ,1–>0 0 ,0–>1
同或xnor ->相同为1,相异为0 例如:1 ,1–>1 1 ,0–>0 0 ,1–>0 0 ,0–>1
异或:xor ->相异为1,相同为0 例如:1 ,1–>0 1 ,0–>1 0 ,1–>1 0 ,0–>0

&,&&:(与,短路与):一样的地方就是二者执行最后的结果是一样的,但是执行的过程有区别,

对于&:无论&左边是否为false,他都会继续检验右边的boolean值。

对于&&:只要检测到左边Boolean值为false时,就会直接判断结果,不会在检验右边的值(因为"与"有一个false最后结果就是false了)

所以&&的执行效率更高,所以一般都是使用&&.

|与||之间也是同样的道理,|:无论左边是否为ture,都会检验右边 ,||:则不会。|| 的执行效率会更高

特别的
n&1 == 1;则 n为奇数;
n&1 == 0;则n 为偶数;

2.访问权限修饰符

private定义它的类体中
default(什么也不用加,并不是用 default 修饰 ,是默认)同包中的其他类,或者是在定义它的类体中
protected非同包的子类也能访问到,同包中的其他类,定义它的类体中
public公共的 相当于 没有设置 任何访问权限

3.java中为final变量赋值的三种方式

转载大佬的 点击即转

储备知识:在类的加载中,类的加载顺序我们应该都知道,静态代码块->构造代码块->构造方法

精华:当类被加载进内存的时候,这个属性只是声明了一个变量,并没有给分配内存空间,
只有当类在被实例化的时候才分配了内存空间,而这个时候又同时执行了构造方法,
 所以属性被初始化了,也就符合了当它被分配内存空间的时候就需要实例化,
 以后不在改变的条件。
1、在定义时直接赋值
public class Test {
    public final String str = "mark";
}
2、声明时不赋值,在构造方法中进行赋值
public class Test {
    public final String str;   
    public Test() {
        this.str = "mark";
    }
}
3、声明时不赋值,在构造代码块中进行赋值
public class Test {
    public final String str;
    {
        this.str = "mark";
    }
}
当你发现一个类的变量被final修饰但没被赋值,那么可以判断出它肯定会在构造函数里被赋值。
(因为倘若是set方法赋值,线程是不安全的,因为set方法可以被调用多次,而final变量只能被赋值一次)

4.被final static修饰的变量

1、在定义时直接赋值
public class Test {
    public static final String str = "mark";    
}
2、在静态代码块里面进行赋值
public class Test {
    public static final String str;
    static {
        str = "mark";
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值