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