Java(运算符)
运算符
Java语言支持的运算符:
- 算术运算符:+,-,*,/,%(取余、求余)【模运算】,++(自增),--(自减) 
- 赋值运算符:= 
- 关系运算符:>,<,>=(大于等于),<=(小于等于),==(等于),!=(不等于),instanceof(例:A instanceof(Test):判断A是否为Test的对象) 
- 逻辑运算符:&&(与),||()或,!(非) 
- 位运算符:&(按位与),|(按位或),^(按位异或),~,>>,<<,>>> 
- 条件运算符:?、: 
- 扩展运算符:+=、-+、*=、/=(例:sum+=i等价于sum=sum+i) 
public class Test{
    public static void main(String[]args){
        //二元运算符
        int a=10;
        int b=20;
        int c=25;
        int d=25;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);//结果为0,而实际为0.5,因为a、b都为int型,所以结果也为int型了
        System.out.println(a/(double)b);//解决:将其中一个数据转为小数,这样结果输出0.5
        System.out.println((double)a/b);
        long e=123123123123123L;
        int f=123;
        short g=10;
        byte h=8;
        System.out.println(e+f+g+h);//结果为long型
        System.out.println(f+g+h);//结果为int型
        System.out.println(g+h);//结果为int型
        /*总结:若参与运算的操作数中有long型数据则结果为long型,
         * 若参与运算的操作数中有double型数据则结果为double型
         * 若参与运算的操作数中没有long型数据则结果为int型;即使没int类型数据参与运算结果也为int类型
         * 【int型以上,参与运算的最高数据类型是什么,结果就为该类型,int型以下的类型数据进行运算结果为int型】
         */
        //关系运算符  返回结果为true或者false(布尔值)
        int i=10;
        int j=20;
        System.out.println(i>j);//false
        System.out.println(i==j);//false
        System.out.println(i<j);//true
        System.out.println(i!=j);//true
        //取余、模运算
        int k=21;
        System.out.println(k%i);// 21/10==2……1余数为1,即输出1
    }
}
public class Test{
    public static void main(String[]args){
        //++自增 --自减  一元运算符(之后会用于for循环)
        int a=3;
        int b=a++;//符号++放在a后,先把a的值赋值给b,然后使a的值加1,此时b的值为3,a的值为4
        System.out.println(a);//输出4
        int c=++a;//符号++放在a前,先使a的值加1,然后再把a的值赋值给c,此时a的值为5,c的值为5
        System.out.println(a);//输出5
        System.out.println(b);//输出3
        System.out.println(c);//输出5
        /* 幂运算 2^3:2*2*2 在Java中没有^这种表示 
         * 在Java中像幂运算这样特殊的运算,需要使用工具类来操作
         * Math为Java建立好的类,里面提供了与科学工程计算的很多方法和常数,很多特殊的运算都需要借助它
         */
        double pow1=Math.pow(2, 3);//计算2的3次方
        System.out.println(pow1);//输出8.0
        double pow2=Math.pow(3, 2);//计算3的2次方
        System.out.println(pow2);//输出9.0
    }
}
public class Test{
    public static void main(String[]args){
        //逻辑运算符 与(and)、或(or)、非(取反)
        boolean a=true;
        boolean b=false;
        System.out.println("a&&b:"+(b&&a));//逻辑与运算:两个变量都为真,结果才为真
        System.out.println("a||b:"+(a||b));//逻辑或运算:两个变量只要其中一个为真,结果就为真
        System.out.println("!(a&&b):"+!(a&&b));//取反运算:如果是真,则变为假;如果是假,则变为真
        //短路运算:第一句输出的运行:当程序运行到b的值为false时,就直接返回false,不会再运行a的情况
        //检验
        int c=5;
        boolean d=(c<4)&&(c++<4);//假设(c<4)为false后程序不再运行后面的,则c不会+1,c的值还是为5
        System.out.println(d);//输出false
        System.out.println(c);//输出5
        //所以,假设正确
        
        /*位运算(是与二进制打交道的)
         * A=0011 1100
         * B=0000 1101
         * A&B=0000 1100(对应位同为1才为1)//按位与运算
         * A|B=0011 1101(对应位同为0才为0)//按位或运算
         * A^B=1100 1110(对应位相同则为1)//按位异或运算
         * ~B =1111 0010(取反,1变为0,0变为1)//取反运算
         *面试题2*8=16,在计算机里是2*2*2*2=16
         * 效率极高!!!
         * <<(箭头指向左边,左移):相当于*2
         * >>(箭头指向右边,右移):相当于/2
         * 二进制中:
         * 0000 0000表示0
         * 0000 0001表示1
         * 0000 0010表示2
         * 0000 0011表示3
         * 0000 0100表示4
         * 0000 1000表示8
         * 0001 0000表示16
         */
        System.out.println(2<<3);//16
        //意思为2左移3位0000 0010
        //            0001 0000
        //扩展运算符:+=、-=
        int x=10;
        int y=20;
        x+=y;//相当于x=x+y;
        System.out.println(x);//30
        x-=y;//相当于x=x-y;
        System.out.println(x);//10
        System.out.println(x+y);//30
        //字符串连接(拼接)符号:+   当+号一侧是String类型时,+号起连接的作用
        System.out.println(""+x+y);//输出1020//从左到右运算,先识别到字符串"",所以+起连接的作用
        System.out.println(x+y+"");//输出30//从左到右运算,先识别到x+y,此时+为算术运算符,x+y结果为30,
                                          //后识别到字符串"",+号则起连接的作用
        //三元运算符
        //x?y:z,通常用于if循环
        //如果x为true,则结果为y,否则结果为z
        int sorce=80;
        String type=sorce>60?"及格":"不及格";//重要,必须掌握
        System.out.println(type);
        //优先级 先是()、一元运算符、*?+-、位运算符
        //形成用括号的习惯,提高代码的可读性
    }
}
优先级从高到低

Java(运算符)的更多相关文章
- Java笔记2-数据类型,变量,Java运算符
		我们编写软件,目的是为了高效的操作(增,删,改,查)数据. 数据类型 1.基本类型(8种)byte 字节型 -128~127short 短整型 -32768~32767int 整型 -21474836 ... 
- Java运算符优先级(转)
		转自:http://www.cnblogs.com/gw811/archive/2012/10/13/2722752.html Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 说明 ... 
- 【转】Java运算符优先级
		原文网址:http://www.cnblogs.com/gw811/archive/2012/10/13/2722752.html Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 ... 
- java运算符优先级与流程控制
		1. Java 的方法Method (函数 Function), 功能, 动作 1) 方法就是函数: y=f(x)=3x+6; 2) 方法的语法 (修饰词)(返回值类型)(方法名)(参数列表){ ... 
- Java基本语法-----java运算符的优先级与结合性
		这是本人以前的上学期间java 运算符这块知识的总结的,截图存到了word里,大家将就看下吧(不会用Markdown的表格 不然就在写一遍了 T T). [正在看本人博客的这位童鞋,我看你气度不凡,谈 ... 
- Java 基本语法---Java运算符
		Java 基本语法---Java运算符 0. 概述 Java中的运算符主要分为以下几种: 算术运算符 赋值运算符 关系运算符 逻辑运算符 条件运算符 位运算符 其他运算符 1. 算术运算符 操作符 描 ... 
- [转]Java 运算符的优先级
		Java 运算符的优先级(从高到低) 优先级 描述 运算符 1 括号 ().[] 2 正负号 +.- 3 自增自减,非 ++.--.! 4 乘除,取余 *./.% 5 加减 +.- 6 移位运算 &l ... 
- Java运算符使用总结(重点:自增自减、位运算和逻辑运算)
		Java运算符共包括这几种:算术运算符.比较运算符.位运算符.逻辑运算符.赋值运算符和其他运算符.(该图来自网络) 简单的运算符,就不过多介绍使用了,可自行测试.关于赋值运算,可以结合算术运算和位运算 ... 
- Java 运算符及优先级
		运算符 分割符: , ; [] () 算数运算符: + - * / % ++ -- 关系运算符: > < >= <= == != 逻辑运算符: ! & | ^ & ... 
- 【java基础】Java运算符优先级
		Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目 ( ) 圆括号 从左到右 [ ] 方括号 从左到右 2 + 正号 从右到左 单目 - 负号 ... 
随机推荐
- 菜鸡的Java笔记 第三十四 Annotation
			Annotation 多例模式特点: 1. 多例类可以有多个实例 2. 多例类必须自己创建自己的实例,并管理自己的实例,和向外界提供自己的实例 ... 
- 论文解读(LLE)《Nonlinear Dimensionality Reduction by Locally Linear Embedding》and LLE
			论文题目:<Nonlinear Dimensionality Reduction by Locally Linear Embedding > 发表时间:Science 2000 论文地址 ... 
- [cf1458C]Latin Square
			维护$n^{2}$个三元组$(x,y,z)$,每一个三元组描述$a_{x,y}=z$ 对于RLDU这四个操作,即将所有三元组的$x$或$y$执行$\pm 1$(模$n$意义下) 对于IC这两个操作,即 ... 
- 程序员需要达到什么水平才能顺利拿到 20k 无压力?
			程序员要拿到20k,应该达到什么水平? 1 熟悉增删改查技能,熟悉项目开发相关流程和技能. 2 能解决基本问题,分布式或比较深的问题,太难的不会不要紧,但常规的应该有项目经验. 3 简历好看些 ... 
- 如何查看dpdk版本
			服务器上曾经装过很多版本的dpdk,此时如果编译某个程序出现奇怪错误的时候不由得会怀疑是不是dpdk版本的问题= = 令人吃惊的是,网上搜了一圈居然没有一个简单直接的方法能够直接使用,于是自己实验了一 ... 
- 第41篇-JNIEnv与JavaVM的初始化
			JavaVM和JNIEnv的初始化和JVM各模块的初始化都是在JNI_CreateJavaVM()函数中完成.这一篇将详细介绍JavaVM和JNIEnv的初始化过程. 1.初始化JavaVM Java ... 
- rabbit mq的php使用 php-amqplib操作消息队列
			rabbit mq的php使用 php-amqplib操作消息队列 有大神翻译的教程,非常清楚可以参考: https://xiaoxiami.gitbook.io/rabbitmq_into_chin ... 
- R连接mysql数据库方法详解
			Warning messages: 1: In odbcDriverConnect("DSN=Rdata;UID=root") : [RODBC] ERROR: state IM0 ... 
- ubuntu常见错误--Could not get lock /var/lib/dpkg/lock
			ubuntu常见错误--Could not get lock /var/lib/dpkg/lock 通过终端安装程序sudo apt-get install xxx时出错: E: Could ... 
- SQL-join(inner join)、left join、right join、full join
			0.JOIN 类型 有时我们需要从两个或更多的表中获取结果,数据库中的表可通过键将彼此联系起来.每个表中都有一个主键,主键(Primary Key)是一个列,值都唯一.这样做的目的是在不重复每个表中的 ... 
