7.21Java入门--->第二节

1、位运算符

左移 有符号,无符号

右移 有符号,无符号

与  &  相乘

或  |  相加

异或  不同时为1

按位取反  ~  

整数的源码和补码相同,负数的补码是源码按位取反+1,符号位不变

2、字符串

String s1="123"+100

输出结果为:123100 对字符串进行的是拼接操作(字符串本身不可变,JVM进行复制操作)

package com.xian.dao;

public class Test {
    public static void main(String[] args) {
        int i=1;
        String s1="sdsd";
        String s2=s1+"1212";
//        System.out.println(s2);
        
        s2=s2+"666";
//        System.out.println(s2);

        char c ='你';
        s2=s2+c;
//        System.out.println(s2);

        double d1 =1.3232;
        s2=s2+d1;
//        System.out.println(s2);

        boolean b =false;
        System.out.println(s2);

        String s4;
        char c2='你';
        s4=""+100+c2;
        //System.out.println(s4);

    }
}
运行结果:sdsd1212666你1.3232

 

前面部分一直在插入,s4开始代码执行方式是从前向后的,即,前面是字符串自动转型字符串,前面是int自动转型int,后面字符串再用整形拼接字符串

对于字符串进行改变不建议使用String,应该使用StringBuffer或Stringbuilder

3、运算符

1.算数运算符   +、-、*、/、%、++、--

取余(牛客网 Java错题)

package com.xian.dao;

public class Test001 {
    public static void main(String[] args) {
        int x=-5;
        int y=-12;
        System.out.println(y%x);
    }
}
运行结果:-2

当余数为负数时负号忽略不计,当被余数是负数时结果需要包含负号(取决于前面那个数)

i++和++i  先逻辑后自增,先自增后逻辑

2.赋值运算符  =、+=、-=、/=、*=、%=(i+=1; //  i=i+1)

3.比较运算符  >、<、>=、<=、!=、==

4.逻辑运算符  &&(短路与)、||、!、&(逻辑与)、|、异或(不同为真,相同为假)

短路与:见名知义 就是短(if(A==B && B==G))如果A!=B他就不去算了,短路或同理

5.位运算符   >>、<<、>>>、<<<

无符号左移一位相当于乘以二,两位=*4,三位=*8 (原数×2的N次方)

无符号右移一位相当于除以二,两位=除4,三位=除8

public static void main(String[] args) {
    int i=2;
    i=i<<2;//1,2,3,4
    System.out.println(i);
}

结果为:8

6.三目运算符  (1>2)?是的:不是 (条件为真执行“是的”,条件为假执行“不是”)

4、思考

不借助第三个变量,交换两个变量

 public static void main(String[] args) {
        int x=5;
        int y=6;
        x=x^y;
        y=x^y;
        x=x^y;
        System.out.println(x);
        System.out.println(y);

    }
int a=10,b=12;  //a=1010^b=1100;
a=a^b;    //a=0110^b=1100;
b=a^b;    //a=0110^b=1010;
a=a^b;    //a=1100=12;b=1010;

 5、运算符的优先级

第一优先级  ()、{ }、[ ]、,、;

第二优先级   ++、--、~、!

第三优先级  *、/、%  (第三应该是(type)强制转换数据类型)

第四优先级  +、-

第五优先级  >>、<<

第六优先级  >、<、>=、<=

第七优先级  == 、!=

第八优先级  &、|、!

第九优先级  三目运算符

第十优先级  +=、-=、*=、/=

总结:关于强制数据类型转换,他的优先级可以说是非常高

short x=2;
    x=(short)8*x*1.23;

由于强转优先级问题,只强转了8,计算的数值并不受影响

老师,我举报,他影响我学习

 

posted @ 2020-07-21 15:59  Spring_Xian  阅读(166)  评论(0编辑  收藏  举报