常用对象API(基本数据类型对象包装类)
概述
为了方便操作基本数据类性值,将其封装成了对象,在对象中定义了属性和行为丰富了改数据的操作。
用于描述该对象的类就称为基本数据类型对象包装类
类型 | 类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
该包装对象主要用基本类型和字符串之间的转换。
字符串与基本类型转换
基本类型——>字符串
1. 基本类型数值+""
2. 用String类中的静态方法`valueOf`(基本类型数值);
3. 用Integer的静态方法`valueOf()`
字符串——>基本类型
-
使用包装类中的静态方法
xxx parseXxx
("xxx
类型的字符串");-
int parseInt("intstring"); //将string转为int long parseLong("longstring"); boolean parseBoolean("booleanstring"); //只有Character没有parse方法
-
-
如果字符串被Integer进行对象的封装
-
//可使用另一个非静态的方法, intValue(); //已过时 //将一个Integer对象转成基本数据类型值。
-
进制转换
整数具备不同的进制体现
十进制——>其他进制
-
toBinaryString() 二进制 toOctalString() 八进制 toHexString() 十六进制 //ex Integer.toBinaryString(60); // 111100
其他进制——>十进制
-
parseInt("string",radix);
JDK1.5
自动装箱拆箱
自动拆装箱:java
中数据类型分为两种 : 基本数据类型 引用数据类型(对象)
在 java
程序中所有的数据都需要当做对象来处理,针对8种基本数据类型提供了包装类,如下:
int ——> Integer
byte ——> Byte
short ——> Short
long ——> Long
char ——> Character
double ——> Double
float ——> Float
boolean ——> Boolean
jdk1.5
以前基本数据类型和包装类之间需要互转:
自动装箱:当基本数据类型赋值给了引用数据类型才装箱
自动拆箱:当引用数据类型和基本数据类型计算的话,自动拆箱
基本———引用 Integer x = new Integer(x);
引用———基本 int num = x.intValue();
1)、Integer x = 1; x = x + 1; 经历了什么过程?装箱 ——> 拆箱——> 装箱;
2)、为了优化,虚拟机为包装类提供了缓冲池,Integer池的大小 —128~127 一个字节的大小;
3)、String池:Java为了优化字符串操作 提供了一个缓冲池;
public int compareTo(Ingeger anotherInteger)
Integer a = new Integer("895");
Integer b = new Integer(128);
System.out.println(a.compareTo(b));
//输出:1
/*
以数字方式比较两个 `Integer`对象。
值0如果这个Integer等于参数Integer ;
小于0的值,如果这个Integer数值小于参数Integer ;
和大于一个值0 ,如果这Integer在数值上大于该参数Integer (带符号的比较)。*/
int num = 4;
num = num + 5;
Integer i = 4;//i = new Integer(4); 自动装箱,简化书写。
i = i + 6; // i = new Integer(i.intValue() + 6); // i.intValue() 自动拆箱
public static void main(String[] args)
{
Integer a = new Integer(128);
Integer b = new Integer(128);
System.out.println(a==b);
System.out.println(a.equals(b));
Integer x = 127;
Integer y = 127;
//jdk1.5以后,自动装箱,如果装箱的是一个字节,那么该数据会被共享不会重新开辟空间
System.out.println(x == y);
System.out.println(x.equals(y));
}
//输出:
false
true
true
true
练习
package com.Integer;
/*
* 对一个字符串中的数值进行从小到大的排序
*
* “34 483 43 -95 2 25 866 679“
*
* 思路:
* 1.排序,很熟,但只熟int
* 2.如何获取到这个字符串中需要排序的数值
* 发现字符串中其实都是用空格来对数值进行分割的
* 用空格切割,大串变小串
* 3.数值最终变成小字符串,怎样变成int数值
*
*
* */
import java.util.Arrays;
public class WrapperDemo {
private static final String SPACE_SEPARATOR = " ";
public static void main(String[] args) {
String str = "34 483 43 -95 2 25 866 679";
System.out.println(str);
str = sorStringNumber(str);
System.out.println(str);
}
private static String sorStringNumber(String str) {
//1.将字符串变成字符串数组。
String[] str_arr = stringToArray(str);
//2.将字符串数组变成int数组。
int[] int_arr = toIntArray(str_arr);
//3.将int数组排序
mySortArray(int_arr);
//将排序后的int数组变成字符串
String temp = arrayToString(int_arr);
return temp;
}
private static String arrayToString(int[] int_arr) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < int_arr.length; i++) {
if (i != int_arr.length-1)
sb.append(int_arr[i]+SPACE_SEPARATOR);
else
sb.append(int_arr[i]);
}
return sb.toString();
}
private static void mySortArray(int[] int_arr) {
Arrays.sort(int_arr);
}
private static int[] toIntArray(String[] str_arr) {
int[] int_arr = new int[str_arr.length];
for (int i = 0; i < str_arr.length ; i++) {
int_arr[i] = Integer.parseInt(str_arr[i]);
}
return int_arr;
}
private static String[] stringToArray(String str) {
String[] str_arr = str.split(SPACE_SEPARATOR);
return str_arr;
}
}