1、java中的基本类型不是类类型,为了能够为基本类型提供对应的对象或者对应的类类型,因此在jdk类库中提供了8个类,叫包装器类,分别对应8种基本类型,也就是说,可以把基本类型的数据或者变量当做类来处理
注意:这8种类类型在初始化之后,所指对象的内容是不能改变的。
public class Main
{
static void change(Num tar)
{
tar.val=3;
}
static void change(Integer tar)
{
tar=3;
}
public static void main(String[] args)
{
Num a=new Num(5);
change(a);
System.out.println(a.val);
Integer i=new Integer(5);
change(i);
System.out.println(i);
}
}
class Num
{
public int val;
public Num(int val)
{
this.val=val;
}
}
这段代码的结果是
3
5
因为,刚开始传入的是Num类型的,所以调用第一个change方法,刚开始new出来的放在堆区,然后tar指向了堆区的5,然后改变了tar所指堆区中的值,也就是a的值改了,所以最后输出为3。
但是,对于8种基本类型初始化之后,他们的值是不能改的,所以刚开始tar指向堆区中的5,但是值不能改,所以,在外面复制出一份5,再把外面的5改成3,tar指向外面的3,但是最后输出的还是i,所以结果还是5。
注意:一个方法中,只能调用一个方法,不能写别的方法,所以change方法只能在Main方法外面写。
2、实例1:常用API
Integer i=new Integer(100);
//生成了一个整数对象,值为100;
Double d=new Double("123.456");
//生成了double类型的对象,传来的形参不是小数,而是小数类型的字符串这样是可以的
//但是如果传来""或者是"abcd"会报错
//Double e=new Double("");
//Double e1=new Double("abcd");
int j=i.intValue()+d.intValue();
//intValue()取整数值,注意不会四舍五入
float f=i.floatValue()+d.floatValue();
//floatValue()取小数值100.0和123.456
System.out.println(j);
System.out.println(f);
double pi=Double.parseDouble("3.1415926");
System.out.println(pi);
//作用是将字符串类型的转换为double类型;
//这里需要的是double类型的东西,但是确提供了一个字符串,怎么转换成double呢?
//double中提供了一个公有的静态方法parseDouble,可以直接访问parseDouble,这样就可以将字符串类型的转为double类型;
//double pi1=Double.parseDouble("");
//double pi1=Double.parseDouble("abc");
//上面两个语句都会出错;
double r=Double.valueOf("2.0").doubleValue();
//将形参类型转换为Double
double s=pi*r*r;
System.out.println(s);
int k=Integer.parseInt("123");
//作用是将字符串类型的转换为int类型;
//这里需要的是int类型的东西,但是确提供了一个字符串,怎么转换成int呢?
//int中提供了一个公有的静态方法parseInt,可以直接访问parseInt,这样就可以将字符串类型的转为int类型;
System.out.println(k);
答案:
223
223.456
3.1415926
12.5663704
123
3、jdk5之后
(1)可以自动封装,也就是将一个整数类型的东西赋值给一个Integer对象,编译器可以进行自动处理,将其变成Integer对应的1
(2)可以自动解封