您的位置:首页 > 编程语言 > Java开发

Java 基本数据类型的包装类及其数据类型转换

2016-10-15 23:39 666 查看
Java提供了八种基本类型,要对基本类型数据进行更多的操作,最方便的方式就是将其封装成对象。

【八种基本数据类型的包装类】

byte ——Byte

short ——Short

int ——Integer

long—–Long

float—–Float

double—-Double

char—-Character

boolean—Boolean

【基本数据类型变成对象包装类的好处】

可以将基本数据和字符串之间进行互相的转换。

如:int类型的取值范围是多少?

这就应该去查 Integer —— Integer.MAX_VALUE ;

【基本数据类型包装类的主要作用: 进行基本数据类型和字符串之间的转换】

【基本类型数据 转为 字符串 的三种方式】

1. 基本数据类型对象包装类中的方法 static String toString(基本类型);

2. String类中的方法: static String valueOf(基本类型)

3. 基本类型数据 +“ ”;

【重点要掌握的就是:】

字符串—->基本类型数据。

返回值类型——>基本类型 ;参数——>字符串。

基本数据类型 变量名 = 基本数据类型包装类.parseXxx(XxxString);

Long l = Long.parseLong(“4546545646546”);

System.out.println(Integer.parseInt(“23”) + 1);

在八个基本类型对象包装类中只有一个对象没有parse方法,就是Character.

【类型转换错误】——NumberFormatException——数字格式异常——我碰到了,因为我多加了一个 空格。

【Integer中要掌握的方法】涉及到一个进制转换的问题。

十进制–>其他进制。

二进制:static String toBinaryString(int);

16进制:static String toHexString(int);

八进制:static String toOctalString(int);

其他进制——>转成十进制;

Integer.toString(6 , 2); 将6转换为二进制。

parseInt(intString , radix);

System.out.println(Integer.parseInt(“110”) , 2);

【基本数据类型值 和 基本类型数据对象之间的转换】

使用构造函数——Integer();

即可以接受基本数值,也可以接收基本数值的字符串形式。

可以使用基本类型对象中的方法。 static Integer valueOf(int);

【基本类型的对象 和 基本数据类型数值】

int intValue();

如:

Integer i = new Integer(34);

int num = i.intValue( );

System.out.println(num);

【如果两数被封装成了对象该如何比较呢?】

【 基本数据类型的比较——用比较运算符; 引用数据类型使用compareTo进行比较。】

int compareTo( Integer anotherInteger ) 在数字上比较两个Integer对象。

在数值上比较两个Integer对象。以0 正数 负数 比较两个数多的大小。

Integer a = new Integer(7);

Integer b = new Integer(5);

System.out.println(a.compareTo(b));

【重点】

对象想要进行比较,必须通过方法来完成,这个方法就是compareTo。

而很多对象都可以进行比较。所以这个方法定义在Comparable接口中。

想要对象具备比较功能,只要实现Comparable接口。

【练习题】

【基本数据类型对象包装类JDk1.5以后的新特性】——【自动拆箱,装箱】

Integer i = new Integer(5);

基本数据类型对象包装类,对象创建的简化写法Integer i = 5;

1. Integer i = 5;(其实在内存中也是通过 new Integer(5)这种方式创建的!)

这种方式成为——自动装箱,Integer.valueOf(5)自动完成了对象创建的动作。

2. 在进行 i = i + 5,运算时——

= 右边的i 会先转成基本数据值(自动拆箱)i.intValue(),其实质为:

i = i.intValue() + 5 ;然后再和5进行加法运算。

= 右边运算完的结果,再次被自动装箱变成Integer对象赋给i.

一旦简化就有弊端:多具备一个值null. 使用自动装箱拆箱时,要进行null的健壮性判断。

【实例】

Integer x = null;

x = x.intValue() + 4; x为null 不能调用方法,此时会发生:NullPointerException异常。

Boolean b = true; boolean b = true;的区别

答:前者:类类型变量指向一个对象,true为一个对象;

后者:true为基本类型变量。

在JdK1.5的新特性自动装箱中,如果数值在byte类型范围内(-128 ~ 127)。如果该对象数值重复出现

多个引用其实是指向同一个Integer对象,节省空间!但是超出了byte范围,都会生产新的Integer对象。

Integer m = 127;

Integer n = 127;

System.out.println( m == n); //true

System.out.println(m.equals(n)); //true

Object x = 5;Object x 接受到了一个Integer对象,自动装箱。

然而 Object不可以接受基本数据类型。

【面试题】——”34 9 -7 67 25”要求对这个字符串中的数值进行从小到大的排序,生成一个数值有序的字符串。

【必须会】

思路:

把其中的数拿出来,——对字符串进行切割。

对数进行排序

再追加成字符串。

步骤:1.split;——这个方法我还没掌握,怎么用。

【】——数组排序

2.定义一个int数组 将 字符串数组——>int数组

3.对int数组排序;

4. 将int数组转成字符串数组。

代码体现:

/**

* 需求:”34 9 -7 67 25”要求对这个字符串中的数值进行从小到大的排序,生成一个数值有序的字符串。

* @author Administrator

*

*/

public class StringTestint {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

//要操作的目标

String s = “34 9 -7 67 25”;

//用空格对原字符串进行切割,转成字符串数组;

String[] s1 = s.split(” “);

//定义int[]数组,用来存放整型数据

int[] arr = new int[s1.length];

//将字符串数组转成int类型的数组。

for(int i = 0 ; i < s1.length; i++)

arr[i] = Integer.parseInt(s1[i]);

//对int类型的数组进行排序

for(int i = 0 ; i < s1.length;i++){

for(int j = i+1 ; j < s1.length;j++){

if(arr[i] > arr[j]){

int temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

}

}

//定义字符串缓冲区,并将int类型的数组转换为 字符串类型的数组。

StringBuilder sb = new StringBuilder();

for (int i = 0; i < arr.length; i++) {

if(i != arr.length - 1)

sb.append(arr[i] + ” “);

else

sb.append(arr[i]);

}

System.out.println(sb);

}

}

代码优化:

import java.util.Arrays;

public class WrapperTest2 {

private static final String SPACE = " ";
/**
* @param args
*/
public static void main(String[] args) {

/*
* 综合练习:
* "34 9 -7 12 67 25"要求对这个字符串中的数值进行从小到大的排序,
* 然后生成一个数值有序的字符串。
*
* 思路:
* 1,看到排序,就想要到了数组
* 2,那数组中的元素怎么获取呢?数值都在字符串中。
* 3,先从字符串中获取到这些具体的数值。怎么获取呢?
* 4,发现这个字符串居然有规律。数值之间都是由空格隔开的。
*      可以对字符串进行切割。
* 5,将获取的数据存储到数组中并排序,在将数组转成字符就可以了。哦了。
*
*
* 步骤:
* 1,将字符串切割成字符串数组。split。
* 2,定义一个int数组将字符串数组中的元素转成整数存储到int数组中。
* 3,对int数组排序。
* 4,将int数组排序后转成一个字符串。
*
*/

String str = "34 9 -7 12 67 25";

str = sortStringNumber(str);
System.out.println(str);
}

public static String sortStringNumber(String str) {

//1,将字符串中的数值通过指定的规则进行切割获取字符串数组。
String[] str_nums = toStringArray(str);

//2,将字符串数组转成int数组。
int[] nums = toIntArray(str_nums);

//3,对int数组排序;
sortIntArray(nums);

//4,将int数组变成字符串。
return arrayToString(nums);
}
/*
* 将int数组变成字符串。
*/
private static String arrayToString(int[] nums) {
//1,创建字符串缓冲区。
StringBuilder sb = new StringBuilder();
for (int i = 0; i < nums.length; i++) {
if(i!=nums.length-1)
sb.append(nums[i]+SPACE);
else
sb.append(nums[i]);
}

return sb.toString();
}

/*
* 对int数组排序。
*/
private static void sortIntArray(int[] nums) {
Arrays.sort(nums);
}

/*
* 将字符串数组转成int数组。
*/
private static int[] toIntArray(String[] str_nums) {
//1,先定义一个int数组。
int[] arr = new int[str_nums.length];

//2,对字符串数组进行遍历。
for (int i = 0; i < str_nums.length; i++) {
//将数组格式的字符串转成整数。存储到arr数组中。
arr[i] = Integer.parseInt(str_nums[i]);
}
return arr;
}
/*
* 将字符串转成字符串数组。
*/
private static String[] toStringArray(String str) {

return str.split(SPACE);
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 数据 boolean