zoukankan      html  css  js  c++  java
  • 变量与常量及运算符

    变量(Variable):

      变量可以理解为可以改变的一个值。

      百度百科中这样说明变量:

        变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象。

      Java中的变量一般分为以下前两种(严格的讲分为三种):

        1.局部变量:指在方法或语句块内部定义的变量。

        2.实例变量(又叫“成员变量”或“全局变量”):指在方法外部,类的内部定义的变量。

        实例变量在使用前必须要先初始化(就是必须赋值),如果不初始化,则Java会自动的初始化为该类型的默认初始值(数值型:0或0.0、字符型:16位的0、布尔值:false)。

        3.类变量(被static修饰的变量):一般也称为静态变量,属于类。

        示例:

    package com.lxj.cnblogs;
    
    /**
     * 测试变量
     * @author 刘小将
     *
     */
    public class TestVariable {
        boolean flag = false;    //这是一个全局变量
        static String str = "Abc";    //这是一个类变量
        public void function() {
            int a = 1;    //这是一个局部变量
        }
    }

    常量(Final):

      常量可以理解为是与变量相反的量,常量只能被初始化一次,其值是不可变的。

      常量由final修饰,一般声明常量时,常量名必须全大写。

      示例:

    package com.lxj.cnblogs;
    
    /**
     * 测试常量
     * @author 刘小将
     *
     */
    public class TestFinal {
        
        final double PI = 3.14;        //这是一个常量
        
    }

    运算符:

      计算机的最基本用途之一就是执行数学运算,Java作为一种计算机语言,也提供了一套丰富的运算符来操纵变量与常量。

      运算符分以下几种:

        1.算术运算符:算数运算符用在数学表达式中,它们的作用和在数学中的作用一样。

          二元运算符:一般用在计算上(就和计算器计算数一样)

            +(加):加法运算

    int a = 1;
    int b = 2;
    int count = a+b;    //加法运算

            -(减):减法运算

    int a = 1;
    int b = 2;
    int count = b-a;    //减法运算

            *(乘):乘法运算

    int a = 1;
    int b = 2;
    int count = a*b;    //乘法运算

            /(除):除法运算(注意:与数学中一样“0”不能作为除数)

    int a = 1;
    int b = 2;
    double count = a/b;    //除法运算,因为1除以2为小数,所以用double来接收

            %(取余):取余的意思顾名思义也就是除过后的余数

    int a = 4;
    int b = 2;
    int count = a%b;    //取余运算,4除2可以除尽,计算结果count为0

          一元运算符:一般用在循环语句中

            ++(自加运算):每走一次自身加一

            --(自减运算):每走一次自身减一

            (注:一元运算符有前后之分,如:a++,++a,a--,--a。当遇到一元运算符的计算时:“符号在前,表示先运算再赋值,符号在后,表示先赋值再计算”)

    int a = 1;
    int count = a++;    //a在前,所以count值为1
    int compute = ++a;    //a在后,所以compute值为2
    
    int b = 2;
    int reckon = b--;   //b在前,所以reckon值为2 
    int calculate = --b;    //b在后,所以calculate值为1

        2.关系运算符:关系运算符生成的是一个boolean类型的结果,一般用在判断语句中,它们的作用是运算两个对象值之间的关系,若关系是真的,则结果为true,否则为false。

          >(大于):检查符号左边的值是否大于右边的值

    int a = 1;
    int b = 2;
    boolean count = a > b;    //a的值不大于b,所以count值为false

          <(小于):检查符号左边的值是否小于右边的值

    int a = 1;
    int b = 2;
    boolean count = a < b;    //a的值小于b,所以count值为true

          >=(大于等于):检查符号左边的值是否大于或等于右边的值

    int a = 3;
    int b = 2;
    boolean count = a >= b;    //a的值大于b,所以count值为true

          <=(小于等于):检查符号左边的值是否小于或等于右边的值

    int a = 3;
    int b = 2;
    boolean count = a <= b;    //a的值不小于b,所以count值为false

          ==(等于):检查符号两侧的值是否相等

    int a = 2;
    int b = 2;
    boolean count = a == b;    //a的值等于b,所以count值为true

          !=(不等于):检查符号两侧的值是否不相等

    int a = 2;
    int b = 2;
    boolean count = a != b;    //a的值等于b,所以count值为false

        3.位运算符:位运算允许我们操作一个整数数据类型中的单个“比特”,也就是二进制位。位运算符会对两个自变量中对应的位执行布尔代数,并最终生成一个结果。

          ~(取反):翻转操作数的二进制的每一位,即0变为1,1变为0

          &(按位与):运算符两边的操作数的二进制的对应位的值都为1,则结果为1,否则为0

          |(按位或):运算符两边的操作数的二进制的对应位的值都为0,则结果为0,否则为1

          ^(按位异或):运算符两边的操作数的二进制的对应位的值相同,则结果为0,否则为1

          <<(按位左移运算符):左操作数按位左移右操作数指定的位数(后跟几,相当于乘以2的几次方)

          >>(按位右移运算符):左操作数按位右移右操作数指定的位数(后跟几,相当于除以2的几次方)

          >>>(按位右移补零操作符):左操作数的值按右操作数指定的位数右移,移动得到的空位以0填充

    int a = 60;        //二进制:0011 1100
    int b = 13;        //二进制:0000 1101
    -----------------------------------
    ~a = -61;    //二进制:1100 0011
    a & b = 12;    //二进制:0000 1100
    a | b = 61;        //二进制:0011 1101
    a ^ b = 49;    //二进制:0011 0001
    a << 2 = 240;    //二进制:1111 0000
    a >> 2 = 15;    //二进制:0000 1111
    a >>> 2 = 15;    //二进制:0000 1111

        4.逻辑运算符: 逻辑运算符能生成一个布尔值(true/false),以自变量的逻辑关系为主。逻辑运算符一般用于连接boolean类型的表达式,可以理解为一般用于判断语句上,与C/C++不同,不可将一个非布尔值(0/1)当作布尔值在逻辑表达式中使用。

          &&(与/AND):逻辑与,当且仅当操作符两侧的操作数都为真(true)时,条件才为真(true)(可以理解为:当两边的值都相同时,结果为true,否则为false)

          ||(或/OR):逻辑或,如果操作符两侧任意一侧为真(true)时,条件为真(true)(可以理解为:当两边的值有一侧为true时,结果就为true,否则为false)

          !(非/NOT):逻辑非,用来反转操作数的逻辑状态,如果条件为true,则逻辑非将得到false(可以理解为:取反,值为false结果就为true,反之,值为true结果就为false)

          &(单“与”):与逻辑与相同,但是不会短路

          |(单“或”):与逻辑或相同,但是不会短路

          ^(异或):逻辑异或,只有两个操作数不同时才返回true,两个操作数相同时返回false

          短路与非短路:

            短路(&&||):当计算结果确定时,计算式不会继续往后计算直接输出结果。

            非短路(&|):当计算结果确定时,计算式会继续往后计算直至计算结束。

            当使用&&时,在操作符两侧的两个操作数都为true时,结果才返回true,但是当得到第一个false时,其结果就必定是false,此时就不会继续判断第二个操作数了。

            当使用&时,在操作符两侧的两个操作数都为true时,结果才返回true,但是当得到第一个false时,其结果就必定是false,此时还会继续判断第二个操作数。

            当使用||时,在操作符两侧的两个操作数都为false时,结果才返回false,但是当有任意一侧为true时,其结果就必定是true,此时就不会继续判断第二个操作数了。

            当使用|时,在操作符两侧的两个操作数都为false时,结果才返回false,但是当有任意一侧为true时,其结果就必定是true,此时还会继续判断第二个操作数。

      

            boolean a = true;
            boolean b = false;
            int e = 5;
            //短路与(&&)
            boolean count1 = a && b;    //结果为false
            boolean boo1 = (e < 4) && (e++ < 10);    //结果为false,计算结束后e的值为5
            //短路或(||)
            boolean count2 = a || b;    //结果为true
            boolean boo2 = (e > 4) || (++e < 10);    //结果为true,计算结束后e的值为5
            //逻辑非
            boolean count3 = !a;    //结果为false
            //非短路与(&)
            boolean boo3 = (e < 4) & (e++ < 10);    //结果为false,计算结束后e的值为6
            //非短路或(|)
            boolean boo4 = (e > 4) || (++e < 10);    //结果为true,计算结束后e的值为6
            //异或(^)
            boolean count4 = a ^ b;    //结果为true

        5.赋值运算符:赋值运算符使用=(等于号)进行的,它的意思是“取消符号右边的值,将右边的结果复制到符号左边”。右边的值可以是任何常量、变量、表达式,只要能产生一个值就可以,但符号左边必须是一个明确类型的、已命名的变量。

          =(赋值):赋值运算符,将符号右边的计算的结果值赋给左边的变量

          +=(和赋值):和赋值运算符,将符号左边的值与右边的加起来再赋给左边的变量

          -=(减赋值):减赋值运算符,将符号左边的值减去右边的值,再将结果赋给左边的变量

          *=(积赋值):积赋值运算符,将符号左边的值与右边的相乘再赋给左边的变量

          /=(商赋值):商赋值运算符,将符号左边的值除以右边的值,再将结果赋给左边的变量

          %=(取余赋值):取余赋值运算符,将符号左边的值除以右边的值,再将除后的余数赋给左边的变量

          <<=(左移赋值):左移赋值运算符,将左边的值的二进制数向左移动右边值个单位,再赋给左边的变量

          >>=(右移赋值):右移赋值运算符,将左边的值的二进制数向右移动右边值个单位,再赋给左边的变量

          &=(按位与赋值):按位与赋值运算符,将符号两边的值二进制比较,对应位的值都为1,则结果为1,否则为0,再将结果赋给左边的变量

          |=(按位或赋值):按位或赋值运算符,将符号两边的值二进制比较,对应位的值都为0,则结果为0,否则为1,再将结果赋给左边的变量

          ^=(按位异或赋值):按位异或赋值运算符,将符号两边的值二进制比较,对应位的值相同,则结果为0,否则为1,再将结果赋给左边的变量

            int a = 10;        //将10赋给a
            int b = 20;        //将20赋给b
            int c = 5;        //将5赋给c
            
            //和赋值(+=)
            a += b;        //等价于:a = a + b;
            //减赋值(-=)
            a -= b;        //等价于:a = a - b;
            //积赋值(*=)
            a *= b;        //等价于:a = a * b;
            //商赋值(/=)
            b /= a;        //等价于:b = b / a;
            //取余赋值(%=)
            b %= a;        //等价于:b = b % a;
            //左移赋值(<<=)
            c <<= 2;    //等价于:c = c << 2;
            //右移赋值(>>=)
            c >>= 2;    //等价于:c = c >> 2;
            //按位与赋值(&=)
            a &= b;        //等价于:a = a & b;
            //按位或赋值(|=)
            a |= b;        //等价于:a = a | b;
            //按位异或赋值(^=)
            a ^= b;        //等价于:a = a ^ b;

        6.三目运算符:三目运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋给变量(相当于简单的if语句)。

               当执行时布尔表达式先做判断,为真时则走表达式1,为假时走表达式2。

          表达式:

    布尔表达式 ? 表达式1 : 表达式2;

          示例:

            int a = 10;
            int b = 5;
            int c = (a > b) ? (a - b) : (a + b);    //先判断a是否大于b,如果大于则a-b,否则a+b

        

          使用三目运算符实现:输入一个年份,判断该年份是平年或闰年:

    package com.lxj.cnblogs;
    import java.util.Scanner;
    
    /**
     * @author 刘小将
     * if语句
     * 判断年份是闰年还是平年
     */
    public class JudgeYear {
        
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);        //创建Scanner对象实现控制台输入
            System.out.println("请输入一个年份:");
            long year = scan.nextLong();        //控制台输入
            boolean isLeapYear = (year % 4 ==0 && year % 100 !=0) || year%400 ==0;
            String string = isLeapYear?year+"是闰年":year+"是平年";
            System.out.println(string);
        }
    }

            7.字符串连接符:在定义字符串或输出字符串时,难免会遇到多个字符串拼接的问题,这时候就需要字符串连接符来拼接字符串。

                字符串连接符(+)两侧的操作数只要有一个是字符串(String类型),则系统会自动将另一个操作数转化为字符型,并连接。

          示例:

    public class TestDemo{
      public static void main(String[] args){    
          System.out.println("Hellow"+"World");    //使用字符串连接符连接两个字符串并在控制台输出
      }  
    }

        

        8.instanceof关键字:用在if语句中,一般用来判断一个对象是否是此类型的对象,返回值为boolean类型。

          语法:

    if(对象名 instanceof 类名){
        强制转换并调用
    }

          示例:

    public class TestDemo{
        public static void main(String[] args){
            if(stu instanceof Student){    //判断stu是否是Student类型的
                代码体
            }
        }
    }
  • 相关阅读:
    MongoDB索引使用
    ubuntu14.04下CPU的caffe配置,不成功的朋友请与我(lee)联系,后面附带邮箱
    android4.4 evaluateJavascript 到android2.X上不能调用的问题
    LeetCode122:Best Time to Buy and Sell Stock II
    Hdu-1565 方格取数(1) (状态压缩dp入门题
    TI C66x DSP 四种内存保护问题 -之- 针对CPU訪问外存(DDR3 or MSM)时的内存保护问题
    显示和隐藏Mac隐藏文件的命令
    【微软2014实习生及秋令营技术类职位在线測试】题目1 : String reorder
    钟表效果
    hibernate5(10)注解映射[2]一对多单向关联
  • 原文地址:https://www.cnblogs.com/joyfulcode/p/12078522.html
Copyright © 2011-2022 走看看