第三章 操作符
2016-09-07 11:45
169 查看
第三章 操作符
标签(空格分隔): AgainThinkingInJava挑出几个似乎已经忘记了的点
别名问题Random类对象的种子
短路
直接常量
移位操作符的道道
Java中为什么没有sizeof()
别名问题
这个问题就是说的String s=new String (); String s1; s1=s;
此时
s1与
s是指向的同一个对象,假如执行语句
s1=new ("dhgh"),则在执行语句
System.out.println(s)会输出
dhgh。
事实上我记得有的资料在解释引用的时候就是讲的引用是一个变量的别名。
于是牵扯出了一个更大的问题就是,调用方法的时候,虽然很多人知道是复制的引用,但是不知道原理,这里的原理就是别名现象。是不是有一种顿悟的感觉。
Random类的种子
很多人知道要给种子或者可以不给种子,但是很多人在使用的并不知道在什么场合选择什么样的方式。Random rand =new Random(47);
给一个数字的目的是产生相同序列的随机数,假如有的场合你需要多次产生相同的随机数序列就可以使用这种方式,可能有的人不是很理解,什么叫相同的随机数序列,多动脑。
Random rand =new Random();
这种方式就是默认用时间作为随机数生成器的种子,每次生成的随机数序列都不一样
短路
书中对于短路的证明很到位,短路就是说的,要是吃两个包子就已经饱了,就不用再多吃了。直接常量
都知道在定义常量的时候怎么定义,都知道双精度常量数要这样double d=1.2d;
但是不知道应该怎么来描述,好吧,这样直接定义的变量叫直接常量,与什么局部变量,全局变量还是很有区别的,只是范围的问题。至于末尾加的d字母,是为了对编译器进行指导
注意到二进制数是没有直接变量表示的,和C++一样,可以使用某种方法将值进行转化成二进制数。Java中就是
Integer.toBinaryString(),当然显然是对int类型及以下的基本数据类型使用。单双精度都不可以。我就奇怪难道二进制小数就没办法转了?,还有一点值得注意的这个方法对前导零无感,输出的时候不会出现前导零。
移位操作符的道道
一个数字进行左移。没问题,直接低位及以上整体左移,低位补0.一个数字进行右移,如果是无符号,右移的操作符变为
>>>,无论正负都是在高位插入0.这叫
零扩展
如果是有符号的,右移操作符不变,但是假如符号位为正,就在高位连续的补0,假如为负,就在高位补1。,这叫
符号扩展
当然要是有人问为什么说无符号但是还有正负呢。因为计算机中的数字二进制是用补码表示的。
Java中为什么没有sizeof()
这个sizeof()本来是C系列用来测量为数据项分配的字节数。C和C++要用这个方法在“移植”的时候出力。因为在不同的机器上就算是相同的数据类型都可能被分配不一样的大小。比如在一个32位机器和64位机器上跑同一个程序就要考虑考虑这个问题。但是Java不需要,所有的数据类型在所有的机器中的大小是相同。不必考虑移植问题,因为它已经被设计在语言中了。
相关文章推荐
- 第三章 操作符
- 第三章.操作符
- 第三章 操作符
- JavaScript高级程序设计第三章基本概念——操作符
- 第三章 操作符
- Java编程思想 第三章 java操作符 学习心得
- Java 编程思想——第三章 操作符总结
- 第三章 操作符
- java编程思想第三章 操作符 笔记
- 第三章:操作符(这是我第三遍编辑了,因为bug)
- JavaScript高级程序设计第三章——操作符和语句
- java编程思想第三章总结--操作符
- 【C】【笔记】《C和指针》 第一章 快速上手 第二章 基本概念 第三章 数据 第四章 语句 第五章 操作符和表达式
- 【java编程思想笔记】第三章—操作符
- perl5 第三章 操作符
- Thinking in Java——第三章-操作符
- Think in java 第三章 操作符 第四章 控制执行流程
- 第三章 操作符(下)
- 第三章 操作符与控制结构
- Java编程思想第四版读书笔记——第三章 操作符