Integer、String、包装类、转换、效率

java具有对象的思想,但是基本数据类型不是面向对象
而且基本数据类型带的功能比较薄弱
因此,java在JDK1.5的时候为每个基本数据类型定义了对应的包装类
具体如下:
Byte–>byte
Short–>short
Integer–>int
Long–>long
Float–>float
Double–>double
Character–>char
Boolean–>boolean
包装类的转换例子:

 public class Intdemo {
	public static void main(String[] args) {
		System.out.println("--------1--------");
		//int类型转换成包装类,可以调用Integer和Object方法
		int i=10;
		Integer i1=new Integer(i);
		System.out.println(i1);
		
		//String-->int
		System.out.println("-------2-------");
		String s1="123";
//		String s1="abc";//NumberFormatException
		//String类型转换成int类型的前提是String里的内容是数字,不能是字母
		Integer i2=new Integer(s1);
		System.out.println(i2);
	}
}

包装类转换的方法
int --> String
String --> int

public class IntStringdemo {
	public static void main(String[] args) {
		//int --> String 的方式
		System.out.println("--------1-------");
		//方式1
		int num=100;
		String s1=""+num;
		System.out.println(s1+"----"+num);
		
		System.out.println("----------2--------");
		//方式2
		String s2=String.valueOf(num);
		System.out.println(s2+"----"+num);
		
		System.out.println("--------3--------");
		//方式3
		//int --> Integer -->String
		Integer i=new Integer(num);
		String s3=i.toString();
		System.out.println("s3:"+s3);
		
		System.out.println("--------4-------");
		//方式4
		String s4=Integer.toString(num);
		System.out.println("s4:"+s4);
		
		//String -- int
		
		System.out.println("-----5--------");
		//方式1
		//String -- Integer -- int
		String s5="100";
		Integer i1=new Integer(s5);
		int x1=i1;
		System.out.println("x1:"+x1);

		//方式2
		System.out.println("-------6------");
		int x2=Integer.parseInt(s5);
		System.out.println("x2:"+x2);
	}
}

JDK5的新特性:
自动装箱:自动把基本数据类型转换成包装类
自动拆箱:把包装类型转换成基本数据类型

public class Intdemo1 {
	public static void main(String[] args) {
		//定义一个int类型的包装类
		Integer i1=new Integer(100);
		System.out.println("i1:"+i1);
		
		System.out.println("-------1------");
		Integer i2=100;
		System.out.println("i2:"+i2);
		//上一行代码相当于System.out.println("i2:"+i2.intValue());自动拆箱,把包装类的i2转换成基本数据类型
		
		//通过反编译工具反编译后得到的真实源码
		//Integer i2=Integer.valueOf(100);//自动装箱的真实过程
		//System.out.println(new StringBuider("i2:")).append(i2).toString());
		
		Integer i3=null; 
		//Integer是一个对象,null是空对象,把null赋值给对象,就是不给对象开辟空间
		System.out.println(i3);
		//直接输出并不会报错,因为没有使用它
//		i3++;
//		System.out.println(i3);
		//将i3进行运算后进行输出,则会报错(空指针异常)NullPointerException
		//因此我们需要对其进行判断,再进行运算
		if(i3 != null) {
			i3++;
		}else {
			System.out.println("要出异常啦");
		}
	}
}

效率问题:

public class Intdemo2 {
	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));//比较值
		
		//通过查看valueOf();方法的源码,当传入的数值在-128~127之间,就会做一个数据缓冲池;
		//如果改数据范围在缓冲池范围内就直接返回,否则就要开辟新的空间,效率相对较慢
		Integer i3=Integer.valueOf(127);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值