基本数据类型及其包装类

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


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

  1. 总述: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); 
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值