JAVA运算符

来源:互联网 发布:怎样添加图表数据 编辑:程序博客网 时间:2024/06/05 09:02

JAVA有算术运算符,关系运算符,逻辑运算符,赋值运算符,条件运算符,字符串连接运算符,位运算符,移位运算符等



1 算术运算符

+   -     x    /     %    ++      --

 1)运算结果可能超出数据类型表示范围;

 2)除法 整数相除,结果为整数,舍弃小数部分;

 3)除法 除数为0,编译没有语法错误,运行会产生算术异常。

                       整数相除时,除数不能为0

 4)求余 ,余数的符号与被除数的符号一致;

 5)自增与自减,有前缀++x和后缀x--两种形式,

                        前缀先自增再运算 //y=++x   y=x+1

                        后缀先运算再自增 //y=x++   y=x  x=x+1

注:自增自减隐藏强制类型转换

 6)整数,小数,字符都可以参与运算,如果有多个数据类型参与运算

则:如果有double类型,则整个表达式就是double类型

优先值double>long>int,最低为int。

 算术表达式就是用算术运算符连接起来的式子。




2关系运算符

> >=<<===!=

关系运算符的结果是一个布尔值(true/false)

字符串的比较

字符串使用string定义,string式系统定义的一个类

  string str1="abc";//直接赋值字符串字面量

string str2="ab"+"c";//使用加号进行字符串的连接

string str3=new string("abc");//使用string类的构造方式创建字符串对象

JAVA把内存分为栈区,堆区,方法区三块。

字符串字面量存储在方法区的常量区里,系统先在常量区中查找这个字符串是否存在,如果不存在就把字符串存在常量区,然后把常量区的存储地址赋值给变量。

如果常量区中有这个字符串,就直接把这个字符串的地址赋值给变量

"ab"+"c"是两个字符串常量进行连接生成一个新的字符串常量,和"abc"没什么不同

使用new string创建的,new会在中分配一块存储空间


如上,如果用string比较字符串,实际比较的是字符串的地址,如果想直接比较字符串,可以使用equals()方法

例:system.out.println(str1.equals(str2));     比较两个字符串

system.out.println("abc".equals(str2));  也可以直接比较





3逻辑运算符


逻辑与&,逻辑或|,逻辑异或^,逻辑非!,短路与&&,短路或||

1逻辑运算符是对布尔值进行运算的

                                                                                    与&

操作数1操作符操作数2运算结果ture&truetruetrue&falsefalsefalse&truefalsefalse&falsefalse只有两个数都是true,结果才是true

                                                                                 或|

操作数1操作符操作数2运算结果ture|truetruetrue|falsetruefalse|truetruefalse|falsefalse

个数都是false,结果才是false
                                                                               异或^

操作数1操作符操作数2运算结果ture^truefalsetrue^falsetruefalse^truetruefalse^falsefalse

两个数不一样,结果才是true


                                                                                 非!
操作数1操作符操作数2运算结果 !truefalse !falsetrue

只有一个操作数


2逻辑运算符经常用于连接多个布尔表达式。

3短路与&&,操作结果与逻辑与&一样。

短路与&&,如果左侧表达式为false,不计算右侧表达式的值了。

短路或||,如果左侧为true,不计算右侧表达式的值了。

建议使用短路与,短路或,优化代码





4赋值运算符

变量=表达式

把表达式的值赋值给左侧的变量

注意:表达式的数据类型要与左侧变量的类型兼容


复合赋值/自反赋值 :+=,-=,*=,/=

如:x +=5,相当于x=x+5

复合类型隐含强制类型转换





5条件运算符

条件?表达式1:表达式2

如果条件成立,整个表达式的值就是表达式1的值

如果条件成立,整个表达式的值就是表达式2的值

例: 

class Demo01{public static void main (String[]args) {int num1=80;int num2=40;int result =num>num2 ? num1:num2;system.out.println(result);}}


/*

如果num1>num2成立,就把num1的值赋值给变量result

如果num1>num2不成立,酒吧num2的值赋值给变量result

就是把num1和num2中最大的数保存到变量result

*/





6字符串的连接运算符

+

连接两个字符 如: "hello"+"world" //输出helloworld 。

字符串可以与基本类型进行连接,会先把基本类型数据转换为字符串再连接。

基本数据类型定义给字符串

string str=123 //错误

string str2= ""+123

str2=""+true



7位运算符

按位于&,按位或|,按位异或^,按位取反~

&|^和逻辑运算符一样,即&|^两侧为布尔值,就是逻辑操作。如果两侧是整数就是按位操作。不能同时拿布尔和整数使用

位运算是对整数的二进制位进行运算。







原创粉丝点击