Integer类概述及基本使用

Integer类

Integer概述:

Integer 类在对象中包装了一个基本类型 int
该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和 方法

构造方法:(有两个)

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

代码演示实现如下:

package cn.wen_01;

public class IntegerDemo {
	public static void main(String[] args) {
		// 方式1
		int i = 100;
		Integer ii = new Integer(i);
		System.out.println("ii:" + ii);    //ii:100    实现了重写

		// 方式2
		String s = "100";
		// NumberFormatException
		// String s = "abc";   //报错
		Integer iii = new Integer(s);
		System.out.println("iii:" + iii);    //iii:100    实现了重写
	}
}

Integer类成员方法

  • int类型和String类型的相互转换
int   –——    String
String   –——   int
 
  • public int intValue()
  • public static int parseInt(String s)
  • public static String toString(int i)
  • public static Integer valueOf(int i)
  • public static Integer valueOf(String s)

int类型和String类型的相互转换:代码演示如下

package cn.itcast_03;

/*
 * int类型和String类型的相互转换
 * 
 * int -- String(推荐使用)
 * 		String.valueOf(number)
 * 
 * String -- int(推荐使用)
 * 		Integer.parseInt(s)
 */
public class IntegerDemo {
	public static void main(String[] args) {
		// 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)

其他进制到十进制:

public static int parseInt (String s,int radix)
package cn.wen_04;

public class IntegerDemo {
	public static void main(String[] args) {
		// 十进制到二进制,八进制,十六进制
		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));
		System.out.println(Integer.toString(100, 70));
		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));    //由这个我们也看到了进制的范围:2-36。为什么呢?0,...9,a...z 总共36个。
		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));    //这里二进制只能是0、1
	}
}

JDK5的新特性:

JDK1.5以后,简化了定义方式。
Integer x = new Integer(4);可以直接写成
Integer x = 4;//自动装箱。
x  = x + 5;//自动拆箱。通过intValue方法。
需要注意:在使用时,Integer  x = null;上面的代码就会出现NullPointerException
扫描二维码关注公众号,回复: 8923266 查看本文章
package cn.wen_05;

/*
 * JDK5的新特性
 * 自动装箱:把基本类型转换为包装类类型
 * 自动拆箱:把包装类类型转换为基本类型
 * 
 * 注意一个小问题:
 * 		在使用时,Integer  x = null;代码就会出现NullPointerException。
 * 		建议先判断是否为null,然后再使用。
 */
public class IntegerDemo {
	public static void main(String[] args) {
		// 定义了一个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的面试题:

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

package cn.wen;

/*
 * 看程序写结果
 * 
 * 注意:Integer的数据直接赋值,如果在-128到127之间,会直接从缓冲池里获取数据
 */
public class IntegerDemo {
	public static void main(String[] args) {
		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之间的数据,做了一个数据缓冲池,如果数据是该范围内的,每次并不创建新的空间
		// Integer ii = Integer.valueOf(127);
	}
}
false
true
-----------
false
true
-----------
false
true
-----------
true
true
发布了91 篇原创文章 · 获赞 16 · 访问量 1215

猜你喜欢

转载自blog.csdn.net/hewenqing1/article/details/103762769