• 5、运算符


    Java中的运算符分类:

    5.1 算术运算符

     

    5.1.1算术算符

    在Java中,使用算术运算符+、-、*、/、%表示加、减、乘、除、求余运算。

    注意:当运算/运算时,两个都是整数是,表示整数除法,否则表示浮点除法。

    两个数进行算术 运算时,结果向高字节数据类型隐式转换

     

    示例:

    步骤1:在Demo010项目中的com.zjk.type包中创建Arithmetic类

    源码:

    package com.zjk.type;

    /**

    *

    *@类名 Arithmetic

    *@日期 20151128日下午6:59:47

    *@作者 zjkorder

    *@版本 v1.0

    *@描述    

    *

    * 算术运算符

    * main方法所在类

    */

    public class Arithmetic {

        

        /**

         * 主方法

         * @Title: main

         * @Description: TODO(这里用一句话描述这个方法的作用)

         * @param @param args 设定文件

         * @return void

         * @throws

         *

         */

        public static void main(String[] args) {

            

            int a = 7; //声明并赋值一个整型

            

            int b = 2; // 声明并赋值一个整数

            

            double c = 2.0;// 声明并赋值一个浮点数

            

            int d = a*b; //两个整数相乘的结果为整数

            

            int e = a/b; //两个整数相除的结果为整数

            

    //        int g = a*c;

            

    //        int f = a/c;// 错误:Type mismatch: cannot convert from double to int. 原因:两个进行算术只要其中一个为浮点数,其结果为浮点数

            

    //        int h = 2.8%2;//错误:Type mismatch: cannot convert from double to int

            

            double h = 2.8%2; //浮点数的取余运算时通过的

     

            System.out.println(h);//原因:浮点数取余运算,存在精度丢失

            

        }

     

    }

     

    5.1.2数据类型之间的转换

     

    在程序运行时,经常需要将一种数值类型转换为另一种数值类型。数值之间的合法转化关系(自动转化):

     

    注释: 黑色箭头表示无信息丢失的转换

    灰色箭头表示可能有精度损失的转换

    低字节向高字节自动转换,不存在精度丢失。

    相同字节大小的来个数据类型转换,有可能存在精度丢失。

    5.1.3强制数据类型转换

     

    数据类型从低字节向高字节转换是 自动转换,当高字节向低字节转换是需要强制转换。

    强制类型转换:

    double d3 = 10.9879786586587;

            float f3 = (float)d3; //double类型转换为float

     

    扩展技巧: 想要取一个浮点数最近的整数?

    double d = 9.98;

        int i = (int)Math.round(d);//Math.round();四舍五入

     

    示例:

    步骤1在Demo010项目中的com.zjk.type包中创建Convert类

    源码:

    package com.zjk.type;

    /**

    *

    *@类名 Convert

    *@日期 20151128日下午7:49:08

    *@作者 zjkorder

    *@版本 v1.0

    *@描述    

    * 数据类型之间转换

    * main方法所在类

    */

    public class Convert {

          

        

        /**

         * 主方法

         * @Title: main

         * @Description: TODO(这里用一句话描述这个方法的作用)

         * @param @param args 设定文件

         * @return void

         * @throws

         *

         */

        public static void main(String[] args) {

            

            byte b1 = 1; //声明赋值字节类型的整数a

            

            short s1 = b1; //正确,byte 可以自动转换为short

            

     

            char c1 = 'a';//声明一字符型

            

            int i1 = c1;//正确,字符型可以自动转换为int

                    

            int i2 = s1; // 正确,short 可以自动转化为 int

            

            long l1 = i2;// 正确 int可以自动转化为long

            

            double d1 = i2;// 正确 int可以自动转化为double

            

            System.out.println("不存在精度丢失的自动转换");

            System.out.println("转换关系/数据类型 ");

            System.out.println("a-->char "+c1);

            System.out.println("char-->int "+i1);

            System.out.println("1-->byte "+b1);

            System.out.println("byte-->short "+s1);    

            System.out.println("short-->int "+i2);

            System.out.println("int-->long "+l1);

            System.out.println("int-->double "+d1);

              

            

            int i3 = 2_147_483_647;//一个int类型数据的最大值

            

            float f1= i3; //存在精度丢失

            

            long l2 = 9_223_372_036_854_775_807L;//long 类型的最大值

            

            float f2 = l2;//存在 精度丢失

            

            double d2 = l2;//存在精度丢失

            

            System.out.println("存在精度丢失的自动转换");

            System.out.println(" 转换关系/数据类型 ");

            System.out.println(" 2_147_483_647-->int "+i3);

            System.out.println(" int-->float "+f1);

            System.out.println("9_223_372_036_854_775_807L-->long "+l2);

            System.out.println(" long-->float "+f1);

            System.out.println(" long-->double "+f1);

              

            

            double d3 = 10.9879786586587;

            float f3 = (float)d3; //double类型转换为float

            int i4 = (int) f3; //float 类型强制转换为int 类型

              

          

              

            

            System.out.println("强制转化");

            

            System.out.println("转换关系/数据类型 ");

            System.out.println("10.9879786586587-->double "+d3);

            System.out.println("double-->float "+f3);

            System.out.println("float-->int "+i4);

            

            

        }

     

    }

     

    5.14数据类型转换精度丢失原理

     

    在CUP中 数据运算主要是在寄存器中运行的,而计算机的寄存器的空间的相当有限的,所以程序语言规定数据类型的大小,所以每一个数据类型都有自己的字节大小:

    高字节向低字节转换:

     

    后四位为小数部分

    前四位为整数部分

     

    5.2自增运算符与自减运算符

     

    1:n++运算符,先返回值,再加加:

    2:++n运算符,先加加,再返回值:

    3:n---运算符,先返回值,再减减:

    4:--n运算符,先减减,再返回值

     

    示例:

    步骤1在Demo010项目中的com.zjk.type包中创建IncrementAndSelfReduction

    源码:

    package com.zjk.type;

    /**

    *

    *@类名 IncrementAndSelfReduction

    *@日期 20151128日下午9:15:52

    *@作者 zjkorder

    *@版本 v1.0

    *@描述    

    * 自增自减运算

    * main方法所在类

    */

    public class IncrementAndSelfReduction {

     

        /**

         * 主方法

         * @Title: main

         * @Description: TODO(这里用一句话描述这个方法的作用)

         * @param @param args 设定文件

         * @return void

         * @throws

         *

         */

        public static void main(String[] args) {

            int i = 1;

            System.out.println("i "+i);

            System.out.println("i++ "+(i++));

            System.out.println("i "+i);

            System.out.println("++i "+(++i));

            System.out.println("i "+i);

            System.out.println("i-- "+(i--));

            System.out.println("i "+i);

            System.out.println("--i "+(--i));

            System.out.println("i "+i);

        }

    }

     

    5.3关系运算符与boolean运算符

     

    <(小于), >(大于),<=(小于等于),>=(大于等于)

    && 逻辑与 || 逻辑或 !逻辑非

    三目运算符:

    condition ? expression1 : expression2;

    当条件condition 为真时 计算expression1表达式,否则执行expression2表达式

     

    示例程序:

    步骤1:步骤1在Demo010项目中的com.zjk.type包中创建RelationalOperators

     

    源码:

    package com.zjk.type;

    /**

    *

    *@类名 RelationalOperators

    *@日期 20151128日下午9:36:31

    *@作者 zjkorder

    *@版本 v1.0

    *@描述    

    * 逻辑运算符

    * main方法所在类

    *

    */

    public class RelationalOperators {

     

        public static void main(String[] args) {

            

            int a = 10;

            

            int b = 5;

            

            boolean t = true;

            

            boolean f = false;

              

            

            System.out.println("a<b "+(a<b));

            System.out.println("a>b "+(a>b));

            System.out.println("a>=b "+(a>=b));

            System.out.println("a<=b "+(a<=b));

            System.out.println("!t "+(!t));

            System.out.println("t&&f "+(t&&f));

            System.out.println("t||f "+(t||f));

            System.out.println("a < b ? (a+b):(a-b) "+(a < b ? (a+b):(a-b)));

            

        }

     

    }

     

     

    5.4位运算符

     

    & ("与")

    | ("或")

    ^ ("异或")

    ~ ("非")

     

     

     

     

  • 相关阅读:
    argparse模块的使用
    tf.stack() /tf.unstack()
    什么是tensor
    tf.size()函数
    tf.nn.l2_loss()的用法
    CNN中的卷积
    tf.reverse()
    学习音视频编程技术 博客
    shell 批量计算MD5值
    线程池的实现
  • 原文地址:https://www.cnblogs.com/zjkorder/p/5003560.html
Copyright © 2020-2023  润新知