Java基础-运算符详解编程语言
运算符:就是对于常量和变量进行操作的符号.
表达式:用运算符连接起来的符合java语法的式子,不同的运算符连接的表达式是不同类型的表达式.
运算符分类:算数运算符(+ * / % ++ )
赋值运算符(= += -= *= /=)
关系运算符(==,!=, , =, , =)
逻辑运算符( ,|,!,^, ,||)
三元运算符
算数运算符整数相除只能得到整数.要想得到小数,就必须有浮点数参与运算.
字符参与加法运算(纯数值的为加法运算,含有字符串的为字符连接,char- int- string),其实是那字符在计算机中的存储的数据值(ASCII码表)来参与运算的
A 65 a 97 0 48 int a =10; char c = A; System.out.println(a+c); //结果为75
算数运算符++ 之中的小问题.是从左向右计算,然后在向左赋值
int x = 4; int x2 = 4; int y = (x--)+(--x)+(x*10); //4+2+20=26 (x--)值为4,x为3;然后(--x)值为2,x为2; int y2 = (--x2)+(x2--)+(x2*10); //3+3=26 (--x2)值为3,x2为3;然后(x2--)值为3,x2为2; System.out.println("x = " + x + ",y = " + y+ ",y2 = " + y2); //x = 2,y = 26,y2 = 26
算数运算符++ 之中的天坑
int a=1,b=0; b=a++; //先赋值再进行自加一运算 这段程序结果得, b=1,a=2 int a=1; a=a++; //a先把值赋给自己为1,然后a再加1 这段程序结果得, a=1,很奇怪有木有???
这里涉及到操作系统的知识,简单说一下:我们平时的变量和对象都是在内存中开一块内存的.而运算只有cpu能运算.这个题目里面的坑是a把值赋给本身后自加一时的运算仅仅只在cpu中,计算的结果存在了寄存器中,并没有赋给内存中的变量.
也就可以理解为:=赋值运算符就是把cpu寄存器中的结果存到内存中去;
基本的复制运算符:=
扩展的赋值运算符:+= -= *= /=
+=拿左面的和右边的数据做+,然后把结果赋值给左边
注意:扩展的赋值运算符,隐含了强制类型转换,强制类型为左面的类型
例如:变量a,a+=10;相当于a=(a的数据类型)(a+10);
关系运算符==,!=, , , =, =
关系运算符的结果是boolean类型.
逻辑运算符逻辑运算符是用来连接关系表达式的
,|,!,^(异或相同则false,不同则true,可以理解为情侣关系,性别相同的不是情侣,性别不同的是情侣)
(和 结果一样),||(和|结果一样)
三元运算符关系表达式?表达式1:表达式2
A.计算关系表达式的值,看是true还是false B.如果是true,表达式1就是结果;如果是false,表达式2就是结果
三元运算符也是返回值的.
//根据判断给result赋值 result = n =90?A:(n 60?C:B); //切勿写成 n =90?result=A:(n 60?result=C:result=B);
//s = i+s; //报错 cannot convert from int to short s += i; //+=赋值运算符有显示类型转换功能,相当于s=(short)s=i;!!! System.out.println("s="+s); //80 int x = 0; int y = 0; int z = 0; boolean a,b; a = (x 0) (y++ //false false System.out.println("a="+a); //false System.out.println("y="+y); //1 b = (x 0) (z++ //false第一个false那么第二个就不运算 System.out.println("b="+b); //false System.out.println("z="+z); //所以此处为0,而不是1 a = (x 0) | (y++ //false|false System.out.println("a="+a); //false System.out.println("y="+y); //2 b = (x 0) || (z++) //false||false短路运算,第一个为true时第二个不运算 System.out.println("b="+b); //false System.out.println("z="+z); //1
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17840.html
cjava相关文章
- 一篇文章弄懂Java多线程基础和Java内存模型
- java中文乱码_Java中文乱码问题的解决方案[通俗易懂]
- java messagedigest_Java 自带的加密类MessageDigest类(加密MD5和SHA)[通俗易懂]
- 编写java判断闰年_Java 判断闰年代码实例
- 大数据必学Java基础(五十八):Map接口讲解
- 大数据必学Java基础(六十一):同步类容器对比应用
- java复习基础篇——类型转换详解编程语言
- java基础之反射机制详解编程语言
- Java基础学习笔记四 Java基础语法详解编程语言
- Java基础学习笔记十七 集合框架(三)之Map详解编程语言
- java 检测 Java 是否运行在64bit 的JVM上详解编程语言
- Java基础加强之并发(四)synchronized关键字详解编程语言
- java基础学习总结——多态(动态绑定)详解编程语言
- java基础学习总结——Object类详解编程语言
- Java Socket实战之一 单线程通信基础socket详解编程语言
- Java基础之多线程实例详解编程语言
- java基础提升篇之Iterator迭代器详解编程语言
- java语言入门基础新接触java的程序员可以收藏详解编程语言
- java基础之switch语句的深入解析详解编程语言
- 如何使用Java连接MySQL数据库(java怎么连接mysql数据库)
- Linux安装Java: 迈出第一步(linux上安装java)
- 技巧Linux环境下提高Java编译效率的技巧(linux下java编译)
- 使用Java连接SQL Server数据库,轻松实现数据交互(java连sqlserver)
- Java与Oracle联手赋能全新版本面世(java版本oracle)
- Java模拟Oracle实现稳定数据库性能(java模仿oracle)
- 数据库以Java运行环境构建基于Oracle的数据库(java创建oracle)