• 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,计算的数值并不受影响

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

  • 相关阅读:
    从源码分析 XtraBackup 的备份原理
    移动端 SDK 开发经验总结及梳理
    spring boot jar包开机自启
    在Simulink中添加VeriStand支持
    java 启动脚本
    Docker容器日志管理最佳实践
    docker 日志限制或者删除
    网盘搜索
    tuple c++
    google原版:Debugging WebAssembly with modern tools
  • 原文地址:https://www.cnblogs.com/springxian/p/13353948.html
Copyright © 2020-2023  润新知