zoukankan      html  css  js  c++  java
  • 尚学堂 JAVA Day3 概念总结

    java中的运算符

    1、算术运算符 + - * / % Arithmetic operators
    + 运算符有三种身份 Additive Operator
    1)加法:如 a + b;
    2)连接:如 “北京” + 2008 ---》 北京2008
    3)正号:如 +a; int a = 5, a = +5;

    - 运算符有两种身份 Subtraction Operator

    1)减法:如 a - b;

    2)负号:如 -a; int a = 5, a = -5;

    * 运算法有一种身份 Multiplication Operator
    乘法 a * b;

    / 运算符有一种身份 Division Operator
    除法 a / b;

    注意:当/的左右两边都为整数时,结果也将为整数,即使真实结果是小数。

    % 运算法有一种身份 Remainder Operator
    取模运算。
    如:a % b, 表示a/b然后取余数。

    练习:请使用/ 和 % 运算符,将数字1234的各位数字分离出来。

     1 public class Test1 {
     2     public static void main(String[] args) {
     3 
     4         int a = 1234;
     5         int g;
     6         int s;
     7         int b;
     8         int q;
     9 
    10         q = a / 1000;
    11         System.out.println("1234的千位上是:" + q);
    12 
    13         b = (a % 1000) / 100;
    14         System.out.println("1234的百位上是:" + b);
    15         
    16         s = (a % 1200) / 10;
    17         System.out.println("1234的十位上是:" + s);
    18 
    19         g = (a % 1230);
    20         System.out.println("1234的个位上是:" + g);
    21 
    22     }
    23 }
    View Code

    2、赋值运算符 = Asssignment Operators

    格式:
    变量 = 表达式;
    作用:
    将等号右边表达式的值赋给左边的变量存放。
    如:int a = 5 * 6 +3;

    3、自增、自减运算符 ++、 -- increment operatordecrement operator
    格式:
    变量++ 或 ++变量;
    变量-- 或 --变量;
    前加: ++a; 规则:先增加后使用(赋值)
    后加: a++; 规则:先使用后增加
    注意:无论是前加还是后加,a的值都会增加1

    如:a = 5;
    b = a++;
    结果为:
    b = 5, a = 6;

    又如:
    a = 5;
    b = ++a;
    结果为:
    b = 6, a = 6;

    练习1:a = 2;
    a = a++;
    结果为:
    a = 2;
    其运算过程为:
    1) 将a中的内容取出,放在临时的存储单元中;
    2) a本身的存储单元内容2自增1变成3;
    3) 临时存储单元的值2,存入变量a的存储单元中,正号覆盖了原来的数值3;
    所以a = 2;
    练习2: a = 2,
    b = a++ + a++ + a++;
    其结果为:
    a = 5;
    b = 9;
    其运算过程为:
    1) 第一个a++运算,将a取出为2;然后a+1=3;
    2) 计算第一个 + 双目运算符,左边为2 ,右边为3,结果为5;
    3) 此时a = 3;重复第1) 2)步的操作,得到a = 5,b = 9.

     1 public class Test2 {
     2     public static void main(String[] args) {
     3 
     4         int a = 2;
     5         a = a++;
     6         System.out.println("a = " + a);
     7 
     8 
     9         int c = 2;
    10         int b;
    11         b = c++ + c++ + c++;
    12         System.out.println("c = " + c + "
    " + "b = " + b);
    13         
    14         
    15     }
    16 }
    View Code

    4、关系运算符 >, <, >=, <=, ==, !=, instanceof ----- Relation operators

    如:boolean flag = 'a' instanceof char;

     1 public class OpTest1 {
     2     public static void main(String[] args) {
     3         int b = 200000;
     4         int a = 300;
     5         boolean bFlag;
     6         bFlag =  b > a;
     7         System.out.println(b + "大于" + a + "?
    " + bFlag);
     8 
     9         bFlag = b < a;
    10         System.out.println(b + "小于" + a +"? 
    " + bFlag);
    11 
    12         bFlag = (b >= a);
    13         System.out.println(b + "大于等于" + a + "?
    " + bFlag);
    14 
    15         bFlag = (b <= a);
    16         System.out.println(b + "小于等于" + a + "?
    " + bFlag);
    17 
    18         bFlag = (b == a);
    19         System.out.println(b + "等于" + a + "?
    " + bFlag);
    20 
    21         bFlag = (b !=a );
    22         System.out.println(b + "不等于" + a + "?
    " + bFlag);
    23     }
    24 }
    View Code

    5、逻辑运算符:&与、|或、!非、&&短路与、||短路非 ----- Logic operators

    1) &与
    格式: 表达式1 & 表达式2
    规则:当&符号两边的表达式均为true时,与运算表达式的值为true;反之为false.
    2) |或
    格式:表达式1 | 表达式2
    规则:当|符号两边的表达式有一个为true时,|运算表达式的值为true;反之为false.
    3) !运算
    格式:!表达式
    规则:当表达式为true是,费运算结果为false;反之为true.
    4) && 短路与
    格式: 表达式1 && 表达式2
    规则:当&&符号的两边表达式值都为true时,短路与的值为true;反之为false.
    注意:当短路与的表达式1为false时,表达式2中的操作将不再执行。因此提高了代码的运行效率。
    5)|| 短路或
    格式: 表达式1 || 表达式2
    规则:当短路或符号两边的表达式有一个为false时,短路或的值为false;反之为true.
    注意:当短路或的表达式1为true时,短路或将直接被赋值为true,表达式2中的代码将不再执行。
    从而提高了代码的运行效率。

     1 public class LogicOp {
     2     public static void main(String[] args) {
     3 
     4         /*    
     5             逻辑运算符:&与、|或、!非、&&短路与、||短路非
     6                 1) &与
     7                     格式: 表达式1 & 表达式2
     8                     规则:当&符号两边的表达式均为true时,与运算表达式的值为true;反之为false.
     9                 2) |或
    10                     格式:表达式1 | 表达式2
    11                     规则:当|符号两边的表达式有一个为true时,|运算表达式的值为true;反之为false.
    12                 3) !运算
    13                     格式:!表达式
    14                     规则:当表达式为true是,费运算结果为false;反之为true.
    15                 4) && 短路与
    16                     格式: 表达式1 && 表达式2
    17                     规则:当&&符号的两边表达式值都为true时,短路与的值为true;反之为false.
    18                 注意:当短路与的表达式1为false时,表达式2中的操作将不再执行。因此提高了代码的运行效率。
    19                 5)|| 短路或
    20                     格式: 表达式1 || 表达式2
    21                     规则:当短路或符号两边的表达式有一个为false时,短路或的值为false;反之为true.
    22                 注意:当短路或的表达式1为true时,短路或将直接被赋值为true,表达式2中的代码将不再执行。
    23                 从而提高了代码的运行效率。
    24 
    25         */
    26 
    27         int a = 4;
    28         int b = 6;
    29         System.out.println("a = " + a);
    30         //boolean bl = (6 < a) & (6 > ++a);        // &运算符
    31         //boolean bl = (6 < a) | (6 == ++a);    // |运算符
    32         //boolean bl = !(6 > a);                // !运算符
    33         //boolean bl = (6 < a) && (6 > ++a);    // &&短路与运算符
    34         boolean bl =  (6 < a) || (6 > ++a);        // ||短路或运算符
    35 
    36         System.out.println("b1 = " + bl);
    37         System.out.println("a = " + a);
    38 
    39     }
    40 }
    View Code

    6、三目运算符 Ternary Operator

    格式:
    表达式0 = 表达式1 ? 表达式2 :表达式3
    规则:
    当表达式1的值为true时,表达式0的值为表达式2的值,否则,表达式0等于表达式3的值。

    练习1:通过三目运算符,使用一个语句比较任意三个整数的大小,并将最大值赋给三目运算符。
    练习2:写一个比较两个数大小的方法,并用该方法标胶任意三个整数的大小。

     1 public class TernaryOp {
     2     
     3     /*
     4         三目运算符 Ternary Operator
     5         格式:
     6             表达式0 = 表达式1 ? 表达式2 :表达式3
     7         规则:
     8             当表达式1的值为true时,表达式0的值为表达式2的值,否则,表达式0等于表达式3的值。
     9     */
    10 
    11     public static void main(String[] args) {
    12 
    13         int a = 8;
    14         int b = 8887;
    15         int c = 8392884;
    16 
    17         //练习1的实现方法
    18         int max = (a > b ? a : b) > c ? (a > b ? a : b) : c;
    19         System.out.println(a + "," + b +","+ c + "中的较大者是:" + max);
    20 
    21         //练习2的实现方法
    22         int middleOne = maxNum(a,b);
    23         int theMax = maxNum(middleOne,c);
    24         System.out.println(a + "," + b +","+ c + "中的较大者是:" + max);
    25          
    26 
    27     }
    28 
    29     public static int maxNum(int x, int y) {
    30 
    31         int z = x > y ? x : y;
    32         return z;
    33     
    34     } 
    35 
    36 }
    View Code

    7、扩展赋值运算符 +=, -=, *=, /=, %= Extended Assignment operators

     1 public class AssignOp {
     2     public static void main(String[] args) {
     3         
     4         /*    
     5             扩展的赋值运算符 Extended Assignment Operators
     6             +=    -=    *=    /=    %=
     7             作用:可以自动对数据类型进行转换后参与计算。
     8         */
     9 
    10         byte b = 127;
    11         short s = 489;
    12         int a = 10000;
    13         float f = 3.14f;
    14 
    15         b += 1;
    16         //b = b + 1;     //将抛出异常 “不兼容的类型: 从int转换到byte可能会有损失”     因为这里试图将int型数据赋值给byte类型
    17         System.out.println("byte b 用 += 赋值运算符后 b = " + b);
    18 
    19         s -= 30;
    20         //s = s - 30;     //将抛出异常 "不兼容的类型: 从int转换到short可能会有损失”     因为这里试图将int型数据赋值给short类型
    21         System.out.println("short s 用 -= 赋值运算符后 s = " + s);
    22 
    23         a /= 1.0;
    24         System.out.println("int a 用 /= 赋值运算符后 a = " + a);
    25 
    26         f *= 2.0;
    27         //f = f * 2.0; //     将抛出异常 “不兼容的类型: 从double转换到float可能会有损失” 因为这里试图将double类型数据赋值给float类型
    28         System.out.println("float f 用 *= 赋值运算符后 f = " + f);
    29 
    30     }
    31 }
    View Code

    8、数据类型的转换

    1) 自动转换
    小类型数据赋值给大类型时,将自动转换为大类型数据;
    使用扩展复制运算符时,也会将等号右边的数据进行自动转换。
    2) 强制转换
    大类型数据赋值给小类型是,需要对大类型数据进行强制转换。
    如:
    byte b = 120;
    int a = b; ---自动转换

    int a = 120;
    byte b = (byte)a; ---强制转换才行,否则将在编译时抛出损失精度异常

    9、在java中,表达式的数据类型如何确定?
    1) 表达式中有double数据时,表达式为double类型;
    2) 表达式中没有double,但是有float时,表达式为float类型;
    3) 表达式中没有double,也没有float, 但是有long时,表达式为long类型;
    4) 表达式中没有double, float,和 long时, 表达式为int类型。


    10、Math类
    Math.abs();
    Math.sqrt();
    Math.pow(double a, double b);
    Math.round(double a);
    Math.ceil(double a);
    Math.floor(double a);
    Math.random();

    练习1、产生一个[-100,100]之间的随机整数;
    练习2、产生一个[321,9999]之间的随机整数;
    练习3、产生一个四舍五入,保留两位小数的随机型数据,其范围是[0, 100]。

     1 public class HomeWork1 {
     2     /*
     3          产生一个 [-100, 100] 范围的随机整数。
     4 
     5          注意:random产生的随机数是 [0,1) 一个左闭右开区间
     6     */
     7 
     8     public static void main(String[] args) {
     9 
    10         int temp = 0;
    11         
    12         temp += Math.floor( 201 * Math.random() - 100 );
    13         
    14         System.out.println("temp = " + temp);
    15         
    16     }
    17 
    18 }
    View Code
     1 public class HomeWork2 {
     2     
     3     /*
     4         练习2:    产生一个 [321,   9999] 范围的随机整数。
     5     */
     6     
     7     public static void main(String[] args) {
     8          int temp = 0;
     9          temp += Math.floor( Math.random() * 10321 - 321 );
    10          System.out.println("temp = " + temp);
    11     }
    12 
    13 }
    View Code
     1 public class HomeWork3 {
     2     /*
     3         练习3:产生一个四舍五入,保留两位小数的随机型的double数, 其范围是[0, 100] 。
     4     */
     5         
     6     public static void main(String[] args) {
     7 
     8         double temp = 0;
     9         temp += Math.round(  10000 * Math.random()  ) ;
    10         temp /= 100;
    11 
    12         System.out.println("temp = " + temp);
    13 
    14     }
    15 }
    View Code

    练习三有一个疑问:

    当随机数取出后,当两位小数的末尾为0时,最后一位0没有显示输出。

    如:29.20会显示成29.2,这是为什么?

  • 相关阅读:
    SpringBoot(十):SpringBoot的简单事务管理
    SpringBoot(九):SpringBoot集成Mybatis
    独立式智能扫码插座
    STC-51开发板-单片机控制数码管&按键&点阵综合操作
    单片机定时器与数码管静态显示
    半导体器件
    电路模型与规律
    单片机-引脚并行口结构讲解
    单片机-基础知识,存储原理,引脚简介———(第一个小程序)
    C语言-综合知识点
  • 原文地址:https://www.cnblogs.com/nora-xie/p/5641426.html
Copyright © 2011-2022 走看看