• 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 }
  • 相关阅读:
    IIS7中的几种身份鉴别方式(一)Basic身份验证
    IIS7中的几种身份鉴别方式(二)集成身份验证
    java集合
    SharePoint 2010中welcome page的设置细节
    SharePoint中使用Linq出现未将对象引用到实例化的解决方法
    SharePoint 2010中关于An error was encountered while retrieving the user profile的处理方式记录
    The Need for an Architectural Body of Knowledge
    The Softer Side of the Architect
    Event Receivers 学习小结
    使用SmtpClient发送带图片的邮件的代码实现
  • 原文地址:https://www.cnblogs.com/cao-yin/p/11458101.html
Copyright © 2020-2023  润新知