《Java编程思想》笔记 第三章 操作符
2024-08-23 02:18:42
1.操作符种类:
运算顺序1-7
- 一元操作符(单目操作符) - 负号, + 正号,--递减,++递增
- 算术操作符 + - * / %
- 移位操作符 <<左移(低位补0),>>右移(负数高位1,正数高位补0), >>>无符号右移 (无论正负高位补0)(对二进制),(可与 = 结合使用 <<= >>= >>>= 类似 i += 1)
- 关系操作符 > < >= <= == != (生成boolean值)
- 逻辑操作符 && || ! (生成boolean值)
- 按位操作符 &与 | 或 ^ 异或 ~ 非(一元) (对二进制)
- 三元操作符
boolean-exp? value0 : value1 //如果表达式为真则为值value0,为假则为value1
2.前缀式和后缀式
- 前缀式 -- ++ 如 --i; ++i; 先对i执行-1,+1 ,再赋值给i然后执行后面的运算;
- 后缀式 -- ++ 如 i--; i++; 运算(i--)结束后立刻再对i进行-1 +1;
- 后缀式有一个陷阱就是 i = i++ , 这代码有坑, i 不会自增,原因
int s = 1;
int i = s++ * 3;
System.out.println(s);//
System.out.println(i);//
s = 1;
i = ++s * 3;
System.out.println(s);//
System.out.println(i);//
s = 1;
i = s++ + (s * 3);
System.out.println(s);//
System.out.println(i);//
4. 因后缀式在表达式中位置不同而造成计算结果的不同
int g = 5; //表达式g + (g++ + g) 在内存中从左往右加载,计算时按优先级计算
int i = g + (g++ + g); //第一个g=5, g++为5 最后一个g为6, 向内存中加载数据时第一个g是5,加载运算完g++后,之后的g就是6
System.out.println(i);//
g = 5;
i = g++ + (g + g);//g++为5 后两个g为6
System.out.println(i);//
3.别名现象: 不同引用指向同一个对象
4.随机数生成
Random rand = new Random() ;
int k = rand.nextInt(100);
int j = rand.nextFloat(); //0.0~1.0间 位数不一定
- 创建Random对象时没有参数(种子)传入,会以当前时间作为随机数生成器的种子传入
- 对于相同的种子会长生相同的随机数序列,当前时间不停在变随机数序列也不同
- 生成不同类型随机数调用对应方法即可
- nextInt()方法的参数决定了随机数的上限,同时也决定了下限0,做除数时要+1
5. 短路:
- 使用逻辑操作符时会出现不再计算表达式余下部分例如:test1() && test2() && test3();
- 如果首先计算出test1()为false,那么false && test2 肯定为false,test2()就不会执行,【false && test2】为false test3()也不会执行,如果&&成了|| 那么就要执行test3()了。
6.直接常量规范
- float 或 Float 赋初始值时使用L 如 float f = 2L; double加d或者D,16进制数前缀0X, 8进制前缀o
7.基本数据间的类型转换详情
- byte,short,char 运算时会将结果提升为int
- 类型自动提升 小范围类型 + 大范围类型 = 大范围类型 (byte,short,char) int long float double 依次增大
- char c = 'a' 转整型会转为对应ASCII码值,char c = 98 转String会转为对应字符
- float, double转为整型直接结尾,不会四舍五入,四舍五入使用java.lang.Math中的round()方法。
8.数据类型
最新文章
- 喜马拉雅音频下载器 V1.2 支持专辑批量下载 喜马拉雅mp3下载导出 喜马拉雅下载器
- Install and Configure SharePoint 2013 Workflow
- asp.net core 简单部署
- (转)实现DataList的分页 新增列
- Deep Learning 6_深度学习UFLDL教程:Softmax Regression_Exercise(斯坦福大学深度学习教程)
- iOS开发UI篇—多控制器和导航控制器简单介绍
- Linux下的ntpd和ntpdate
- Linux apt-get
- C#/ASP.NET/AJAX
- [笔记]我的Linux入门之路 - 04.Eclipse安装
- SVN:Cleanup failed to process the following paths
- 【learning】二分图最大匹配的K&#246;nig定理
- [转]Python多进程并发操作中进程池Pool的应用
- js面向对象学习
- “妄”眼欲穿-CSS之flex布局和边框阴影
- 【SoftwareTesting】Homework3
- 为什么我的Linux ls命令不能用了?
- 前端语言生成apk
- php操作mysql几个常用操作
- SQL查询日历
热门文章
- Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】
- BZOJ 3670 NOI2014 动物园 KMP+dp
- SPOJ 1812 Longest Common Substring II(后缀自动机)(LCS2)
- 进程id
- C#中async和await用法
- Nova Cell
- 【题解】HAOI2008硬币购物
- vue 时间戳转 YYYY-MM-DD h:m:s
- Linux(CentOS)用split命令分割文件
- win7下用U盘装ubuntu双系统 安装完后进入ubuntu黑屏光标问题