为了方便操作基本数据类型值, 将其包装成对象, 在对象中定义了属性和行为, 丰富了该数据的操作.

用于描述该对象的类就称为基本数据类型对象包装类.

基本数据类型对应关系

基本数据类型(8种) 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

常用操作之一: 用于基本数据类型和字符串之间的转换

1. 基本类型转换为字符串方法:
1. 基本类型数值 + "";
2. 使用 String 类中的静态方法 valueOf(基本类型数值);
3. 使用 Integer 类中的静态方法 valueOf(基本类型数值); 2. 字符串转换为基本类型
1. 使用包装类中的静态方法 `xxx parseXxx("xxx类型的字符串");` ```
int a = Integer.parseInt("234"); // 直接使用类名调用对应方法
int parseInt("intstring");
long parseLong("longstring");
boolean parseBoolean("booleanstring");
// 只有 Charater, 没有 parse 方法
```
2. 如果字符串被 Integer 进行对象的封装, 可以使用另一个非静态的方法: intValue();
将一个 Integer 对象转成基本数据类型的值 ```
Integer i = new Integer("123");
System.out.println(i.intValue()); // 使用 intValue() 将 i 转换为 int 类型的值
```

整数进制转换

-  十进制转换为其他进制

```
Integer.toBinaryString(); // 转换为二进制
Integer.toOctalString(); // 转换为八进制
Integer.toHexString(); // 转换为十六进制
Integer.toString(int i, int radix); // 转换为任意进制
``` - 其他进制转换为十进制
`Integer.parseInt(String s, int radix);`

a.equals(b); : Integer 比较数值是否相同

int compareTo(Integer anotherInteger); : Integer 对象比较两个数值大小, 返回值为: -1, 0, 1

自动装箱和自动拆箱

- 自动装箱:把基本的数据类型转换成包装类
- 自动拆箱:把包装类转换成基本的数据类型
Integer i = new Integer(4);
可以简化书写为: Integer i = 4; // 自动装箱
i = i + 2; // 先将 i 进行自动拆箱, 变成了 int 类型, 和 2 进行加法运算
// 再将和进行装箱赋给 i, 即 i = new Integer(i.intValue() + 2);

备注:

自动装箱(拆箱): Integer = null; `对于对象可以成立, 但是对于 int 类型不可以, 运算时, 会发生错误.

因此, 使用 Integer 对象时, 需要进行健壮性判断.

Integer a = new Integer(127);
Integer b = new Integer(127); System.out.println(a==b); // false, 两个对象, 地址值不同
System.out.println(a.equals(b)); // true, 比较的是数值 Integer x = 127;
Integer y = 127; System.out.println(x==y); // true Integer x = 128;
Integer y = 128;
System.out.println(x==y); // flase, JDK 1.5 以后, 自动装箱, 如果装箱的是一个字节(-128~!27)
// 那么该数据会被共享不会重新开辟空间 // 示例: 下面代码运行的结果
public static void main(String[] args){
doSomethind(10);
} public static void doSomething(double m){
System.out.println("double...");
} public static void doSomething(Integer a){
System.out.println("integer...");
} // 运行结果: double...
// 首先在 JDK1.4 里面肯定调用这个方法, 如果调用下面的方法, 需要类型转换, 但是
// JDK 1.4 不能实现自动拆装箱.由于 JDK 是向下兼容的, 所以, 在 JDK 1.4 调用
// 这个方法, 在 JDK 1.5 里面还是会调用这个方法

练习

对一个字符串中的数值进行从小到大的排序

"20 73 9 -7 88 36 29"

思路:

  1. 排序
  2. 如何获取到这个字符串中需要排序的数值?

    发现这个字符串中其实都是空格来对数值进行分隔的,

    所以就想到用字符串对象的切割方法将大串变成多个小串
  3. 数值最终变成小字符串, 怎么变成一个 int 数呢?

    字符串转换为基本类型可以使用包装类
import java.util.Arrays;  // 数组类中自带 sort() 方法

public class WrapperTest{
private static final String SPACE_SEPARATOR = " "; // 空格为常量,提高阅读性 public static void main(String[] args){
String numStr = "20 73 9 -7 88 36 29"; System.out.println(numStr); // 未排序前 numStr = sortStringNumber(numStr); System.out.println(numStr); // 排序后打印
} public static String sortStringNumber(String numStr){
// 1. 将字符串变成字符串数组
// String[] str_arr = numStr.split(SPACE_SEPARATOR);
String[] str_arr = stringToArray(numStr); // 封装成方法,提高阅读性 // 2. 将字符串数组变成 int 数组
int[] num_arr = toIntArray(str_arr); // 3. 对 Int 数组排序
mySortArray(num_arr); // 4. 将排序后的 int 数组变成字符串
String temp = arrayToString(num_arr); return temp;
} public static String[] stringToArray(String numStr){
String[] str_arr = numStr.split(SPACE_SEPARATOR); return str_arr;
} public static int[] toIntArray(String[] str_arr){
int[] arr = new int[str_arr.length]; for(int i = 0; i<arr.length; i++){
arr[i] = Integer.parseInt(str_arr[i]);
}
return arr;
} public static void mySortArray(int[] num_arr){
Arrays.sort(num_arr);
} public static String arrayToString(int[] num_arr){
StringBuilder sb = new StringBuilder(); for(int x = 0; x<num_arr.length(); x++){
if(x != arr.length()-1)
sb.append(num_arr[x] + SPACE_SEPARATOR);
else
sb.append(num_arr[x]);
}
return sb.toString();
} }

_参考资料_
- [JavaSE 基础视频(毕向东)](https://www.bilibili.com/video/av3113337/index_1.html#page=5)
- [JDK 1.6 中文文档](http://tool.oschina.net/apidocs/apidoc?api=jdk-zh)

Java 常用工具类之基本对象包装类的更多相关文章

  1. JavaEE-实验一 Java常用工具类编程

    该博客仅专为我的小伙伴提供参考而附加,没空加上代码具体解析,望各位谅解 1.  使用类String类的分割split 将字符串  “Solutions to selected exercises ca ...

  2. Java常用工具类之自定义访问对象

    package com.wazn.learn.util; import javax.servlet.http.HttpServletRequest; /** * 自定义访问对象工具类 * * 获取对象 ...

  3. JAVA常用工具类汇总

    一.功能方法目录清单: 1.getString(String sSource)的功能是判断参数是否为空,为空返回"",否则返回其值: 2.getString(int iSource ...

  4. Java常用工具类---XML工具类、数据验证工具类

    package com.jarvis.base.util; import java.io.File;import java.io.FileWriter;import java.io.IOExcepti ...

  5. [转]Java常用工具类集合

    转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...

  6. Java常用工具类题库

    一.    填空题 在Java中每个Java基本类型在java.lang包中都在一个相应的包装类,把基本类型数据转换为对象,其中包装类Integer是___Number__的直接子类. 包装类Inte ...

  7. 项目经验分享——Java常用工具类集合 转

    http://blog.csdn.net/xyw591238/article/details/51678525 写在前面     本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数 ...

  8. Java常用工具类之MD5加密

    package com.wazn.learn.util; import java.security.MessageDigest; /** * MD5加密工具类 * <功能详细描述> * * ...

  9. Java常用工具类之IO流工具类

    package com.wazn.learn.util; import java.io.Closeable; import java.io.IOException; /** * IO流工具类 * * ...

随机推荐

  1. windows server 2003中端口默认不能使用问题

    问题:在windows server 2003中IIS6.0新建站点,给了一个新端口(非80),然后配置好后不能访问 解决方案:系统内置防火墙需要添加对应端口,如下图:     即解决.

  2. Atitit.使用引擎加脚本架构的设计 使用php,js来开发桌面程序。。

    Atitit.使用引擎加脚本架构的设计 使用php,js来开发桌面程序.. 1. 引擎加脚本架构 跨平台,桌面与web的优势1 2. 架构桌面引擎(java,c#)2 3. php桌面引擎要点2 3. ...

  3. apue.h文件找不到的解决办法

    参考:http://blog.csdn.net/nihaotoyou/article/details/16827675 1.首先到该书的官网下载源代码:http://www.apuebook.com/ ...

  4. CCNA2.0笔记_VLSM

    子网化:把一个大的主类网段,通过借位的方式逻辑划分多个子网段,应用于多个广播域: 做子网划分的时候,子网掩码最多只能到30位,不能再多划(因为至少要保留4个地址,即2个主机位) FLSM(定长子网掩码 ...

  5. linux学习笔记2---命令cd

    Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的.cd命令比较简单,但是有一些技巧还是值得学习的. 所以,学习Linux 常用命令, ...

  6. PHP标签

    1.PHP原标签 2.脚本标签 3.短标签 需要short_open_tag=on,默认情况下为on 4.asp标签 需要asp_tags为on,默认为off

  7. 第一百六十二节,jQuery入门介绍

    jQuery入门 学习要点: 1.什么是  jQuery 2.学习 jQuery的条件 3.jQuery的版本 4.jQuery的功能和优势 5.其他 JavaScript库 6.是否兼容低版本  I ...

  8. 什么是Web容器?

    什么是Web容器? 解答:容器就是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是这样的容器.

  9. 关于Jquery Ajax的用法

    今天简单描述一下Jquery Ajax的用法,和我在使用过程中的一些看法,仅供自己娱乐和大家参考值之用! Jquery Ajax的重要性不言而喻,只从Jquery面世之后,终于解救了像我这种既做前台又 ...

  10. 8127 timeout!!! 搞死人啊

    ti 81xx 系列的 timeout搞死人啊 种类繁多 坑爹啊!! 今天终于找出了8127的一种以个timeout bug情况,妹的这个问题坑了我将近两个月,xxxx,这里我想说下情况,有些地方可能 ...