Java面试题基本类型包装类与String类间的转换

Posted 王六六的IT日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面试题基本类型包装类与String类间的转换相关的知识,希望对你有一定的参考价值。

包装类的使用

基本类型、包装类与String类间的转换

JDK 5.0之前

1.基本数据类型----->包装类:调用包装类的构造器

举例:

    @Test
	public void test1(){
		int num1 = 10;
		Integer in1 = new Integer(num1);
		System.out.println(in1.toString());
		
		
		Integer in2 = new Integer("123");
		System.out.println(in2.toString());
		
		//异常
//		Integer in3 = new Integer("123abc");
//		System.out.println(in3.toString());
		
		Float f1 = new Float(12.3f);
		Float f2 = new Float("12.3");
		System.out.println(f1);
		System.out.println(f2);
		
		Boolean b1 = new Boolean(true);
		Boolean b2 = new Boolean("trUe");//不区分大小写
		System.out.println(b2);
		
		Boolean b3 = new Boolean("true123");
		System.out.println(b3); //跟true不一样就是falsefalse
		
		Order order =new Order();
		System.out.println(order.isMale); //默认值false
		System.out.println(order.isFemale); //默认值null
	}
}

class Order{
	boolean isMale;
	Boolean isFemale;
}

2.包装类—>基本数据类型 :调用包装类Xxx的xxxValue()

举例:

    @Test
	public void test2(){
		Integer in1 = new Integer(12); //in1为包装类
		int i1 = in1.intValue();  //用i1接收变量
		System.out.println(i1 + 1);
		
		Float f1 = new Float(12.3);
		float f2 = f1.floatValue();
		System.out.println(f2 + 1);
	}

JDK5.0以后

代码如下:

    /*
	 * JDK 5.0 新特性:自动装箱与自动拆箱
	 * */
	@Test
	public void test3(){
	
//		int num1 = 10;
//		//基本数据类型--->包装类的对象
//		method(num1); //Object obj = num1;
		
		//自动装箱
		int num2 = 10;
		Integer in1 = num2; //自动装箱
		
		boolean b1 = true;
		Boolean b2 = b1 ; //自动装箱
		
		//自动拆箱 包装类--->基本数据类型
		System.out.println(in1.toString());
		
		int num3 = in1; //自动拆箱
		System.out.println(num3);	
	}

基本数据类型、包装类 ---->String类型:调用String重载的valueOf(Xxx xxx)

//基本数据类型、包装类 ---->String类型:调用String重载的valueOf(Xxx xxx) 
	@Test
	public void test4(){
		
		int num1 = 10;
		//方式1:连接运算
		String str1 = num1 + "";
//		System.out.println(str1);
		
		//方式2:调用String重载的valueOf(Xxx xxx)
		float f1 = 12.3f;
		String str2 = String.valueOf(f1); //"12.3"
		System.out.println(str2);
		
		Double d1 = new Double(12.4);
		String str3 = String.valueOf(d1);
		System.out.println(str3); //"12.4"

	}

String类型 —>基本数据类型、包装类;调用包装类的parseXxx()

//String类型 --->基本数据类型、包装类;调用包装类的parseXxx()
	@Test
	public void test5(){
		String str1 = "123";
//		int num1 = (int)str1;
//		Integer in1 = (Integer)str1;
		//
		int num2 = Integer.parseInt(str1);
		System.out.println(num2 + 1); //124
		
		String str2 = "true1";
		String str3 ="true";
		boolean b1 = Boolean.parseBoolean(str2);
		boolean b2 = Boolean.parseBoolean(str3);
		System.out.println(b1);//false
		System.out.println(b2);//true
	}

面试题

@Test
public void test1(){

	//类型得统一,类型提升 int---> double
	Object o1 = true ? new Integer(1) : new Double(2.0); 
	
	System.out.println(o1);  // 1.0
}
@Test
	public void test2(){
		Object o2;
		if (true)
			o2 = new Integer(1);
		else
			o2 = new Double(2.0);
		System.out.println(o2); // 1
	}

@Test
	public void test3() {
		//对于数组:println()里是char型数组输出的是内容,除了char型输出的都是地址值
		Integer i = new Integer(1);
		Integer j = new Integer(1);
		//==引用数据类型,比地址
		System.out.println(i == j);//false
		
		//自动装箱
		//Integer内部定义了IntegerCache结构,IntegerCache中定义了Integer[],
		//保存了从-128~127范围的整数。
		//如果我们使用自动装箱的方式,给Integer赋值的范围在-128~127范围内时,
		//可以直接使用数组中的元素,不用再去new了。
		//目的:提高效率
		Integer m = 1;
		Integer n = 1;
		System.out.println(m == n);//true
		
		Integer x = 128; //相当于new了一个Integer对象
		Integer y = 128; //相当于new了一个Integer对象
		System.out.println(x == y);//false
	}

以上是关于Java面试题基本类型包装类与String类间的转换的主要内容,如果未能解决你的问题,请参考以下文章

java-基本数据类型间的相互转化

从零开始的Java开发1-5-2 包装类与基本数据类型常用API基本数据类型与包装类字符串之间的转换包装类的初始值与比较对象常量池

Java——关于Java数据类型的面试题

Java——10个关于Java数据类型的面试题

面向对象之包装类与Object类

你不知道的基本数据类型和包装类 + 面试题