Java基础-运算符(03)
概念:
运算符:就是对于常量和变量进行操作的符号.
表达式:用运算符连接起来的符合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)的更多相关文章
- 033 01 Android 零基础入门 01 Java基础语法 03 Java运算符 13 运算符和表达式知识点总结
033 01 Android 零基础入门 01 Java基础语法 03 Java运算符 13 运算符和表达式知识点总结 本文知识点:运算符和表达式知识点总结 前面学习的几篇文都是运算符和表达式相关的知 ...
- 032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例——闰年问题
032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例--闰年问题 本文知识点:运算符和if-else条件语句的综合案例 ...
- 031 01 Android 零基础入门 01 Java基础语法 03 Java运算符 11 运算符的优先级
031 01 Android 零基础入门 01 Java基础语法 03 Java运算符 11 运算符的优先级 本文知识点:Java中运算符的优先级 运算符的优先级问题 前面学习了很多的运算符,如果这些 ...
- 030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符
030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符 本文知识点:Java中的条件运算符 条件运算符是Java当中唯一一个三目运算符 什么是三目运算 ...
- 029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑“非”运算符
029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑"非"运算符 本文知识点:Java中的逻辑"非"运算符 逻辑& ...
- 028 01 Android 零基础入门 01 Java基础语法 03 Java运算符 08 逻辑“或”运算符
028 01 Android 零基础入门 01 Java基础语法 03 Java运算符 08 逻辑"或"运算符 本文知识点:Java中的逻辑"或"运算符 逻辑& ...
- 027 01 Android 零基础入门 01 Java基础语法 03 Java运算符 07 逻辑“与”运算符
027 01 Android 零基础入门 01 Java基础语法 03 Java运算符 07 逻辑"与"运算符 本文知识点:Java中的逻辑"与"运算符 逻辑运 ...
- 026 01 Android 零基础入门 01 Java基础语法 03 Java运算符 06 if-else条件结构
026 01 Android 零基础入门 01 Java基础语法 03 Java运算符 06 if-else条件结构 本文知识点:Java中的if-else条件结构语句 上文回顾--if条件结构 如果 ...
- 025 01 Android 零基础入门 01 Java基础语法 03 Java运算符 05 if条件结构
025 01 Android 零基础入门 01 Java基础语法 03 Java运算符 05 if条件结构 本文知识点:Java中的if条件结构语句 关系运算符回顾 生活中根据条件进行判断采取不同操作 ...
随机推荐
- [js高手之路]Node.js+jade抓取博客所有文章生成静态html文件
这个周末,恶补了一下jade模板引擎,就为生成静态html文件,这篇文章需要知道jade以及看过我的上篇文章,我先给出他们的参考链接: [js高手之路]Node.js模板引擎教程-jade速学与实战1 ...
- html css 前端基础 学习方法及经验分享
前言: 入园第一天,想分享一点儿前端基础html css 的学习方法和一些经验给热爱前端,但是不知道从哪儿开始,依旧有些迷茫的新手朋友们.当然,适合每个人的学习方式不同,以下所讲的仅供参考. 一.关于 ...
- 03标准对象-02-RegExp 正则表达式
1.基本概念 和 定义 用一种描述性的语言来给字符串定义一个规则,你可以形象地理解正则表达式是一个"框",凡是符合大小形状条件的字符串,都算是"匹配"了. JS ...
- Oracle中Union与Union All的区别(适用多个数据库)
Oracle中Union与Union All的区别(适用多个数据库) 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或 ...
- Linux下Birt、JTreeChart中文乱码问题解决办法
Linux下JTreeChart,Birt等报表工具显示中文乱码解决 1) 现象: 在Windows上生成的报表图片展示正常,但是在Linux上显示(怪异的小方块“口”): 2)问题定位: 这是lin ...
- JVM(四)内存回收(二)
在上一节中"JVM(三)内存回收(一)"我讲到了垃圾回收的几种算法,算是解决了之前提到的3个问题中的最后一个. 关于内存回收,还应该了解常用的内存回收器(GC Collector) ...
- javascript插入before(),after()新DOM方法
随着web的技术突飞猛进的发展.HTML5 ES6等新技术的发展,与此同时DOM等标准也在悄悄的进步,各大浏览器也在悄悄的发展适配新的属性和方法,今天我们来看看Javascript新的DOM的方法 二 ...
- java编程基础复习-------第二章
一.标识符 java中标识符的命名规则: 以数字.字母.下划线和$符号组成:不能用数字开头:不能是java的关键字. 注意:不要用$命名标识符.习惯上,$只用在机器自动产生的源代码中. 二.关键字 1 ...
- Linux入门之常用命令(12) mount
查看Linux所有设备 cd /dev ls -l sd* //分区 查看Linux磁盘 fdisk -lu 挂载 一般挂载至/mnt /media mount /dev/sda5 /mnt/ ...
- 如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目
如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目 #1:前提准备 1.1 首先请确认你的电脑是windows10专业版或企业版,只有这 ...