美文网首页大数据学习
2020-07-26 Java基础学习004

2020-07-26 Java基础学习004

作者: ryankm | 来源:发表于2020-07-26 23:24 被阅读0次

内容提前看

  1. String类中的split特殊字符大坑
  2. 逻辑运算符,移位
  3. 三目运算
  4. InteliJ IDEA快捷键

一、String中的大坑:split与正则的特殊符号转义

扩展:注意所有存在匹配的地方都要转义正则特殊符
  1. 如果字符串中用"."或"|"作为分隔,必须进行转义,如:String.split("\.")或String.split("\|");,这样才可以正确的分开,如果用String.split(".")是取不到任何数据的;* \是正则表达式的一个转义 *
  2. 如果在一个字符串中有多个分隔符,可以用“|”作为连字符,如:"a = 1 and b = 2 or c=3", 做法String.split("and|or");
    String str = "abc.124";
    String[] strs = str.split("\\.");
    System.out.println(strs[0] + "\t" + strs[1]);
            
    str = "693483738|直角杯350ml|19.8";
    String[] goodsInfo = str.split("\\|");
    System.out.print("条码:" + goodsInfo[0] + "\t,品名:" + goodsInfo[1] + "\t,单价:" + goodsInfo[2]);
        
    str = "693483738,直角杯350ml:19.8";
    String[] goodsInfo2 = str.split(",|:");
    System.out.print("\n条码:" + goodsInfo2[0] + "\t,品名:" + goodsInfo2[1] + "\t,单价:" + goodsInfo2[2]);        

执行:


abc 124
条码:693483738 ,品名:直角杯350ml ,单价:19.8
条码:693483738 ,品名:直角杯350ml ,单价:19.8


二、异或运算--注意规则 :左右相同则为false,左右不同则为true

^ : 当符号左右都为一样时,则为false, 如果左右两边不一样时,则为true

true ^ true: false;

true^false: true;

false^true:true;

false^false:false;

异或的应用:交换两个值

      // 交换
      a ^= b;
      b ^= a;
      a ^= b;

原理: a=ab:10011011=0010

​ b=ba:10110010=1001

​ a=ab:00101001=1011

非布尔型参与的逻辑运算符

当符号左右不是布尔型时,系统会将非布尔值转为二进制后再按位运算。

&运算:

​ 0000 1010 10

​ 0000 1000 8


​ 0000 1000:结果:8

|运算:

​ 0000 1010 10

​ 0000 1000 8


​ 0000 1010:结果:10

^运算:

​ 0000 1010 10

​ 0000 1000 8


​ 0000 0010:结果:2

注意:此运算当遇到较大的数值时会出错

双与、双或逻辑运算符:&&, || 带短路的运算

移位运算

左移:相当*2 <<

右移:相当于除以2

针对二进制位进行操作的运算符:(连接整数)

​ << : 左移: 空位补0,高位丢弃

​ >> 右移: 空位补最高位.

​ >>> : 无符号右移 空位都补0

​ 左移几位相当于乘以2的几次方

​ 右移几位相当于除以2的几次方

​ 7<<2 28

​ 7: 00000000 00000000 00000000 00000111

​ <<2 00000000 00000000 00000000 00011100 28

​ 15 >>2 3

​ 15: 00000000 00000000 00000000 00001111

​ >>2 00000000 00000000 00000000 00000011 3

​ 练习:

​ 14 <<3 112 14*8

​ 13>>4 0

​ int a = +3;

​ int b = 3+4;


三、InteliJ IDEA快捷键

  1. 删除一行:ctrl+X(删除选定的内容) ctrl+Y
  2. 复制一行:ctrl+D
  3. 上插一行:ctrl+alt+回车
  4. 下插一行:ctrl+shift+回车
  5. 注释单行:ctrl+/
  6. 复制上一个使用的类:alt+/
  7. 格式化代码:ctrl+alt+L
  8. 上移下移:alt+shift+上下方向键
  9. 快速查询:shift
  10. 简写:psvm->入口方法 sout
  11. 加断点:ctrl+f8
  12. 调试:shift+f9
    • 步入:F7
    • 步过:F8
    • 步出:shift + F8
    • 运行到光标处:alt+F9
  13. 运行:ctrl+shift+f10
  14. 快捷代码:
    • 判断空或非空:变量名.null 非空:变量名.notnull 或.nn
    • var声明:new 类名.var
    • try:需要语句尾.try
    • for: 变量后.for|fori
    • 类型强转:变量.cast
    • if语句:逻辑表达式.if
    • return:返回变量.return

四、练习三目运算

统计字符出现次数

public class CharacterCountDemo {
    /**
     * 统计大写,小写,数字出现的次数
     *
     * @param args
     */
    public static void main(String[] args) {
        String str = "IEWUReiur87743";
        //char[] chs = str.toCharArray();
        byte upCnt = 0;
        byte lowerCnt = 0;
        byte digtCnt = 0;
        for (int i = 0; i < str.length(); i++) {
            //大写:65-90  小写:97-122 数字:0-9
            char c = str.charAt(i);
            byte result = (c >= 65 && c <= 90) ? upCnt++ : (c >= 97 && c <= 122)
                    ? lowerCnt++ : (c >= '0' && c <= '9') ? digtCnt++ : 0;
            //if (result == 0) System.out.println("未找到任何大写小写以及数字。");
        }
        System.out.println("原字符串是:" + str);
        System.out.println("其中大写字母有:" + upCnt + "个,小写字母有:" + lowerCnt  + "个,数字有:" + digtCnt +"个");
    }
}

结果:


原字符串是:IEWUReiur87743
其中大写字母有:5个,小写字母有:4个,数字有:0个

补充:Scanner的小bug

当nextLine放在next后使用时,还没有输入就自动路过

原因解析
当将nextLine放在next后面使用时,由于前面的next结束输入的Enter,此时nextLine会误将之前的next结束作为它的输入,自动完成。

**解决方案:**
加一个空的nextLine空接收一下上次的Enter键就可以了。

相关文章

网友评论

    本文标题:2020-07-26 Java基础学习004

    本文链接:https://www.haomeiwen.com/subject/hpjnlktx.html