变量与常量及运算符
Posted joyfulcode
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量与常量及运算符相关的知识,希望对你有一定的参考价值。
变量(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
以上是关于变量与常量及运算符的主要内容,如果未能解决你的问题,请参考以下文章