Java学习中,所遇到的一些问题及解决方案
来源:互联网 发布:memories语言软件 编辑:程序博客网 时间:2024/04/29 10:58
1、在使用BigDecimal数据类型做除法运算的时候,弹出如下异常:
public static void main(String[] args){ BigDecimal a = new BigDecimal(1000); BigDecimal b = new BigDecimal(1500); System.out.println(a.divide(b));}Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. at java.math.BigDecimal.divide(BigDecimal.java:1690) at test.Test.main(Test.java:16)
问题出现的原因是:
a和b相除的结果不能使用一个有限的decimal数表示。
所以为了解决这个问题,我们应该给结果设置一个范围。代码如下
public static void main(String[] args){ BigDecimal a = new BigDecimal(1000); BigDecimal b = new BigDecimal(1500); System.out.println(a.divide(b, 2, BigDecimal.ROUND_HALF_UP));}
这个问题,我在网上也找过一些答案,如,有一个说给divide方法设置一个小数点精度,a.divide(b, 2)
,就那上面代码的值做输入,得到的结果却是1,很明显这不一定是我们想要的答案。
2 在使用bytebuffer时,如果你想读取buffer中的byte,可以调用buffer.readByte()
或buffer.readBytes(length)
。buffer.readByte()
直接返回一个字节的数据,buffer.readBytes(length)
返回length个字节的数据。在这里,如果你需要的是一个array型的数据,你可以直接使用buffer.readBytes(length).array()
。当你仅仅需要一个字节的数据时,length设置为1即可。
3 在今天码代码的过程中,被指出有些代码有些冗余。
public void test(){ String hexAltposi = "e8"; ChannelBuffer posi = ChannelBuffer.copiedBuffer(StrUtil.hexStringToBytes(hexAltposi)); //hexStringToBytes()是把hexAltposi由16进制字符串转换成字节 //希望从buffer中取出数,并转化成int,先写出之前的代码 System.out.println(Util.asInt(StrUtil.bytesToHexString(posi.readBytes(1).array()))); //再码出现在的代码 System.out.prinlen((int) posi.readUnsignedByte());}
出现这种情况的原因,是因为自己对Buffer API的认识不足。
我在这里再列出几个API的小技巧吧。
①buffer.readableBytes()
不会使buffer的读取索引值增加或减少
②buffer.skipBytes(length)
会直接使buffer的读取索引值增加length。当你的buffer中含有一些你用不知道 字段或者在buffer的末尾有一些不用的字段,可以直接使用此方法跳过。
③有时(int) buffer.readByte()
时读取的数据会变成负的值,这里需要使用(int) buffer.readUnsignedByte()
。
…
4 对于Integer var = ? 在-128至127范围内的赋值,Integer对象是在IntegerCache.cache产生,会复用已有对象,这个区间内的Integer值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐适应equals方法进行判断。(这一段引用的是阿里巴巴java开发手册中的话)
此博客持续更新中……
- Java学习中,所遇到的一些问题及解决方案
- 学习java所遇到的问题与解决方案记录
- Oracle安装过程中遇到的一些问题及解决方案
- hbase测试过程中遇到的一些问题及解决方案
- android开发中遇到的一些问题及解决方案
- 网页制作中遇到的一些问题及解决方案
- 编程中遇到的一些问题及解决方案
- Java学习中遇到的一些问题
- 学习Java中遇到的一些问题
- myeclipse 遇到的一些问题及解决方案
- myeclipse 遇到的一些问题及解决方案
- myeclipse 遇到的一些问题及解决方案
- PCL:遇到的一些问题及解决方案
- struts学习中遇到的小问题及解决方案
- python学习:编码中遇到的问题原因及解决方案
- Android学习中遇到的问题及解决方案
- 学习和工作中遇到的Python问题及解决方案
- java web开发中遇到的问题及解决方案(个人学习日志,持续更新)
- Tensorflow-解析文件路径
- word2vec 中的数学原理详解(一)目录和前言
- JVAV几种常见的编码格式
- 信息反思
- linux的tar命令
- Java学习中,所遇到的一些问题及解决方案
- httpie请求使用
- 考试总结11
- java 序列化定义的 serialVersionUID 有什么作用
- 2017-10-27周测试题
- 今天看到新闻说多久换手机
- ReentrantLock实现原理分析
- 现代都市女性所爱的潮流搭!
- 论文解析之Image Restoration Using Very Deep Convolutional Encoder-Decoder Networks with Symmetric Skip Co