《Java编程思想》笔记 第三章 操作符
2018-02-10 20:34
197 查看
1.操作符种类:
运算顺序1-7
1)一元操作符(单目操作符) - 负号, + 正号,--递减,++递增
2)算术操作符 + - * / %
3)移位操作符 <<左移(低位补0),>>右移(负数高位1,正数高位补0),
>>>无符号右移 (无论正负高位补0)(对二进制)
(可与 = 结合使用 <<= >>= >>>= 类似 i += 1) 移位操作符详解
4)关系操作符 > < >= <= == != (生成boolean值)
5)逻辑操作符 && || ! (生成boolean值)
6)按位操作符 &与 | 或 ^ 异或 ~ 非(一元) (对二进制)
7)三元操作符 boolean-exp? 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);//2
System.out.println(i);//3
s = 1;
i = ++s * 3;
System.out.println(s);//2
System.out.println(i);//6
s = 1;
i = s++ + (s * 3);
System.out.println(s);//2
System.out.println(i);//7因后缀式在表达式中位置不同而造成计算结果的不同
2.别名现象: 不同引用指向同一个对象
3.随机数生成 Random rand = new Random() ;
int k = rand.nextInt(100);
int j = rand.nextFloat(); //0.0~1.0间 位数不一定
1) 创建Random对象时没有参数(种子)传入,会以当前时间作为随机数生成器的种子传入
2)对于相同的种子会长生相同的随机数序列,当前时间不停在变随机数序列也不同
3)生成不同类型随机数调用对应方法即可
4)nextInt()方法的参数决定了随机数的上限,同时也决定了下限0,做除数时要+1
4. 短路: 使用逻辑操作符时会出现不再计算表达式余下部分例如:test1() && test2() && test3();
如果首先计算出test1()为false,那么false && test2 肯定为false,test2()就不会执行,【false && test2】为false test3()也不会执行,如果&&成了|| 那么就要执行test3()了。
5.直接常量规范 float 或 Float 赋初始值时使用L 如 float f = 2L; double加d或者D,16进制数前缀0X, 8进制前缀o
6.基本数据间的类型转换详情
1) byte,short,char 运算时会将结果提升为int
2)类型自动提升 小范围类型 + 大范围类型 = 大范围类型 (byte,short,char) int long float double 依次增大
3) char c = 'a' 转整型会转为对应ASCII码值,char c = 98 转String会转为对应字符
4) float, double转为整型直接结尾,不会四舍五入,四舍五入使用java.lang.Math中的round()方法。
7 数据类型
运算顺序1-7
1)一元操作符(单目操作符) - 负号, + 正号,--递减,++递增
2)算术操作符 + - * / %
3)移位操作符 <<左移(低位补0),>>右移(负数高位1,正数高位补0),
>>>无符号右移 (无论正负高位补0)(对二进制)
(可与 = 结合使用 <<= >>= >>>= 类似 i += 1) 移位操作符详解
4)关系操作符 > < >= <= == != (生成boolean值)
5)逻辑操作符 && || ! (生成boolean值)
6)按位操作符 &与 | 或 ^ 异或 ~ 非(一元) (对二进制)
7)三元操作符 boolean-exp? 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);//2
System.out.println(i);//3
s = 1;
i = ++s * 3;
System.out.println(s);//2
System.out.println(i);//6
s = 1;
i = s++ + (s * 3);
System.out.println(s);//2
System.out.println(i);//7因后缀式在表达式中位置不同而造成计算结果的不同
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);//16 g = 5; i = g++ + (g + g);//g++为5 后两个g为6 System.out.println(i);//17
2.别名现象: 不同引用指向同一个对象
3.随机数生成 Random rand = new Random() ;
int k = rand.nextInt(100);
int j = rand.nextFloat(); //0.0~1.0间 位数不一定
1) 创建Random对象时没有参数(种子)传入,会以当前时间作为随机数生成器的种子传入
2)对于相同的种子会长生相同的随机数序列,当前时间不停在变随机数序列也不同
3)生成不同类型随机数调用对应方法即可
4)nextInt()方法的参数决定了随机数的上限,同时也决定了下限0,做除数时要+1
4. 短路: 使用逻辑操作符时会出现不再计算表达式余下部分例如:test1() && test2() && test3();
如果首先计算出test1()为false,那么false && test2 肯定为false,test2()就不会执行,【false && test2】为false test3()也不会执行,如果&&成了|| 那么就要执行test3()了。
5.直接常量规范 float 或 Float 赋初始值时使用L 如 float f = 2L; double加d或者D,16进制数前缀0X, 8进制前缀o
6.基本数据间的类型转换详情
1) byte,short,char 运算时会将结果提升为int
2)类型自动提升 小范围类型 + 大范围类型 = 大范围类型 (byte,short,char) int long float double 依次增大
3) char c = 'a' 转整型会转为对应ASCII码值,char c = 98 转String会转为对应字符
4) float, double转为整型直接结尾,不会四舍五入,四舍五入使用java.lang.Math中的round()方法。
7 数据类型
相关文章推荐
- java编程思想第三章 操作符 笔记
- Thinking in JAVA笔记——第三章 操作符 &第四章控制执行流程
- 《java编程思想》_第三章_操作符
- 《java编程思想》第三章笔记之自增自减运算符
- 【C】【笔记】《C和指针》 第一章 快速上手 第二章 基本概念 第三章 数据 第四章 语句 第五章 操作符和表达式
- 《java编程思想》第三章:操作符
- Thinking In Java笔记(第三章 操作符)
- 《JAVA编程思想》笔记-操作符&控制执行流程
- Java编程思想笔记——第三章 操作符
- 【java编程思想笔记】第三章—操作符
- Java编程思想第四版-第二、三章(一切都是对象、操作符)笔记
- 第三章《操作符》的笔记——别名问题等
- #Thinking in Java阅读笔记# 第三章 操作符
- thinking in java 笔记 思维导图 第三章操作符
- java 编程思想的学习笔记 - 第三章 操作符 第四章 控制执行
- 《JAVA编程思想》学习笔记——第三章 操作符
- java学习笔记第三章
- 《机器学习导论》第三章 贝叶斯决策定理 学习笔记
- 《GPU编程与CG语言之阳春白雪下里巴人》阅读笔记 第三章+第四章
- ATL开发指南第三章笔记