Java API ——包装类

1、包装类的概述

  · 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。

  · 常用的操作之一:用于基本数据类型与字符串之间的转换

  · 基本类型和包装类的对应

  为了对基本数据类型进行更多的操作,更方便的操作,Java就针对每一种基本数据类型提供了对应的类类型。包装类类型。

  byte      Byte

  short    Short

  int     Integer

  long    Long

  float    Float

  double   Double

  char    Character

  boolean   Boolean

2、Integer类

/**
 * Integer的构造方法:
 * public Integer(int value)
 * public Integer(String s)
 *         注意:这个字符串必须是由数字字符组成
 */
public class IntegerDemo01{
    public static void main(String[] args) {
        //方式一:
        int i =100;
        Integer ii = new Integer(i);
        System.out.println("ii:"+ii); //ii:100
        //方式二:
        String s = "100";
        Integer iii = new Integer(s);
        System.out.println("iii:"+iii); //iii:100
    }
}

成员方法:

public class IntegerDemo02 {
    public static void main(String[] args) {
        //输出100的二进制,八进制和十六进制
        System.out.println(Integer.toBinaryString(100)); //1100100
        System.out.println(Integer.toOctalString(100)); //144
        System.out.println(Integer.toHexString(100)); //64
        System.out.println(Integer.MAX_VALUE); //2147483647
        System.out.println(Integer.MIN_VALUE); //-2147483648
    }
}

3、int类型和String类型的相互转换

  · public int intValue():以int类型返回该Integer的值            

  · public static int parseInt(String s):将字符串参数作为有符号的十进制整数进行解析

  · public static String toString(int i):返回一个表示指定整数的String对象

  · public static Integer valueOf(int i):返回一个表示指定的int值的Integer实例

  · public static Integer valueOf(String s):返回一个表示指定的String值的Integer实例

//int --> String : String.valueOf(int)
//String --> int : Integer.paraseInt(String)
public class IntegerDemo03 {
    public static void main(String[] args) {
        //int --> String
        int num = 100;
        //方式一:
        String s1 = "" + num;
        System.out.println("s1:" + s1);
        //方式二:推荐
        String s2 = String.valueOf(num);
        System.out.println("s2:"+s2);
        //方式三:
        //int --> Integer --> String
        String s3 = new Integer(num).toString();
        System.out.println("s3:"+s3);
        //方式四:
         String s4 = Integer.toString(num);
        System.out.println("s4:"+s4);
        System.out.println("----------------");
        //String --> int
        //方式一:String --> Integer --> int
        //public int intValue();
        String s = "100";
        Integer i =  new Integer(s);
        int i1 = i.intValue();
        System.out.println("i1:"+i1);
        //方式二:Integer.paraseInt(s):推荐
        int i2 = Integer.parseInt(s);
        System.out.println("i2:"+i2);
    }
}

4、常用的基本进制转换

  A:十进制转成二进制,八进制和十六进制

    · public static String toBinaryString(int i)

    · public static String toOctalString(int i)

    · public static String toHexString(int i)

  B:十进制到其他进制

    · public static String toString(int i,int radix)

    范围是从2到36
        C:其他进制到十进制

    · public static int parseInt(String s,int radix)

public class IntegerDemo04 {
    public static void main(String[] args) {
        //十进制到二进制,八进制,十六进制
        System.out.println(Integer.toBinaryString(100)); //1100100
        System.out.println(Integer.toOctalString(100));//144
        System.out.println(Integer.toHexString(100)); //64
        //十进制到其他进制
        System.out.println(Integer.toString(100, 10)); //100
        System.out.println(Integer.toString(100,2)); //1100100
        System.out.println(Integer.toString(100,36)); //2s
        System.out.println(Integer.toString(100, 37)); //100
        //其他进制到十进制
        System.out.println(Integer.parseInt("100",10)); //100
        System.out.println(Integer.parseInt("100",2));  //4
        //报错,因为二进制中没有2,3
        //System.out.println(Integer.parseInt("123",2));
    }
}

5、JDK5的新特性:

自动装箱:把基本类型转成包装类类型

自动拆箱:把包装类类型转成基本类型

Integer x = new Integer(4);可以直接写成    Integer x = 4;//自动装箱。

  x  = x + 5;//自动拆箱。通过intValue方法。

 需要注意:

  在使用时,Integer  x = null;上面的代码就会出现NullPointerException。

public class IntegerDemo05 {
    public static void main(String[] args) {
        //定义了一个int类型的包装类类型变量i
        //Integer i1 = new Integer(100);
        Integer i2 = 200;
        i2 += 300;
        System.out.println("i2:"+i2);
        //通过反编译后的代码
        //Integer i2 = Integer.valueOf(200); //自动装箱
        //i2 = Integer.valueOf(i2.intValue() + 200);
        //System.out.println((new StringBuilder("i2:")).append(i2).toString());
    }
}

6、Integer直接赋值的面试题

注意:Integer的数据直接赋值,如果在-128到127之间,会直接从缓冲池里直接获取数据

public class IntegerDemo06 {
    public static void main(String[] args) {
        Integer i1 = new Integer(127);
        Integer i2 = new Integer(127);
        System.out.println(i1 == i2); //false
        System.out.println(i1.equals(i2)); //true
        System.out.println("---------------");
        Integer i3 = new Integer(128);
        Integer i4 = new Integer(128);
        System.out.println(i3 == i4); //false
        System.out.println(i3.equals(i4)); //true
        System.out.println("---------------");
        Integer i5 = 128;
        Integer i6 = 128;
        System.out.println(i5 == i6); //false
        System.out.println(i5.equals(i6)); //true
        System.out.println("---------------");
        Integer i7 = 127;
        Integer i8 = 127;
        System.out.println(i7 == i8); //true
        System.out.println(i7.equals(i8)); //true
        Integer i = Integer.valueOf(127);
        //通过查看源码,针对-128到127之间的数据做了一个数据缓冲池,
        //如果一个数据是在该范围内的,每次都并不创建新的空间,
        //如果不在这个范围里面的就会创建新的对象
        // public static Integer valueOf(int i) {
        // assert IntegerCache.high >= 127;
        // if (i >= IntegerCache.low && i <= IntegerCache.high)
        // return IntegerCache.cache[i + (-IntegerCache.low)];
        // return new Integer(i);
    }
}
时间: 2024-08-13 21:57:29

Java API ——包装类的相关文章

MyBatis——Java API

Java API 既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升技能了. MyBatis 的 Java API 就是你收获你所做的努力的地方.正如你即将看到的,和 JDBC 相比, MyBatis 很大程度简化了你的代码而且保持简洁,很容易理解和维护.MyBatis 3 已经引入 了很多重要的改进来使得 SQL 映射更加优秀. 应用目录结构 在我们深入 Java API 之前,理解关于目录结构的最佳实践是很重要的.MyBatis 非常灵 活, 你可以用你自己的文件来

-----------------******Java API提供了几个常用包:

Java API(Java Application Programming Interface)Java应用程序编程接口... 实用类:Java API提供了几个常用包: 1.java.lang:编写Java程序时最广泛使用的包,自动导入所有的程序中,包含了Java程序的基础类和接口.包装类.Math类.String类等常用的类都包含在此包中, java.lang包还提供了用于管理类的动态加载.外部进程创建.主机环境查询和安全策略实施等系统操作的类. 2.java.util:包含了系统辅助类,特

mybatis Java API

既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升技能了. MyBatis 的 Java API 就是你收获你所做的努力的地方.正如你即将看到的,和 JDBC 相比, MyBatis 很大程度简化了你的代码而且保持简洁,很容易理解和维护.MyBatis 3 已经引入 了很多重要的改进来使得 SQL 映射更加优秀. 应用目录结构 在我们深入 Java API 之前,理解关于目录结构的最佳实践是很重要的.MyBatis 非常灵 活, 你可以用你自己的文件来做几乎所有的事情.

笔记:MyBatis 使用 Java API配置

我们已经讨论了各种MyBatis配置元素,如envronments.typeAlias和typeHandlers,以及如何使用XML配置它们.即使你想使用基于JavaAPI的MyBatis配置,MyBatis的SqlSessionFactory接口除了使用基于XML的配置创建外也可以通过Java API 编程式地被创建.每个在XML中配置的元素,都可以编程式的创建.使用Java API创建SqlSessionFactory,代码如下: ? ? ????public?static?SqlSessi

MyEclipse生成java API文档

API文档是提供接口是必须的,如果用word文档,不仅书写起来很麻烦,而且对于使用者来说很不方便.可以使用myEclipse来生成API文档,与java提供的官方API文档一样.一下是详细步骤. /**  * 数据库操作通用程序包  */ package xju.dbhelper; import java.sql.*; /**  * 数据库操作通用接口  * @author xju  * @version 1.0  */ public abstract interface DBHelper {

spark2.x由浅入深深到底系列六之RDD java api详解三

学习任何spark知识点之前请先正确理解spark,可以参考:正确理解spark 本文详细介绍了spark key-value类型的rdd java api 一.key-value类型的RDD的创建方式 1.sparkContext.parallelizePairs JavaPairRDD<String, Integer> javaPairRDD =         sc.parallelizePairs(Arrays.asList(new Tuple2("test", 3

Elasticsearch5.0 Java Api(一) -- 插入索引

Elasticsearch5.X官方手册 Elasticsearch5.X官方手册中文版 Elasticsearch5.X Java Api官方手册 导入maven依赖 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.0.0</version> </depend

Java API操作HDFS

HDFS是存储数据的分布式文件系统,对HDFS的操作,就是对文件系统的操作,除了用HDFS的shell命令对文件系统进行操作,我们也可以利用Java API对文件系统进行操作,比如文件的创建.删除.修改权限等等,还有文件夹的创建.删除.重命名等等. 使用Java API对文件系统进行操作主要涉及以下几个类: 1.Configuration类:该类的对象封装了客户端或者服务端的配置. 2.FileSystem类:该类的对象是一个文件系统对象,可以利用该对象的一些方法来对文件进行操作,FileSys

在Java API设计中,面向接口编程的思想,以及接口和工厂的关系

现在的java API的设计中,提倡面向接口的编程,即在API的设计中,参数的传递和返回建议使用接口,而不是具体的实现类,如一个方法的输入参数类型应该使用Map接口,而不是HashMap或Hashtable等具体的实现类.这样做的好处是,程序容易扩展.如果使用Map作为参数,用户可以使用任何实现Map接口的类作为参数,而不是仅仅限制使用HashMap或Hashtable作为参数,使程序的实现更加灵活. 接口(Java的Interface),只定义了一些抽象的方法(也可以定义一些常量,但不鼓励这么