概念:

运算符:就是对于常量和变量进行操作的符号.

表达式:用运算符连接起来的符合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');
        short s = 30;
int i = 50;
//s = i+s; //报错 cannot convert from int to short
s += i; //+=赋值运算符有显示类型转换功能,相当于s=(short)s=i;!!!
System.out.println("s="+s); //
int x = 0;
int y = 0;
int z = 0;
boolean a,b;
a = (x>0) & (y++>1); //false&false
System.out.println("a="+a); //false
System.out.println("y="+y); //
b = (x>0) && (z++>1); //false第一个false那么第二个就不运算
System.out.println("b="+b); //false
System.out.println("z="+z); //所以此处为0,而不是1
a = (x>0) | (y++>1); //false|false
System.out.println("a="+a); //false
System.out.println("y="+y); //
b = (x>0) || (z++)>1; //false||false短路运算,第一个为true时第二个不运算
System.out.println("b="+b); //false
System.out.println("z="+z); //

Java基础-运算符(03)的更多相关文章

  1. 033 01 Android 零基础入门 01 Java基础语法 03 Java运算符 13 运算符和表达式知识点总结

    033 01 Android 零基础入门 01 Java基础语法 03 Java运算符 13 运算符和表达式知识点总结 本文知识点:运算符和表达式知识点总结 前面学习的几篇文都是运算符和表达式相关的知 ...

  2. 032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例——闰年问题

    032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例--闰年问题 本文知识点:运算符和if-else条件语句的综合案例 ...

  3. 031 01 Android 零基础入门 01 Java基础语法 03 Java运算符 11 运算符的优先级

    031 01 Android 零基础入门 01 Java基础语法 03 Java运算符 11 运算符的优先级 本文知识点:Java中运算符的优先级 运算符的优先级问题 前面学习了很多的运算符,如果这些 ...

  4. 030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符

    030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符 本文知识点:Java中的条件运算符 条件运算符是Java当中唯一一个三目运算符 什么是三目运算 ...

  5. 029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑“非”运算符

    029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑"非"运算符 本文知识点:Java中的逻辑"非"运算符 逻辑& ...

  6. 028 01 Android 零基础入门 01 Java基础语法 03 Java运算符 08 逻辑“或”运算符

    028 01 Android 零基础入门 01 Java基础语法 03 Java运算符 08 逻辑"或"运算符 本文知识点:Java中的逻辑"或"运算符 逻辑& ...

  7. 027 01 Android 零基础入门 01 Java基础语法 03 Java运算符 07 逻辑“与”运算符

    027 01 Android 零基础入门 01 Java基础语法 03 Java运算符 07 逻辑"与"运算符 本文知识点:Java中的逻辑"与"运算符 逻辑运 ...

  8. 026 01 Android 零基础入门 01 Java基础语法 03 Java运算符 06 if-else条件结构

    026 01 Android 零基础入门 01 Java基础语法 03 Java运算符 06 if-else条件结构 本文知识点:Java中的if-else条件结构语句 上文回顾--if条件结构 如果 ...

  9. 025 01 Android 零基础入门 01 Java基础语法 03 Java运算符 05 if条件结构

    025 01 Android 零基础入门 01 Java基础语法 03 Java运算符 05 if条件结构 本文知识点:Java中的if条件结构语句 关系运算符回顾 生活中根据条件进行判断采取不同操作 ...

随机推荐

  1. JAVA课程设计--------五子棋

    1.团队课程设计博客链接 http://www.cnblogs.com/mz201521044152/p/7065575.html 2.个人负责模块或任务说明 1.重新开始:写一个restartgam ...

  2. python 输出颜色的与样式的方法

    上次遇到这个问题就想写下来,其实当时我也不怎么会,老师说这个东西不需要理解,只需要死记硬背,写的多了就记住了,所以今天搜集了几篇文章,加上自己的理解,写下了这篇python 输出颜色的样式与方法的文章 ...

  3. Python数据分析numpy库

    1.简介 Numpy库是进行数据分析的基础库,panda库就是基于Numpy库的,在计算多维数组与大型数组方面使用最广,还提供多个函数操作起来效率也高 2.Numpy库的安装 linux(Ubuntu ...

  4. java 如何判断操作系统是Linux还是Windows

    String os = System.getProperty("os.name"); if(os.toLowerCase().startsWith("win") ...

  5. oracle-外连接left join的应用

    需求 自助设备交易统计 输入项 类型 可为空 备注 机构 选择 Y 采用下拉框的形式 终端号 手输 Y 与柜员号二选一 交易柜员号 手输 与终端号二选一 时间 选择 N 时间区间 状态 多选 设备状态 ...

  6. Java中数组的概念

    1.什么是二维数组?有几种表达方式?分别是什么? 答:多维数组即数组的数组,即数组的元素也是数组. 例:int[] [] a = {{1},{1,2},{1,2,3}}; 有三种方式 1).int [ ...

  7. 个人理解---在开发中何时加入日志记录功能[java]

    是这样的:俩个月前做的一个小功能,今天经理突然问我这个'清除复投记录'功能是不是我做的,我说是,很久以前了.他说昨天一个客户找过来了,后台把人家的复投记录清除掉了,不知道何时清除的,我记得当时做的时候 ...

  8. Linux 命令练习

     ls命令 ls就是list的简写,目的是打印当前目录下的清单 格式 ls[选项][目录名] 常用参数 -a –all 列出目录下的所有文件,包括以 . 开头的隐含文件 -l 除了文件名之外,还将文件 ...

  9. MySql Jar 包下载

    MySql JAR 包下载 我们要使用Spring 链接MySql  需要两个Jar 包   一个是C3p0   一个是MySql 的Connection Jar  包 C3p0: 进入下面的网址 h ...

  10. Zabbix 添加脚本检测IP变化

    监控环境 IP和HOSTNAME 有时会有变化.但目前是通过IP地址监控,不是DNS名,添加一个外部脚本,发现IP和HOSTNAME发生变化时告警. vim /usr/local/etc/zabbix ...