Thinking in java Java编程思想 操作符 操作数 副作用 优先级

        操作符,操作数,副作用:操作符作用在操作数上产生新值,如果操作符改变了操作数自身的值,被称为副作用

        优先级,( )括号搞定一切

        赋值操作符:=    这个符号作用域栈stack,,

1,基本数据类型,就是值传递,两个内存空间,存两个值

2,引用数据类型,别名现象传递 引用,两个参数存放一个引用,指向同一个 heap区。方法参数如果是对象,也是传递了引用        

        算数运算符:+,-,*,/,%  加减乘除,取模

@Testpublic

void txfloat() {

// TODO 自动生成的方法存根 int a=9; int b=7;

    DecimalFormat df=new DecimalFormat("0.00");

    System.out.println(df.format((float)a/b));

    System.out.println(df.format(a/(float)b));

    System.out.println(df.format((float)a/(float)b));

    System.out.println(df.format((float)(a/b)));

}

结果1.29,1.29,1.29,1.00.

算数运算,会自动提高到两数的最高精度,然后计算float强制转换后精度提高,运算的时候是两个float在计算。而最后一个是运算结果强制转换为float,,1——1.00

而且,在整数除法中还有注意9/5=1,,,自动去掉小数部分,而不是四舍五入。是直接去掉

    算术运算符+赋值运算符  +=,-=,*=,/=,%=,,做运算再赋值。我从来不这么写,体现不出高水平,有时候会很乱,打断点也麻烦,代码的高水平在于格式,在于思想。还有x=a*-b,jdk能识别,人阅读代码有些不合习惯,所以加括号x=a*(-b)

    自增,自减:++,--。i--,--i,i++,++i..符号在前就先对i加减在运算别的,i在前,就先运算别的,在对i加减

        关系运算符:==,!=,<,>,<=,>=,,返回布尔值 boolen

    ==,equals:==判断stack是否相等,所以,基本数据类型只在乎数值就好,引用数据类型,只是对比引用地址

    int a=1;

    int b=1;

    System.out.println(a=b); true,因为a,b两个值存在stack中,直接对比


    Integer a =new Integer ();

    Integer b =new Integer ();

    System.out.println(a=b);    false,因为a,b两个值存在heap中,a,b两个引用只是地址指向两个heap,

    equals是一个Object的方法,所有类都继承了Object。eqauls的实现默认就是 ==,所里他俩一样,区别就是,equals是个方法,可以重写,也就有了

String s1 = new String("Hello");
String s2 = new String("Hello");
 
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));


false

true;

如果是你自己写的类,请不必重写equal方法,比如person,包括身高,体重,姓名,身份证号,年龄,学历。但是两个人怎么判断是一个人,就要重写equals方法,判断姓名,身份证号相等即可

        逻辑运算符,按位运算符:或(有true得true,有1得1),且(有false得false,有0得0),非,异或(同为false,异为true,同为0,不同为1)

按位运算符:操作对象  整数 基本数据类型 对应的位(bit)

                    操作   布尔代数运算

&,&&;|,||,短路,参见:https://blog.csdn.net/Agly_Clarlie/article/details/50521888

^异或应用,两数互换:参见:https://blog.csdn.net/lambyuyu/article/details/5543289       个人不建议用,有些同学不能迅速理解代码

位移操作符:2+1  <<    >>    >>>:操作对象,二进制的位:byte short int char 都做 int处理,结果也是int,long做long处理,结果也是long

                    <<左移操作符:左侧溢出位舍去,右侧补充 0,

                    >>右移操作符:右侧溢出位社区,右侧补充符号为,整数补0,负数补1(右移之前,最高位是啥就补啥)

                    >>>无符号右移:补充 0,,,(c语言没有这个)

唯一个三元运算符:Boolean-exp?value0:value1


                    



你可能感兴趣的:(Thinking in java Java编程思想 操作符 操作数 副作用 优先级)