第三章 Java的基础程序设计结构
一个简单的 Java 应用程序
- 访问修饰符 public,private,protected
- main 方法必须时public修饰的,C#则不必须
数据类型
- 可以用16进制表示浮点数
- 可以用2,8,16进制表示整数
- Double.POSITIVE_INFINITY,Double.NEGATIVE_INFINITY,DOUBLE.NaN 分别表示正无穷,负无穷,不是数值; if(x==Double.NaN) 永不成立,可以使用Double.isNaN(x)判断
- 强烈建议不要在程序中使用char,除非必须,可以使用String替代
运算符
- 整数被0除会抛出异常,浮点数则会得到无穷大或NaN结果
- 最初的JVM计算浮点时规定必须截断,这样在不同类型机器上可以得到一致的结果,但后来这点被修改, JVM设计者允许中间结果采用扩展的精度. 但是经过strictfp修饰的方法/类必须截断. 使用strictfp的方式可能产生溢出, 但不属于什么大问题.
- Math.floorMod 是为了解决有关整数余数的问题,即计算机设计中负数的余数为负数导致的不方便
- StrictMath类能提供比Math更精确,更可预测的结果
- int x; x+=3.5; 是合法的,结果为(int)(x+3.5)
字符串
- StringBuilder 和 StringBuffer 的API是一样的, 不同的是StringBuffer是线程安全的,但使用StringBuilder效率较高;
流程控制语句
for中检测两个浮点数需要格外小心,for ( double x = 0 ; x ! = 10 ; x + = 0.1 ) 可能永远不会结束, 因为0.1不能精确用二进制表示
Java允许有标签的break语句,对嵌套循环的跳出到开头可以使用此类语句
数组
- Arrays.copyOf()方法用于数组拷贝,将原数组的每个元素拷贝到新数组中去,通常用于数组扩容
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
java源码 - ReentrantReadWriteLock介绍
开篇 ReentrantReadWriteLock是Lock的另一种实现方式,我们已经知道了ReentrantLock是一个排他锁,同一时间只允许一个线程访问,而ReentrantReadWriteLock允许多个读线程同时访问,但不允许写线程和读线程、写线程和写线程同时访问。 相对于排他锁,提高了并发性。在实际应用中,大部分情况下对共享数据(如缓存)的访问都是读操作远多于写操作,这时ReentrantReadWriteLock能够提供比排他锁更好的并发性和吞吐量。 这个系列主要是从源码层面讲解ReentrantReadWriteLock,总共分为3篇,欢迎订阅。 ReentrantReadWriteLock的数据结构介绍 java源码 - ReentrantReadWriteLock读锁介绍 java源码 - ReentrantReadWriteLock写锁介绍 ReentrantReadWriteLock类 ReentrantReadWriteLock类包含三个核心变量: readerLock:读锁。 writerLock:写锁。 sync:可以为公平锁FairSync 或...
- 下一篇
java源码 - ReentrantReadWriteLock写锁介绍
开篇 这篇文章主要从源码角度讲解ReentrantReadWriteLock的WriteLock的加锁和减锁过程。 ReentrantReadWriteLock的WriteLock加锁解锁过程依赖于AbstractQueuedSynchronizer(AQS)类,所以有些相同的逻辑可以看看ReentrantLock的逻辑。 ReentrantReadWriteLock的数据结构介绍 java源码 - ReentrantReadWriteLock读锁介绍 java源码 - ReentrantReadWriteLock写锁介绍 加锁过程 WriteLock的lock()内部通过sync.acquire(1)获取锁。 尝试通过tryAcquire获取写锁,如果获取成功那么就成功占用写锁。 获取写锁失败后,将当前线程添加到写锁唤醒队列当中acquireQueued(addWaiter(Node.EXCLUSIVE), arg))。 acquireQueued(addWaiter(Node.EXCLUSIVE), arg))的操作逻辑和ReentrantLock的逻辑一致。 public s...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker快速安装Oracle11G,搭建oracle11g学习环境