您的位置:首页 > 其它

基本数据类型及其包装类

2018-04-07 14:32 337 查看
之前的文章,可能完全出于笔记,或者记录而言,并没有带着分享的心得去写,有一些内容笔记知识点写的不够全面,希望读者可以多给点建议,这次我也总结下基本数据类型及其包装类这一刻的内容,查阅了网上资料,大家可以了解下,翻翻看。

一 基本数据类型的系统描述:

总述:Java基本数据类型分为两大类:boolean类型和数值类型。数值类型可分为整数类型和浮点类型,而其中字符类型可单独对待。所以Java只包含8种基本数据类型。

  1 boolean 数值只有true和false,不能用0代替。其他数值类型不能转换成boolean。包装类–Boolean

  2 byte -内存8位,无符号位时最大存储255,表数范围:-128~127。包装类–Byte

  3 short -内存16位,无符号位时最大存储65536,表数范围:-32768~32767。包装类–Short

  4 int -内存32位,无符号位时最大存储2的32次方减1,表数范围:负的2的31次方到正的2的31次方减1。包装类–Integer。

  5 long -内存64位,无符号位时最大存储2的64次方减1,表数范围:负的2的63次方到正的2的63次方减1。包装类–Long。

  6 float -内存32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。包装类–Float。

  7 double -内存64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。包装类–Double。

  8 char:-16位,存储Unicode字符集,用单引号赋值。可以参与加减乘除运算的,也可以比较大小的!!包装类–Character。

二  包装类

1. 包装类把基本类型数据转换为对象

每个基本类型在java.lang包中都有一个相应的包装类



2. 包装类有何作用



2.1 提供了一系列实用的方法

  java提供相应的包装类的目的:为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为,丰富了该数据的操作,面向对象

包装类共性:

和String类型相互转换

  a)基本类型 转换 String:

   1)用String类中的静态方法valuOf(基本类型数值)

  b.String 转换 基本类型:

   1).使用包装类中的静态方法 xxx parseXxx(“xxx类型的字符串”):

Byte.parseByte()
Short.parseShort()
Integer.parseInt() 字符串转成int整数
Long.parseLong()
Float.parseFloat()
Double.parseDouble()
Boolean.parseBoolean()


   只有Character没有parse方法,不需要

   2)如果字符串被Integer进行了封装。

可以用另一个非静态的方法,intValue():

Integer i = new Integer("123");
i.intValue();


进制转换:

1.十进制  转换 其他进制:
String  toBinaryString(int i); 转换成二进制
toOctalString(int i); 转换成八进制
toHexString(int i); 转换成十六进制
toString(int i, int radix); 转换成指定进制

2.其他进制 转换 十进制:
int     parseInt(String s, int radix);
(Integer  valueOf(String s, int radix);  返回的值不能运算,还是字符串。)


数字对象的运算

//数字对象的运算:
Integer  a = new Integer("3");
Integer b = new Integer(3);
Integer c = new Integer(1);

System.out.println(a==b);   //false
System.out.println(a.equals(b));   //true , 比较数值是否相同
System.out.println(c.compareTo(a)); //比较


JDK1.5自动装箱拆箱:

 l自动装箱

Integer a = 5

编译器编译为:

Integer a = Integer.valueOf(5);

自动拆箱

int i = a;

编译为:

int i = a.intValue();

a = a+1;

编译为:

a = Integer.valueOf(a.intValue()+1);

自动拆箱要当心 null 值

a+1 –> a.intValue()+1

如果a是null,程序出错

Integer的缓存机制

   Integer 类中,存在[-128,127]范围的缓存对象,如果指定范围内的值,直接访问缓存对象,如果指定范围外的值,创建新对象

2.2集合不允许存放基本数据类型数据,存放数字时,要用包装类型

 自动装包与拆包:自动装包/拆包大大方便了基本类型数据和它们包装类地使用。

   自动装包:基本类型自动转为包装类.(int >> Integer)

   自动拆包:包装类自动转为基本类型.(Integer >> int)

3.String 基本数据类型 包装类 三者的转换



/**
* 【面试题】——"34 9 -7 67 25"要求对这个字符串中的数值进行从小到大的排序,
* 生成一个数值有序的字符串。
* 思路:
* 1. 把其中的数拿出来,——对字符串进行切割。
* 2. 对数进行排序
* 3. 再追加成字符串。
*步骤:1.将字符串切割成字符串数组。split。
*     2.定义一个int数组,将字符串数组中的元素转成整数存储      到int数组中
*     3.对int数组排序
*     4.将int数组排序后转成字符串数组
* @author asus
*
*/
public class Test3 {
public static void main(String[] args) {
String s ="34 9 -7 67 25";
//用空格对原字符串进行切割,转成字符串数组
String[] s1 =s.split(" ");
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-1; i++) {
for(int j=0;j<s1.length-1-i;j++) {
if(arr[j]>arr[j+1]) {
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1] =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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: