• 03:Java基础语法(二)


    Java基础语法

    Java运算符

    算术运算符

    运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

    1、操作数:参与运算的数据 称为操作数。
    2、表达式:运算符和操作数的整体 称为表达式。单独的一个操作数也可以看作一个最简单的表达式。 int age = 1+1;
    3、返回值:操作数 或者是 表达式 参与 运算的结果。
    4、一元运算符:只需要一个操作数的运算符。也叫做 单目运算符。
    5、二元运算符:需要两个操作数的运算符。也叫做 双目运算符。
    6、三元运算符:需要三个操作数的运算符。也叫做 三目运算符。
    注意:参与所有运算的数据,都是操作数 或者 表达式的 返回值 参与的。


    / 和 % 的应用 [ 求随机数的千位、百位、十位、个位 ]

    public class Test {
        public static void main(String[] args) {
            // 任意四位数
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入任意四位数:");
            int num = scanner.nextInt();
            int unit = num % 10;// 个位
            int decade = num / 10 % 10; // 十位
            int hundred = num / 100 % 10;// 百位
            int Thousands = num / 1000 % 10;// 千位
            System.out.println("千位:" + Thousands + "
    百位:" + hundred + "
    十位:" + decade + "
    个位:" + unit);
        }
    }
    代码演示

     
    i++和++i的异同之处
    共同点:
    1、i++ 和 ++i 都是变量自增+1,都等价于i=i+1
    2、如果i++,++i是一条单独的语句,两者没有任何区别。
    3、i++和++i的使用仅仅针对变量。5++和++5会报错,因为5不是变量。
    不同点:
    如果i++,++i 不是一条单独的语句,他们就有很大的区别。

    赋值运算符


    符号:  =    符合赋值运算符:[Java中:+=、-=、*=、/=、%=] => 类型自动提升
    复合赋值运算符特点:
    1,生成的字节码文件要稍微小一点点(内存消耗小)。
    2,隐含一个强制类型的转换。强制转换的类型为 左边变量的类型
    * 左值 的类型 要和 右值表达式的返回值的类型 要兼容,不然会出现精度丢失。
    示例:int a,b,c;  a = b = c =3;
       int a = 3; a += 5;  => a+=5 <==> a=a+5

    比较运算符(关系运算符)


    1、>、<、>=、<= :只适用于 数值型包括 char 类型的数据。
    2、==  != 适用于 java支持的所有的数据类型。

    逻辑运算符

    参与逻辑运算的操作数必须是 boolean 类型的数据。逻辑表达式的 返回值 也是 boolean 类型。在Java中不可以写成3<x<6,应该写成x>3 & x<6





    短路与( && ) 、条件与 (  & )区别:
    &&:如果表达式左边为真,表达式右边参与运算;如果左边为假,那么右边不参与运算,直接返回整个逻辑表达式的结果为false 。
    & :表达式左边运算结果无论真假,右边都进行运算。
    * 短路与的效率往往高于逻辑与,通常使用短路与  &&

    1 int value = 1;
    2 System.out.println((1 < 2) & (value++ > 0)); // true
    3 System.out.println((1 > 2) & (value++ > 0)); // false


    短路或( || ) 、 条件或 (  | )区别:

    |: 无论左边运算结果是什么,右边参与运算;
    ||:当左边为true时,右边不参与运算;直接返回整个逻辑表达式的值 为  true

    1 int value = 1;
    2 System.out.println((1 < 2) | (value++ > 0)); // true
    3 System.out.println((1 > 2) || (value++ > 2)); // false


    异或( ^ )与或( | )的不同之处是:只有表达式左右都为true时,结果为false,当两边都为false,结果也为false

    1 // 一边为true,一边为false
    2 System.out.println((3 > 2) ^ (9 < 8)); // true
    3 // 一边为false,一边为true
    4 System.out.println((7 > 10) ^ (9 > 3)); // true
    5 // 两边都为true
    6 System.out.println((3 > 2) ^ (2 > 1)); // false
    7 // 两边都为false
    8 System.out.println((1 > 2) ^ (2 > 3)); // false

    位运算符

    解释:位运算符是直接对整数进行二进制运算


    按位与( & ):二元运算符。

    规则:低位对齐,进行按位与。 对应的位 有0则0  全1则1.
    1:可以将某个整数的某些二进制位设置为0。
    2:可以得到某一个数的制定区间的二进制表示的数据。

    按位或( | ):二元运算符。
    规则:低位对齐,进行按位或。对应的位,有1则1,全0则0

    *如果两个操作数 对应的位上没有全1 的,那么进行按位或和加的效果一致

    按位异或( ^ ):二元运算符。
    规则:对应的位上 相异为1,相同为0

    特点:一个数先后和同一个数据异或两次,结果是它自身

    异或简单加密应用

    按位取反( ~ ) :一元运算符。
    规则:所有的二进制位0--->1 1--->0
    System.out.println(~0);//-1
    移位运算符
    << 左移 :高位被移走,包括符号位。低位补0

    >> :带符号右移  :低位被移走,高位空出来的补符号位,正数补0 负数补1

    三元运算符( 条件运算符 )

    Java 中唯一的三目运算符。 需要三个操作数。可以是java 支持的任意的表达式。两个表达式的返回值的类型 需要兼容。
    格式:条件表达式 ? 表达式1 : 表达式2
    1)条件表达式为true,返回表达式1;
    2)条件表达式为false,返回表达式2;

    两值互换的几种方法:
    1、定义第三方变量进行互换

    2、数值直接运算   缺:数值过大超过int取值范围,出现强制转换,数据发生变化
    3、异或:一个数异或同一个数两次,结果还是这个数(阅读性差)

    运算符的优先级


    1:乘除取余 大于 加减。
    2:一元运算符 大于 二元运算符 的优先级。
    3:二元运算符的优先级高于三元运算符的优先级。
    4:赋值运算符优先级最低。
    5:配合小括号使用。

    random随机数

    1、Math.random();返回值是一个随机的double 值
    语句:Math.random() * (MAX-MIN) + MIN

    取整:int value = (int)(Math.random() * (MAX-MIN) + MIN);

    2、导入import java.util.Random产生随机数
    位移运算符:一条语句产生随机数:int value = (random.nextInt()>>>1)%(MAX-MIN)+MIN;

    随机数+三目运算符应用[ 求三个数的最大值 ]

     1 public class Test {
     2     public static void main(String[] args) {
     3         // 定义随机数区间
     4         final int MIN = 1, MAX = 100;
     5         Random random = new Random();
     6         int num1 = (random.nextInt() >>> 1) % (MAX - MIN) + MIN;
     7         int num2 = (random.nextInt() >>> 1) % (MAX - MIN) + MIN;
     8         int num3 = (random.nextInt() >>> 1) % (MAX - MIN) + MIN;
     9 
    10         // int num1 = (int)(Math.random()*(MAX-MIN)+MIN);
    11         // int num2 = (int)(Math.random()*(MAX-MIN)+MIN);
    12         // int num3 = (int)(Math.random()*(MAX-MIN)+MIN);
    13 
    14         int max = num1 > num2 ? num1 : num2;
    15         max = max > num3 ? max : num3;
    16         System.out.print("num1 = " + num1 + "	num2 = " + num2 + "	num3 = " + num3 + "	max=>" + max);
    17 
    18     }
    19 }
  • 相关阅读:
    《人月神话》阅读笔记01
    第二次团队冲刺第八天
    第二次团队冲刺第七天
    第二次团队冲刺第六天
    找水王续
    团队第二次冲刺第五天
    第二次团队冲刺第四天
    原码, 反码, 补码 详解
    《用户故事与敏捷方法》阅读笔记06
    《用户故事与敏捷方法》阅读笔记05
  • 原文地址:https://www.cnblogs.com/cao-yin/p/11458101.html
Copyright © 2020-2023  润新知