程序员成长日记之(一)从渣渣到菜鸡

day_03《Think in Java》读书笔记(操作符)

在最底层,Java中的数据是通过使用操作符来操作的

3.1 更简单的打印语句
多使用类库可以省去很多代码

3.2 使用Java操作符
基础中的基础,可以参考网上Java SE面试题针对性的提升
3.2 优先级
“+”需要考虑上下文环境,如果String “+”(其他类型),会尝试将其他类型转为String;
3.4 赋值

public class A {
    int a;
}
class B{
    public static void main(String[] args) {
        A x=new A();
        A y=new A();
        x.a=5;
        y.a=0;
        System.out.println(x.a+"\t"+y.a);
        x=y;//如果改为x.a=y.a;第三行结果为7 0
        System.out.println(x.a+"\t"+y.a);
        x.a=7;
        System.out.println(x.a+"\t"+y.a);
    }
}
//5 0
//0	0
//7	7
//x和y包含相同的引用,x=y时,将值为5的对象覆盖,被“垃圾回收”;
//别名现象
3.4.1 方法调用中的别名问题
class B {
	char b;
}
public class A{
    static void a(B y){
        y.b='z';
    }
    public static void main(String[] args) {
        B x=new B();
        x.b='h';
        System.out.println(x.b);
        a(x);
        System.out.println(x.b);
    }
}
//h
//z

3.5算术运算符
➕=,➖=
Random类和其方法的使用
3.5.1 一元加、减操作符
一元减号用于转变数据;
一元加号将较小类型的操作数提升为int类型;

3.6 自增自减
前缀式:++a、–a 先自增,再运算
后缀式:a++、a-- 先运算,再自增

int a = 0;
for (int i = 0; i < 99; i++) {
	a = a ++;
}
System.out.println(a);
//0
int b = 0;
for (int i = 0; i < 99; i++) {
	b = ++ b;
}
System.out.println(b);
//99
Integer a = 0;
int b = 0;
for (int i = 0; i < 99; i++) {
	a = a ++;
	b = a ++;
}
System.out.println(a);
System.out.println(b);
//99
//98

感谢IT云清的面试题,关注他!!!

3.7 关系操作符
等于和不等于适用于所有基本数据类型,其他不适用于boolean;
3.7.1 测试对象的等价性
==、!=适用于所有对象;结果为布尔值;
使用equals()方法比较两个对象实际内容是否相同;不适用与基本类型;

3.8 逻辑操作符
与&&、或||、非!
在应该使用String类型的地方使用了布尔值,布尔值会自动转换成适当的文本形式;
3.8.1 短路
&是java中的位逻辑运算:
例如:2&3=2;
2的二进制为10 ;3的二进制为11 ; 逻辑&之后为10
&&是boolean的逻辑运算
if((1> 2)&&(3> 1) )
表示如果两个条件都成立则执行之后的逻辑;
| 逻辑或
A|B,会对A, B都进行判断
||短路或
A||B,只有当A为假的时候才会对B进行判断。若A为真,则不继续对B进行判断。

3.9 直接常量
3.9.1 指数计数法

3.10 按位操作符

3.11 移位操作符

3.12 三元操作符
boolean ? 表达式1 : 表达式2
如果boolean为真,计算1,如果为假,计算2;
3.13 字符串操作符+和+=
3.14 操作符长犯错误
3.15 类型转换
类型转换(cast)
窄化转换:长转短;显式转换:int a= (int) 0.0;
拓展转换:短转长;隐式转换:float a= 5;
boolean不能转换,其他基本类型可以任意相互转换;
对象可以在其所属类族之间进型类型转换;
3.15.1 截尾和舍入

public class A{
    public static void main(String[] args) {
        double da=0.9d,db=0.1d;
        float fa=0.9f,fb=0.1f;
        System.out.println((int)da+"\t"+(int)db);
        System.out.println((int)fa+"\t"+(int)fb);
    }
}
//窄化操作时,自动执行截尾操作,输出结果为:
//0    0
//0    0
public class B{
    public static void main(String[] args) {
        double da=0.9d,db=0.1d;
        float fa=0.9f,fb=0.1f;
        System.out.println(Math.round(da)+"\t"+Math.round(db));
        System.out.println(Math.round(fa)+"\t"+Math.round(fb));
    }
}
//使用Math.round();方法可以执行舍入操作,是出结果为:
//1    0
//1    0

3.15.2 提升
在运运算过程中:表达式中出现对大的数据类型决定了最终结果的数据类型,如:long c = (int)a + (long)b;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值