JAVA的运算符,分为四类:

算数运算符、关系运算符、逻辑运算符、位运算符

算数运算符(9):+  -  *  /  %  ++  --

关系运算符(6):==  !=  >  >=  <  <=

逻辑运算符(6):&&  ||  !  ^  &  |

位运算符(7):&  |  ~  ^  >>  <<  >>>

Java基本数据类型:

数值类型:

整型:byte、short、int、long

非整型:double、float

非数值类型:char[字符]、boolean[布尔]

一:算数运算符

注:算数运算符操作数必须是数值类型

分为一元运算符和二元运算符;

一元运算符,只有一个操作数;

二元运算符有两个操作数,运算符在两个操作数之间。

一元运算符:正‘+’负‘-’自加‘++’自减‘--‘这四个。

①”++“和”--“运算符,只允许用于数值类型的变量,不允许用于表达式中;

"++"和”--“可以用于数值变量之前或者之后;

两处使用差别:

”++“和”--“用于数值变量之前,在赋值操作中,先对被”++“或”--“操作变量值先加1或者先减1,然后在进行其他的操作;

"++"和”--“用于数值变量之后,在赋值操作中,先用被”++“或”--“的操作变量值进行其他的操作,然后在对其值加1或者减1。

     package com.numerical;  

     public class Operator {
public static void main(String[] args) {
int a = 5;
int b,c,d,f,g,h;
b = +a; //正值
System.out.println("b="+b+",a="+a);
c = -a; //负值
System.out.println("c="+c+",a="+a);
int l = 2;
d = ++l; //先l=l+1;再d=l
System.out.println("d="+d+",l="+l);
int m = 3;
f = m++;//先f=m;再m=m+1
System.out.println("f="+f+",m="+m);
int n = 4;
g = --n;//先n=n-1;再g=n
System.out.println("g="+g+",n="+n);
int o = 6;
h = o--;//先h=o;再o=o-1
System.out.println("h="+h+",o="+o);
}
}

上代码,输出结果为:

b=5,a=5
c=-5,a=5
d=3,l=3
f=3,m=4
g=3,n=3
h=6,o=5

注:一元运算符和前后的操作数之间有空格,可能在有些编译器下编译时会出错。

2.二元运算符,加'+'减'-'乘'*'除'/'求余'%'

在算数运算符中,”+“,”-“,”*“,”/“完成加减乘除四则运算,%是求两个操作数相除后的余数。

运算规则和数学运算基本相同,在算数运算中,计算时按照从左向右的顺序计算,乘除和求余优先于加减,不同的是,程序中的乘运算符不可省略,在数学中可写为”y=2x“而程序中必须写为”y=2*x“。

当二元运算的两个操作数的数据类型不同时,运算结果的数据类型和参与运算的操作数的数据类型中精度较高(或位数较长)一致。

 1 int a = 3;
2 double b = 3.53;//或者3.53d
3 float c = 1.7f;
4 int d = 1;
5 System.out.println("int /int :a/d="+a/d);
6 System.out.println("double/int:b/a="+b/a);
7 System.out.println("float/int:c/a="+c/a);

输出结果为:

int /int :a/d=3
double/int:b/a=1.1766666666666665
float/int:c/a=0.56666666

转换原则:
    从低精度向高精度转换byte 、short、int、long、float、double

低精度到高精度会自动转换,而高精度到低精度则要类型强制转换。

int a = 7; double b = 5.33; b = a; a = (int) b;

计算机的数据长度:

位:一个二进制数据0或1,是1bit(位);

字节:存储空间的计量单位,是1byte = 8bit;如数据库的VARCHAR为字节;

 boolean 类型变量的取值有:ture、false,1字节(8位)
char数据类型有:unicode字符,16位
byte:一个字节(8位)(-128~127)(-2的7次方到2的7次方-1)
short:两个字节(16位)(-32768~32767)(-2的15次方到2的15次方-1)
int:四个字节(32位)(一个字长)(-2147483648~2147483647)(-2的31次方到2的31次方-1)
long:八个字节(64位)(-9223372036854774808~9223372036854774807)(-2的63次方到2的63次方-1)
float:四个字节(32位)(3.402823e+38 ~ 1.401298e-45)(e+38是乘以10的38次方,e-45是乘以10的负45次方)
double:八个字节(64位)(1.797693e+308~ 4.9000000e-324)

对应java的基本数据类类型:Integer、Float、Boolean、Character、Double、Short、Byte、Long

注意:
①数值计算中语法现象——“晋升”,即:byte、short和char(低于int的数据类型)进行算术运算后,结果会自动提升成int类型;
②两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换;
③算数运算可以加入小括号"()"提高优先级,优先小括号内运算,再其他运算符运算;
④算数运算前操作数变量必须赋值,反之,报语法错误。

二:关系运算符

关系运算符用于比较两个数值之间的大小,其运算结果为一个逻辑类型(boolean布尔类型)的数值。

等于'=='不等于'!='大于'>'大于等于'>='小于'<'小于等于'<='

以下代码为:

     System.out.println("9.5<8 :"+(9.5<8));
System.out.println("8.5<=8.5:"+(8.5<=8.5));
System.out.println("a~z:"+((int)'a')+"~"+((int)'z'));
System.out.println("A~Z:"+((int)'A')+"~"+((int)'Z'));
System.out.println("'A' < 'a':"+('A' < 'a'));//字符'A'的Unicode编码值小于字符'a'

输出结果为:

9.5<8 :false
8.5<=8.5:true
a~z:97~122
A~Z:65~90
'A' < 'a':true

注: boolean类型只能比较相等和不相等,不能比较大小;

>=的意思是大于或等于,两者成立一个即可,结果为true,<=亦如此;

判断相等的符号是两个等号,而不是一个等号,这个需要特别小心。

实际代码中,数值、变量以及运算结果都可以直接参与比较,只是程序中为了增强可读性,有些时候需要将比较分开进行书写。

比较运算符是程序设计中实现数据比较的基础,也是很多逻辑实现的基础,在程序逻辑中,经常通过比较一定的条件,来判断后续的程序该如何执行。

三:逻辑运算符

逻辑运算符要求操作数的数据类型为逻辑型,其运算结果也是逻辑型值。

逻辑运算的数据和逻辑运算符的运算结果是boolean类型。

 逻辑与'&&'逻辑或'||'逻辑非'!'逻辑异或'^'逻辑与'&'逻辑或'|'

逻辑运算符的真值表:

A和B是逻辑运算的两个逻辑变量;

两种逻辑与(&&和&)的运算规则基本相同,两种逻辑或(||和|)的运算规则也基本相同。
&和|运算是把逻辑表达式全部计算完,而&&和||运算具有短路计算功能。
对于&来说,如果左侧条件为false,也会计算右侧条件的值,而对于&&来说,如果左侧的条件为false,则不计算右侧的条件,这种现象被称作短路现象。
所谓短路计算,是指系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。
对于&&运算来说,只要运算符左端的值为false,则因无论运算符右端的值为true或为false,其最终结果都为false。
所以,系统一旦判断出&&运算符左端的值为false,则系统将终止其后的计算过程;
对于 || 运算来说,只要运算符左端的值为true,则因无论运算符右端的值为true或为false,其最终结果都为true。
所以,系统一旦判断出|| 运算符左端的值为true,则系统将终止其后的计算过程。 
利用短路现象:
在程序设计时使用&&和||运算符,不建议使用&和|运算符。 
四:位运算符
位运算是以二进制位为单位进行的运算,其操作数和运算结果都是整型值。 
位与'&'位或'|'位非'~'位异或'^'右移'>>'左移'<<'0填充的右移'>>>' 
位运算的位与'&',位或'|',位非'~',位异或'^'与逻辑运算的相应操作的真值表完全相同,其差别只是位运算操作的操作数和运算结果都是二进制整数,而逻辑运算相应操作的操作数和运算结果都是逻辑值boolean型。
下边为位&运算:
    int a = 15;   //x等于二进制数的00001111
    int b = 6;     //y等于二进制数的00000110
    int c = x&y   //z等于二进制数的00000110
二进制数的00000110
右移是将一个二进制数按指定移动的位数向右移位,移掉的被丢弃,左边移进的部分或者补0(当该数为正时),或者补1(当该数为负时)。这是因为整数在机器内部采用补码表示法,正数的符号位为0,负数的符号位为1。
     将一个数左移"<<"会使该值乘以2的幂。
   将一个数右移>>"会使该值除以2的幂。
   右移(补零)运算符,即无符号右移,">>>"永远不会产生负号,因为其符号位总是被补零。 不论被移动数是正数还是负数,左边移进的部分一律补0。
  System.out.println(1<<3); System.out.println(8>>3);  
 
    int x = 70;   //x等于二进制数的01000110
    int y = 2;
    int z = x>>y  //z等于二进制数的00010001
    即运算结果为z等于二进制数00010001,即z等于十进制数17。

    int x = -70;  //x等于二进制数的11000110
    int y = 2;
    int z = x>>y  //z等于二进制数的11101110
    即运算结果为z等于二进制数11101110,即z等于十进制数-18。
    右移和左移操作,是整数机器数的补码表示法。

&运算符规定必须信号A和B都被充电,其结果才是充电。(1表示充电,0表示未充电)

^异或(XOR)运算符规定如果信号A或B之一被充电,但是信号A和B不是同时被充电,则结果为充电。

~运算符也称为按位求补,它翻转所有的充电状态值。

五:赋值运算符与其他运算符的简捷使用方式


① 赋值运算符可以与二元算术运算符、逻辑运算符和位运算符组合成简捷运算符,从而可以简化一些常用表达式的书写。

在程序开发中,大量使用“一元运算符或移位运算符等”该区别简化代码的书写,这样做,因为这样将增加阅读代码的难度,尽量注释。

② 方括号[]和圆括号()运算符 
 方括号[]是数组运算符,方括号[]中的数值是数组的下标,整个表达式就代表数组中该下标所在位置的元素值。
 圆括号()运算符用于改变表达式中运算符的优先级。
    String [] sa = {"a","b","c","d"};
System.out.println(sa[2]);

输出为:c ③ 字符串加(+)运算符 
当操作数是字符串时,加(+)运算符用来合并两个字符串;当加(+)运算符的一边是字符串,另一边是数值时,机器将自动将数值转换为字符串,并连接为一个字符串。

String a ="aa";
int c = 555;
String b = a+"bbb"+c;
System.out.println(b);

输出为:aabbb555

④ 条件运算符(三目运算符)
    <表达式1> ?<表达式2> : <表达式3> 
先计算<表达式1>的值,
当<表达式1>的值为true时,则将<表达式2>的值作为整个表达式的值;
当<表达式1>的值为false时,则将<表达式3>的值作为整个表达式的值。

    int a = 55,b = 132,res;
res = a > b ? a : b;
System.out.println(res);

输出为:132

⑤强制类型转换符
强制类型转换符能将一个表达式的类型强制转换为某一指定数据类型

     int a;
double b = 5.66600;
a = (int) b;
System.out.println(a);

输出为:5

运算符优先级表

优先级自上而下,级别由高到低。

Java的算数运算符、关系运算符、逻辑运算符、位运算符的更多相关文章

  1. c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)

    1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式 2.BOOL(布尔)数据类型: c语言中除了基本数 ...

  2. 003-Python3-基础语法-运行方式、代码基础要求、运算符[算数运算符、比较运算符、赋值运算符、位运算符、逻辑运算符、成员运算符、身份运算符]、运算符优先级

    一.基础语法 参看地址:https://www.runoob.com/python3/python3-tutorial.html 1.1.运行方式 1.文件方式 编写一个hello.py文件, pri ...

  3. 2017年9月22日作业 c++算术运算符 自增 自减 逻辑运算符 位运算符 条件运算符(三元运算符)

    作业1: c++算术运算符试题,分析下面程序的输出结果是什么 //第一个: int x=8999;int value=x*1000/1000; //第二个 int x=8999;int value=x ...

  4. 【Java】运算符(算术、赋值、比较(关系)、逻辑、条件、位运算符)

    运算符 文章目录 运算符 1. 算术运算符 2. 赋值运算符 3. 比较运算符 4. 逻辑运算符 5. 条件运算符 6. 位运算符 7. 运算符优先级 8. 运算符操作数类型说明 9.code 算术运 ...

  5. Java 逻辑运算符、位运算符、移位操作符 总结(Java 学习中的小记录)

    Java 逻辑运算符.位运算符.移位操作符  总结     作者:王可利(Star·星星) 逻辑运算符,表格如下: 解析逻辑运算符表: 1.与 (&) 特点:两个都为真的时候,结果为真.两个为 ...

  6. PHP的按位运算符是什么意思

    按位运算符是什么意思? 按位运算符(Bitwise Operators)是用于对涉及单个位操作的位模式或二进制数字执行位操作的运算符. 按位运算符可以用于: 1.通信堆栈,其中标头中的各个位附加到数据 ...

  7. java入门---运算符&算术运算符&自增自减运算符&关系运算符&位运算符

        计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 ...

  8. JAVA算术运算符、关系运算符和位运算符

    算术运算符 1.java的算数运算符包括+(加).-(减).*(乘)./(除).%(取余),在运算过程中出现的隐式转换原则和C语言一样:2. 高位数据向低位数据转化要使用强制转化: 关系运算符 1.j ...

  9. java注释 命名 数据类型 基本类型转换 位运算符 逻辑运算符 三目运算符

    一.java注释 1.单行注释  //注释内容 2.多行注释 /*注释内容*/ 3.文档注释(可用javadoc工具生成api文档,不过我还没试过)/**文档注释*/,文档注释可以在使用的时候看见注释 ...

随机推荐

  1. 给CentOS6.3 + PHP5.3 安装PHP性能测试工具 XHProf-0.9.2

    一.什么是XHProf XHProf官网:http://pecl.php.net/package/xhprof XHProf是一个分层PHP性能分析工具.它报告函数级别的请求次数和各种指标,包括 阻塞 ...

  2. URL转义

    在处理一些url的时候常常会出现一些让人意想不到的情况,比如:当图片的链接中有空格的时候, this.src='http://img.cits-sh.com/UploadImgs/beihaidao2 ...

  3. 【Alpha】Daily Scrum Meeting第五次

    一.本次Daily Scrum Meeting主要内容 每个人学习情况 任务安排 界面设计问题,怎样让界面更好看? 二.任务安排 学号尾数 昨天做的任务 今天的任务 明天的任务 612 时间轴控件优化 ...

  4. 计算 TP90TP99TP...

    what-do-we-mean-by-top-percentile-or-tp-based-latency tp90 is a minimum time under which 90% of requ ...

  5. am335x watchdog 设备出错

    问题描述: am335x watchdog 设备节点打开失败. 如果是直接将omap_wdt 直接编译成uImage,这样会出现打开文件节点失败的情况. 如果单独编译成模块在后面文件系统内插入则不会. ...

  6. C#获取命令行输出内容的方法

    获取命令行输出内容的方式有传统和异步两种方式. 传统方式: public static void RunExe(string exePath, string arguments, out string ...

  7. Java连接mysql数据库并插入中文数据显示乱码

    连接数据库设置编码 jdbc:mysql://地址:3306/数据库名?characterEncoding=utf8

  8. SET基本数据类型

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAO4AAADZCAIAAACo85tgAAAgAElEQVR4Aey9SdAs13XnV/P8jW8e8D

  9. 设计模式--单例模式Singleton(创建型)

    单例模式很显然是定义一个类,这个类在程序中只有唯一的实例对象.一般单例类的构造函数是私有的,只能通过调用静态函数GetInstance来获取实例. 一.单例模式有三种:懒汉式单例.饿汉式单例.登记式单 ...

  10. 开源项目在真机调试(Coding iOS 客户端为例)

    一.前言 iOS 13学习系列:如何在github下载开源项目到本地(Coding iOS 客户端为例)已经把 Coding iOS 客户端源码下载到本地. 但项目进行真机调试遇到很多问题. 二.问题 ...