JAVA常用API的总结(2)
这篇是常用API的结束了,写完的话可以继续往后复习了。
1.基本类型包装类的介绍与相关代码实现
对于数据包装类的特点就是可以将基本数据类型与字符串来回切换,接下来我会通过介绍Integer类的形式,来代表大部分的基本类型包装类的知识点,原因是其余的包装类的使用与Integer类有90%的形式都是一样的。
public class Demo1 {
public static void main(String[] args) {
function();
}
public static void function() {
int i=Integer.parseInt("233"); //该方法用于将字符串转换为int型!!!
//字符串必须为数字格式的
System.out.println(i);
}
}
结果:233
public class Demo1 {
public static void main(String[] args) {
function1();
}
public static void function1() {
int i=Integer.parseInt("123",4); //该方法用于将指定进制数转换为十进制数
System.out.println(i);
}
}
结果:27
public class Demo1 {
public static void main(String[] args) {
function2();
}
public static void function2() {
String s=Integer.toString(5); //通过调用静态方法将基本数据类型转换为字符串
System.out.println(s+1);
int i=5;
String a=i+" "; //这种方式更为简单粗暴,但似乎和我们的Integer类没啥关系
System.out.println(a);
}
结果:51
5
public class Demo1 {
public static void main(String[] args) {
function3();
}
public static void function3() {
String s=Integer.toString(155,2); //将int型数转换为指定进制并返回字符串
System.out.println(s);
}
}
结果:10011011
这里我对于这些方法的总结看起来或许会因为没有文字介绍而显得令人很难受,但其实我都是将具体文字写在代码中的,由于这些方法的调用都极为简单,所以我就不一一详细介绍了。。。。。

2. JAVA的自动装箱与自动拆箱
java的自动拆箱与自动装箱功能是在jdk 1.5之后才引入的新的功能。
何为自动拆箱与自动装箱嘞?
我还是现将概念扔在最开始的地方吧,总觉得在讲解中穿插概念,会造成一些重要概念的遗漏。。。
自动装箱:基本数据类型,直接转变为引用数据类型。
自动拆箱:引用数据类型转变为基本数据类型。
下面我将通过一些代码以及文字来对其进行解释。
自动装箱:
Integer in=1;
我想问一下,我们平常是否见过这种直接可以给对象赋值的操作,或者在我们的印象中这种情况是否合理.我们都知道对象中存储的是堆内存中的地址,所以这其中一定有什么步骤被隐藏了。
Integer in=1;
Integer in=Integer.valueOf(1);
下面一行代码便是这个过程的完整代码.也就是说并不存在所谓的给对象赋值这种神仙操作,因为valueOf()方法最终返回的还是一个Integer类的对象。
这便是实现了自动装箱的概念:将基本数据类型直接转换为引用数据类型.
自动拆箱:
public class Demo2 {
public static void main(String[] args) {
Integer in=1;
int i=in+1;
System.out.print(i+“ ”); System.out.println(in);
} } 结果:2 1
这里又出现了一些有违我们以往的所学,一个引用数据类型怎么可能与一个基本数据类型进行加减法的运算嘞,并且我们输出的in不是一个对象吗?所以说这里边就又有门道啦。
System.out.println(in);
System.out.println(in.intValue()); //这两句话是等价的 int i=in+1; //这两句话是等价的
int i=in.intValue()+1;
若是看代码还是有些模糊的话,那我就再说一下intValue()方法的一些特点吧。

这是API中的介绍很明显通过这个方法就实现了自动拆箱:将引用数据类型直接转为基本数据类型.
再通过比较的方法来加深理解吧!!!
public class Demo2 {
public static void main(String[] args) {
Integer in=500;
Integer in1=500; //这两行边都是自动装箱啦
System.out.println(in==in1);
System.out.println(in.equals(in1)); //这里是自动拆箱
}
}
结果:false
true
首先我们应该清楚equals方法是可以重写的,恰巧在Integer类中又重写了这个方法,所里这里比较的是值而不是地址,那么“==”号嘞?
一定要记住两个对象比较的是地址.
public class Demo2 {
public static void main(String[] args) {
Integer in2=127;
Integer in3=127;
System.out.println(in2==in3);
System.out.println(in2.equals(in3));
}
}
结果:true
true
这里还有个比较奇特的东西,感觉考试会出所以就分析一下吧。
在包装类创建的过程中,若是数值小于128JVM便会认为不需要创建对象,所以这里比较的都是数值的大小。
感觉很清楚了,哈哈。
3.System类的相关方法及使用
这里我就不用代码来介绍了总感觉不是太过重要,若是加代码的话,有种凑字数的感觉。。
1.exit(int )退出当前虚拟机,所有程序停止,并且非0表示异常终止。
2.gc()命令JVM在内存中回收对象的垃圾,多用于匿名类之类的,这种用一次就不用了,但它还存在与堆内存中的。
3.getProperties()获取当前系统的信息。
4.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)复制一个数组,可以从指定索引处开始,指定索引出结束。
src:源数组 srcPos:从原数组复制的起始索引 dest:目标数组
destPos:目标数组的起始索引 length:复制的长度
4.BigInteger类的介绍
该类主要用于大数运算,即通过将那些我们无法以long型存入的数据,以String等类型存入,帮助我们完成计算。
对于该类,我会简要介绍一下如何通过该类的一些方法来做到四则运算。
1.加法 通过对象.add的方式实现。返回值为BigInteger类型。
2.减法 通过对象.subtract的方式实现。返回值为BigInteger类型。
3.乘法 通过对象.multiply的方式实现。返回值为BigInteger类型。
4.除法 通过对象.divide的方式实现。返回值为BigInteger类型。 注意方法参数列表均为Integer类型对象.
5.BigDecimal类的介绍
首先我们先介绍一下为什么要使用这个类。
通过代码来介绍吧。。
public class Demo1 {
public static void main(String[] args) {
function();
}
public static void function() {
System.out.println(0.01+0.09);
System.out.println(0.99-0.91);
System.out.println(0.5*0.01);
}
}
结果:
0.09999999999999999
0.07999999999999996
0.005
这个答案是不是有违常理呀!!
我来解释一下吧。。 其实我们都知道数据在计算机中都是需要先转换为二进制的,并且float类型以及double类型在转换时使用正常转换方式不一样的。
正常的转换方式: 我们以9为例子来说明吧。
9/2余1 4/2余0 2/2余0 1/2余1 所以最后转成的二进制数是1001
那若是0.9嘞? 算法如下:
0.9*2=1.8 取出0.8 1
0.8*2=1.6 取出0.6 1
0.6*2=1.2 取出0.2 1
0.2*2=0.4 取出0.4 0
。。。。。。一直这样算直到没有小数位置。
但是除非你取出的是0.5否则很难就保证精度准确地,这也是为啥第三个输出的是正确的。并且还应该了解计算机对于float类型数据的有效数位是24,对于double类型数据的有效数位是52,因为计算机忽略掉了24位或者是52位之后的数所以误差也就来了。。。
所以我们需要通过BigDecimal类来解决掉这些问题. 好现在来介绍BigDecimal完成四则运算的方法吧。
我会将加法,减法,乘法的代码写到一起,然后将除法的代码隔离出来,作为一个特例。
import java.math.BigDecimal;
public class Demo1 {
public static void main(String[] args) {
function1();
function2();
function3();
}
public static void function1() {
BigDecimal b1=new BigDecimal("0.01");
BigDecimal b2=new BigDecimal("0.09");
BigDecimal b3=b1.add(b2);
System.out.println(b3); //加法
}
public static void function2() {
BigDecimal b1=new BigDecimal("0.01");
BigDecimal b2=new BigDecimal("0.09");
BigDecimal b3=b1.multiply(b2); //乘法
System.out.println(b3);
}
public static void function3() {
BigDecimal b1=new BigDecimal("0.01");
BigDecimal b2=new BigDecimal("0.09");
BigDecimal b3=b1.subtract(b2); //减法
System.out.println(b3);
}
}
结果: 0.01
0.009
-0.08
对于除法的总结:
import java.math.BigDecimal;
public class Demo1 {
public static void main(String[] args) {
function1();
function();
}
public static void function1() {
BigDecimal b1=new BigDecimal("0.58");
BigDecimal b2=new BigDecimal("0.2");
BigDecimal b3=b1.divide(b2);
System.out.println(b3);
}
public static void function() {
BigDecimal b1=new BigDecimal("0.5832");
BigDecimal b2=new BigDecimal("0.2333");
BigDecimal b3=b1.divide(b2,6,BigDecimal.ROUND_HALF_UP );
System.out.println(b3);
}
}
结果: 2.9
2.499876
着重对function()进行介绍
divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
BigDecimal divisor: 指的是被除数
int scale: 指的是保留几位小数
RoundingMode roundingMode: 指的是保留模式。。。。。。
其实到最后还有一些东西,就是对于BigDecimal类是否存在自动装箱与拆箱的思考,我没有写出来,我会自己把它搞懂得(哈哈)。。
6.结束
在做总结的过程中,其实也不算很枯燥,只是一直会不断发现新的问题,我对于某些地方的总结真的是还不够,但是仅仅通过本篇我便清楚的了解了自动装箱与自动拆箱以及数据精度受损的真正原因。。。在解决问题的过程中我是享受其中的。
JAVA常用API的总结(2)的更多相关文章
- Java 常用API(二)
目录 Java 常用API(二) 1. Object类 2. Date类 概述 构造方法和成员方法 3. DateFormat类 概述 SimpleDateFormat类 练习 4. Calendar ...
- Java 常用API(一)
目录 Java 常用API(一) 1. Scanner类 引用类型的一般使用步骤 Scanner的使用步骤 例题 2. 匿名对象 概述 匿名对象作为方法的参数 匿名对象作为方法的返回值 3. Rand ...
- Java常用API(Math类)
Java常用API(Math类) Math类的作用 java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数.类似这样的工具 类,其所有方法均为静态方法,并且 ...
- Java常用API(Arrays类)
Java常用API(Arrays类) 什么是Arrays类? java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等.其所有方法均为静态方法,调用起来 非常简单. 这里我们 ...
- Java常用API(String类)
Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...
- Java常用API(ArrayList类)
Java常用API(ArrayList类) 我们为什么要使用ArrayList类? 为了更加方便的储存对象,因为使用普通的数组来存储对象太过麻烦了,因为数组的一个很大的弱点就是长度从一开始就固定了,所 ...
- Java常用API(Random类)
Java常用API(Random类) Random:是一个用于生成随机数的类 构造方法 public Random() :创建一个新的随机数生成器. 返回随机数的方法 public int nextI ...
- Java常用API(Scanner类)
Java常用API( Scanner类)1 1.Scanner类 首先给大家介绍一下什么是JavaAPI API(Application Programming Interface),应用程序编程接口 ...
- java基础3.0:Java常用API
本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...
- java常用API的总结(1)
本篇是对于这一段时间以来接触到的常用api的一些总结,便于以后的查阅.... 一.正则表达式 对于正则表达式,我的感觉就是当我们在做某些题的时候正则表达式会省去我们很多的时间,并且正则表达式的使用格式 ...
随机推荐
- C#版[击败98.85%的提交] - Leetcode717. 1比特与2比特字符 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- SpringBoot入门教程(四)MyBatis generator 注解方式和xml方式
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML ...
- ModelFirst开发
首先介绍一下ModelFirst开发方式,什么时候才用呢!在没有数据库时,可以借助EF设计模型,然后根据模型同步完成数据库中表的创建,这就是Model First开发方式,简而言之就是先有模型再有表. ...
- mysqldump备份表中有大字段失败的排错过程
几天前收到某个业务项目,MySQL数据库逻辑备份mysqldump备份失败的邮件,本是在休假,但本着工作认真负责,7*24小时不间断运维的高尚职业情操,开始了DBA的排错之路(一开始数据库的备份都是成 ...
- SQL语句查询表结构
SQL语句查询表结构 刚刚在做一个小项目,数据库中一张表有20来个字段,用我以前做的一个.NET实体类生成器一个一个的输入还是闲麻烦,于是打算找个时间来重新的改造一个那个.NET实体类,能够通过选 ...
- Kubernetes系列02—Kubernetes设计架构和设计理念
本文收录在容器技术学习系列文章总目录 1.Kubernetes设计架构 Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分 ...
- 浅析MySQL 8忘记密码处理方式
对MySQL有研究的读者,可能会发现MySQL更新很快,在安装方式上,MySQL提供了两种经典安装方式:解压式和一键式,虽然是两种安装方式,但我更提倡选择解压式安装,不仅快,还干净.在操作系统上,My ...
- java8 Stream操作
Stream操作详解:https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/#icomments
- mysql 查询导出(txt,csv,xls)
1 简介 工作中产品经常会临时找我导出一些数据,导出mysql查询结果数据有几种方法,下面介绍3种. ① mysql -u -p -e "sql" db > filep ...
- 事件绑定on与hover事件
今天项目中UI设计了一个鼠标划入和划出的效果,本来这个小效果是非常简单的!可是在实际的生产环境中就出现了一点点问题!因为在实际的环境中,数据全部是用ajax异步加载进去的,这样就造成了hover方法不 ...