Java当中的基本类型包装类
01
基本数据类型对象的包装类
什么是基本数据类型对象包装类呢?就是把基本数据类型封装成对象,这样就可以提供更多的操作基本数值的功能了。
基本数据类型对象的包装类8
个:
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integet |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | character |
java.lang
类 Integer
java.lang.Object
-> java.lang.Number
-> java.lang.Integer
public final class Integer
extends Number
implements Comparable<Integer>
Integer
类 是将一个基本类型为int
的值包装成为对象的包装类。Integer
类型的对象中包含了一个int
类型的字段。
基本数据类型对象的包装类,就是为了提供更多的操作方法,这里的Integer
类中Java
提供了多个方法,而且Integer
类能够在int
类型和String
类型之间互相进行转换,还可以处理一些int
类型有关一些常量和方法等。
一些常量:
常量 | 返回的类型 |
---|---|
MAX_VALUE |
static int 为返回的是静态整数类型,表示为int 类型的最大值 |
MIN _VALUE |
static int 为返回的是静态整数类型,表示为int 类型的最小值 |
SIZE |
static int 为返回的是静态整数类型,表示int 值的比特位数 |
TYPE |
static Class<Integer> 表示返回基本类型Int 的Class 实例 |
一些构造方法:
方法 | 说明 |
---|---|
Integer(int value) | 构造一个Integer 对象,表示指定int 的值 |
Integer(String s) | 构造一个分配的Integer 对象,表示String 参数所指的int值 |
方法 | 说明 |
---|---|
decode(String nm) |
static Integer 该方法可以将String 解码为Integer
|
doubleValue() | 返回为double 类型 是以double 类型返回该Integer 的值 |
equals(Object obj) | 返回boolean 类型 比较此对象与指定对象 |
floatValue() | 返回float 类型 以float 类型返回该Integer 的值 |
getInteger(String nm) | 返回的是 static Integer ,确定具有指定名称的系统属性的整数值 |
getInteger(String nm, int val) | 返回的是static Integer ,确定具有指定名称的系统属性的整数值 |
getInteger(String nm, Integer val) | 返回的是static Integer ,返回具有指定名称的系统属性的整数值 |
hashCode() | 返回此Integer 的哈希码 |
intValue() | 返回int 类型 以Int 类型返回给Integer 的值 |
longValue() | 返回long 类型 以long 类型返回该Integer 的值 |
toBinaryString(int i) | 返回static String 类型,以二进制无符号整数形式返回一个整数参数的字符串表示形式 |
toHexString(int i) | 返回static String 类型,以十六进制无符号整数形式返回一个整数参数的字符串表示形式 |
toOctalString(int i) | 返回static String 类型,以八进制无符号整数形式返回一个整数参数的字符串表示形式 |
toString() | 返回String 类型,返回一个表示该Integer 值的String 对象 |
toString(int i) | 返回类型为static String ,返回一个表示指定整数的String 对象 |
toString(int i, int radix) | 返回类型为static String ,返回用第二个参数指定基数表示的第一个参数的字符串形式 |
valueOf(int i) | 返回类型为static Integer ,返回一个表示指定的int 值的Integer 实例 |
valueOf(String s) | 返回类型为static Integer ,返回一个表示指定的String 值的Integer 实例 |
02
基本数据类型对象包装类:用于基本数据和字符串之间的转换。
parseInt(String s)是将字符串参数作为有符号的十进制整数进行解析。
xxx.parseXxx(string);
注意只有Character
没有解析的方法,我们举个例子:int parseInt(string); -> byte parseByte(string); -> boolean parseBoolean(string);
System.out.println("12"+3);
// 结果为123
System.out.println(Integer.parseInt("12")+3);
// 结果为 15
parseInt
public static int parseInt(String s) throws NumberFormatException
这个方法是将字符串参数作为有符号的十进制整数进行解析
参数s:包含解析的int表现形式的String。
返回为:带有符号的十进制的整数值。
抛出为NumberFormatException:如果字符串不含有可解析的整数。
异常:
System.out.println(Integer.parseInt("a12")+3);
// 抛出为NumberFormatException
System.out.println("a12",6);
// 这种方法将其他进制转换为别的进制数
基本数值转换为字符串:
- 12+“ ”;
- String.valueOf(12);
- Integer.toString(int);
基本数据类型转换为包装类对象
Integer i = new Integer(2);
Integer i2 = new Integer("2");
Integer i3 = Integer.valueOf(2);
包装类的对象转换为基本数据类型值
// intValue():为以int类型返回该Integer的值
Integer i = new Integer(2);
int num = i.intValue();
基本数据类型包装类的自动装箱和拆箱
int i = 3;
Integer i = new Integer(3);
// 为装箱
在JDK1.5后,java提供了一个包装类的新的特性,为自动装箱。自然有自动拆箱咯~
Integer i = 3;
// 这样表示即为新特性,自动装箱。
// 一般我们是这样写
Integer i = Integer.valueOf(3);
// 如今
Integer i = 3;
// 系统会为它自动装箱
i = i + 2;
// 此时等于这样
i = i.intValue() + 2; // 等同于 i = Integer.valueOf(i.intValue() + 2);
// 为自动拆箱 i.intValue(),然后再次装箱即可
Integer包装类,自动装箱和自动拆箱的重点
为JDK1.5
前,没有新特性
Integer a = new Integer(3); // 为手动装箱
Integer b = new Integer(3); // 为手动装箱
System.out.println(a == b); // 结果为:false
System.out.println(a.equals(b)); // 结果为:true
自动装箱和自动拆箱新特性
Integer x = 100; // 自动
Integer y = 100; // 自动
System.out.println(x == y); // 结果为 true
System.out.println(x.equals(y)); // 结果为 true
Integer x = 200; // 自动
Integer y = 200; // 自动
System.out.println(x == y); // 结果为 false
System.out.println(x.equals(y)); // 结果为 true
Integer integer1 = 127;
Integer integer2 = 127;
System.out.println(integer1 == integer2);
// true
Integer integer1 = 128;
Integer integer2 = 128;
System.out.println(integer1 == integer2);
// false
Integer x = 127;
Integer y = 127;
System.out.println(x==y); // 结果为true
System.out.println(x.equals(y)); // 结果为true
Integer x = 128;
Integer y = 128;
System.out.println( x == y); // 结果为false
System.out.println( x.equals(y) ); // 结果为true
因为在JDK1.5
中,Java
面对在 -128~127
之间的Integer
的值,用的是原生基本数据类型int
,会在内存*用,不会再新创建对象空间。就是在这个范围之间的Integer
值比较“==”
,是进行int
原生数据类型的比较,超出范围的比较,就会创建新的对象空间。
有人问这究竟是为啥呢?你问我?
这个是jdk1.5
之后的新特性,规定是数值在byte
范围内不会创建新的对象空间,而是用原来的空间,这样就可以节省内存空间了哦~
03
案例
// 一堆字符串,定义字符串数字的变量
String nums = "12 34 56 23 7 83";
// 字符串中数值的排序,定义一个方法为排序所要定义的字符串数字的变量,完成任务
nums = sortNumsString(nums);
// 打印排序后的字符串
System.out.println("nums" + nums);
// 静态String类型
public static String sortNumsString(String numsString){
// 空格分割
String[] strs = numsString.split(" ");
// 字符串数组转换int数组,定义了一个方法parseIntArray()
int[] nums = parseIntArray(strs);
// 对数组进行排序
Arrays.sort(nums);
// 将数组转换为字符串
return toString(nums);
}
// 字符串数组转换int数组
private static int[] parseIntArray(String[] strs){
// 定义int数组
int[] arr = new int[strs.length];
// 遍历字符串数组
for(int i = 0; i < strs.length; i++){
arr[i] = Integer.parseInt[strs[i]);
}
return arr;
}
// 将数组转换为字符串
private static String toString(int[] nums){
// 创建StringBuilder对象
StringBuilder sb = new StringBuilder();
// 循环添加
for(int i = 0; i < nums.length; i++){
if(i != nums.length-1){
sb.append(nums[i]+" ");
}else{
sb.append(nums[i]);
}
}
// 返回sb.toString();方法
return sb.toString();
}
往后余生,唯独有你
简书作者:达叔小生
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: https://www.jianshu.com/u/c785ece603d1
结语
- 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
- 小礼物走一走 or 点赞
第47节:Java当中的基本类型包装类的更多相关文章
-
Java当中的基本类型包装类
Java当中的基本类型包装类 01 基本数据类型对象的包装类 **什么是基本数据类型对象包装类呢?**就是把基本数据类型封装成对象,这样就可以提供更多的操作基本数值的功能了. 基本数据类型对象的包装类 ...
-
第55节:Java当中的IO流-时间api(下)-上
Java当中的IO流(下)-上 日期和时间 日期类:java.util.Date 系统时间: long time = System.currentTimeMillis(); public class ...
-
第54节:Java当中的IO流(中)
Java当中的IO流(中) 删除目录 // 简书作者:达叔小生 import java.io.File; public class Demo{ public static void main(Stri ...
-
第53节:Java当中的IO流(上)
Java当中的IO流 在Java中,字符串string可以用来操作文本数据内容,字符串缓冲区是什么呢?其实就是个容器,也是用来存储很多的数据类型的字符串,基本数据类型包装类的出现可以用来解决字符串和基 ...
-
JAVA基础之基本类型包装类、System类、Math类、Arrays类及大数据运算
个人理解: 为了方便运算及调用一些方法,我们需要将基本类型的数值转换为对象:不过转换的时候需要特别注意好它们的类型到底是什么,需要调用方法的类名是哪个!特别注意是Byte常量池的相关问题(==):gc ...
-
第51节:Java当中的集合框架Map
简书作者:达叔小生 Java当中的集合框架Map 01 Map提供了三个集合视图: 键集 值集 键-值 映射集 public String getWeek(int num){ if(num<0 ...
-
第48节:Java当中的集合框架
Java当中的集合框架 01 在我们班里有50位同学,就有50位对象. // 简书作者:达叔小生 Student[] stus = new Student[20]; 结果来了一位插班生,该同学因为觉得 ...
-
第46节:Java当中的常量池
Java当中的常量池 在Java虚拟机jvm中,内存分布为:虚拟机堆,程序计数器,本地方法栈,虚拟机栈,方法区. 程序计数器是jvm执行程序的流水线,是用来存放一些指令的,本地方法栈是jvm操作系统方 ...
-
第45节:Java当中的变量,面向对象
Java当中的变量 01 Java当中的实例变量和类变量 什么是实例变量和类变量呢? 实例变量为没有用static修饰符修饰的变量,而类变量为用static修饰符修饰的变量. public class ...
随机推荐
-
ABP源码分析四:Configuration
核心模块的配置 Configuration是ABP中设计比较巧妙的地方.其通过AbpStartupConfiguration,Castle的依赖注入,Dictionary对象和扩展方法很巧妙的实现了配 ...
-
static修饰符
static修饰符表示静态的,可修饰字段.方法.内部类,其修饰的成员属于类,也就是说static修饰的资源属于类级别,而不是对象级别. static的正真作用:用来区别字段,方法,内部类,初始化代码块 ...
-
C# 基础(2)
打开一个解决方案,以.sin后缀名,.csproj是项目文件的后缀名. Console.WriteLine("这是我的第二个项目!");你想显示的内容 Console.ReadKe ...
-
动态修改 NodeJS 程序中的变量值
如果一个 NodeJS 进程正在运行,有办法修改程序中的变量值么?答案是:通过 V8 的 Debugger 接口可以!本文将详细介绍实现步骤. 启动一个 HTTP Server 用简单的 Hello ...
-
php 分词
发现了一个很好的分词类库phpanalysis2.0. 原文连接地址:http://www.phpbone.com/phpanalysis/ 分 词系统简介:PHPAnalysis分词 ...
-
Android Studio导入项目一直卡在Building gradle project info的解决方案
出现了一个很神奇的现象,Android Studio导入其它项目均正常,但是导入某个项目(两天前还正常打开的项目)却一直卡在Building gradle project info 尝试了重启Andr ...
-
深入浅出React的一些细节——State
(来源于: https://facebook.github.io/react/docs/state-and-lifecycle.html 翻译by:@TimRChen) Using State Cor ...
-
并发编程 - 进程 - 1.开启子进程的两种方式/2.查看pid/3.Process对象的其他属性或方法/4.守护进程
1.开启子进程的两种方式: # 方式1: from multiprocessing import Process import time def task(name): print('%s is ru ...
-
如何在ChemDraw 15.1 Pro中添加模板
ChemDraw化学绘图工具为了方便用户的使用,特地开发了众多的各种类型模板.用户在绘制一些简单或复杂的化学结构式时,可以直接从ChemDraw模板库里直接调用使用,虽然ChemDraw模板非常的丰富 ...
-
20-取石子动态规则(hdu2516 斐波那契博弈)
http://acm.hdu.edu.cn/showproblem.php?pid=2516 取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memor ...