(Java常用类) Integer

目录

Integer的构造方法:

int类型和String类型的相互转换:

常用的基本进制转换:

JDK5的新特性:

面试题看程序写结果:  * 注意:Integer的数据直接赋值,如果在-128到127之间,会直接从缓冲池里获取数据


为了对基本数据类型进行更多的操作,更方便的操作,Java就针对每一种基本数据类型提供了对应的类类型。包装类类型。
 * byte             Byte
 * short            Short
 * int                Integer
 * long                Long
 * float            Float
 * double            Double
 * char                Character
 * boolean            Boolean
 * 
 * 用于基本数据类型与字符串之间的转换。

* 需求1:我要求大家把100这个数据的二进制,八进制,十六进制计算出来
* 需求2:我要求大家判断一个数据是否是int范围内的。
               首先你的知道int的范围是多大?

        // 不麻烦的就来了
		// public static String toBinaryString(int i)
		System.out.println(Integer.toBinaryString(100));
		// public static String toOctalString(int i)
		System.out.println(Integer.toOctalString(100));
		// public static String toHexString(int i)
		System.out.println(Integer.toHexString(100));

		// public static final int MAX_VALUE
		System.out.println(Integer.MAX_VALUE);
		// public static final int MIN_VALUE
		System.out.println(Integer.MIN_VALUE);

Integer的构造方法:

 * public Integer(int value)
 * public Integer(String s)   注意:这个字符串必须是由数字字符组成

		// 方式1
		int i = 100;
		Integer ii = new Integer(i);
		System.out.println("ii:" + ii);

		// 方式2
		String s = "100";
		// NumberFormatException
		// String s = "abc";
		Integer iii = new Integer(s);
		System.out.println("iii:" + iii);

int类型和String类型的相互转换:

 * int -- String
 *         String.valueOf(number)
 * 
 * String -- int
 *         Integer.parseInt(s)

        // int -- String
		int number = 100;
		// 方式1
		String s1 = "" + number;
		System.out.println("s1:" + s1);
		// 方式2
		String s2 = String.valueOf(number);
		System.out.println("s2:" + s2);
		// 方式3
		// int -- Integer -- String
		Integer i = new Integer(number);
		String s3 = i.toString();
		System.out.println("s3:" + s3);
		// 方式4
		// public static String toString(int i)
		String s4 = Integer.toString(number);
		System.out.println("s4:" + s4);
		System.out.println("-----------------");

		// String -- int
		String s = "100";
		// 方式1
		// String -- Integer -- int
		Integer ii = new Integer(s);
		// public int intValue()
		int x = ii.intValue();
		System.out.println("x:" + x);
		//方式2
		//public static int parseInt(String s)
		int y = Integer.parseInt(s);
		System.out.println("y:"+y);

常用的基本进制转换:

 * public static String toBinaryString(int i)
 * public static String toOctalString(int i)
 * public static String toHexString(int i)
 * 
 * 十进制到其他进制
 * public static String toString(int i,int radix)
 * 由这个我们也看到了进制的范围:2-36
 * 为什么呢?0,...9,a...z
 * 
 * 其他进制到十进制
 * public static int parseInt(String s,int radix)

          // 十进制到二进制,八进制,十六进制
		  System.out.println(Integer.toBinaryString(100));
		  System.out.println(Integer.toOctalString(100));
		  System.out.println(Integer.toHexString(100));
		  System.out.println("-------------------------");

		  // 十进制到其他进制
          System.out.println(Integer.toString(100, 10));
          System.out.println(Integer.toString(100, 2));
          System.out.println(Integer.toString(100, 8));
          System.out.println(Integer.toString(100, 16));
          System.out.println(Integer.toString(100, 5));
          System.out.println(Integer.toString(100, 7));
          System.out.println(Integer.toString(100, -7));//100
          System.out.println(Integer.toString(100, 70));//100
          System.out.println(Integer.toString(100, 1));
          System.out.println(Integer.toString(100, 17));
          System.out.println(Integer.toString(100, 32));
          System.out.println(Integer.toString(100, 37));
          System.out.println(Integer.toString(100, 36));//进制最大36最小2
          System.out.println("-------------------------");
		
		  //其他进制到十进制
		  System.out.println(Integer.parseInt("100", 10));
		  System.out.println(Integer.parseInt("100", 2));
		  System.out.println(Integer.parseInt("100", 8));
		  System.out.println(Integer.parseInt("100", 16));
		  System.out.println(Integer.parseInt("100", 23));
		  //NumberFormatException
		  //System.out.println(Integer.parseInt("123", 2));

JDK5的新特性:

 * 自动装箱:把基本类型转换为包装类类型
 * 自动拆箱:把包装类类型转换为基本类型
 * 
 * 注意一个小问题:
 *         在使用时,Integer  x = null;代码就会出现NullPointerException。
 *         建议先判断是否为null,然后再使用。

        // 定义了一个int类型的包装类类型变量i
		// Integer i = new Integer(100);
		Integer ii = 100;
		ii += 200;
		System.out.println("ii:" + ii);

		// 通过反编译后的代码
		// Integer ii = Integer.valueOf(100); //自动装箱
		// ii = Integer.valueOf(ii.intValue() + 200); //自动拆箱,再自动装箱
		// System.out.println((new StringBuilder("ii:")).append(ii).toString());

		Integer iii = null;
		// NullPointerException
		if (iii != null) {
			iii += 1000;
			System.out.println(iii);
		}

 面试题看程序写结果:
 
 * 注意:Integer的数据直接赋值,如果在-128到127之间,会直接从缓冲池里获取数据

		Integer i1 = new Integer(127);
		Integer i2 = new Integer(127);
		System.out.println(i1 == i2);
		System.out.println(i1.equals(i2));
		System.out.println("-----------");

		Integer i3 = new Integer(128);
		Integer i4 = new Integer(128);
		System.out.println(i3 == i4);
		System.out.println(i3.equals(i4));
		System.out.println("-----------");

		Integer i5 = 128;
		Integer i6 = 128;
		System.out.println(i5 == i6);
		System.out.println(i5.equals(i6));
		System.out.println("-----------");

		Integer i7 = 127;
		Integer i8 = 127;
		System.out.println(i7 == i8);
		System.out.println(i7.equals(i8));

		// 通过查看源码,我们就知道了,针对-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);
//			}
		// Integer ii = Integer.valueOf(127);

猜你喜欢

转载自blog.csdn.net/qq_36326116/article/details/89044162
今日推荐