第 4章
从 autoboxing,unboxing认识 对象
– 关 于 对象
– 自动装箱、拆箱使用对象
想写一个程序取得现在的系统时间,您只要产生一个 java.util.Date工具就可以了
Date实际上如何向系统取得时间,则无需您来操心
Date date = new Date();
System.out.println(date.toString());
Tue May 03 16:06:46 GMT+08:00 2005
code\ch04\NowTime.java
使用对象
字符串就是对象,是 java.lang.String类别的一个实例
String text = "Have a nice day!!,)";
System.out.println("原文," + text);
//传回全为大写的字符串内容
System.out.println("大写," + text.toUpperCase());
//转回全为小写的字符串内容
System.out.println("小写," + text.toLowerCase());
//计算字符串长度
System.out.println("长度," + text.length());
//传回取代文字后的字符串
System.out.println("取代," + text.replaceAll("nice","good"));
//传回指定位置后的子字符串
System.out.println("子字符串," + text.substring(5));
code\ch04\StringDemo.java
使用对象
简单的用户登入程序
System.out.print("使用者名称,");
String username = scanner.next();
System.out.print("用户密码,");
String password = scanner.next();
if("caterpillar".equals(username)
&& "1975".equals(password)) {
System.out.println("秘密信息在此! ");
}
else {
System.out.println(username +
"您好,输入的登入数据有误,请重新输入! ");
}
code\ch04\UserLogin.java
包裹( Wrap)基本类型
Long,Integer,Double,Float,Boolean
等类别是所谓的 Wrapper类别
主要目的,就是让您提供一个对象实例作为「壳」,将基本类型包到这个对象之中
如此您就可以操作这个对象,就好像您将基本类型当作对象一样操作包裹( Wrap)基本类型
int data1 = 10;
int data2 = 20;
//使用 Integer来包里 int资料
Integer data1Wrapper = new Integer(data1);
Integer data2Wrapper = new Integer(data2);
//直接除以 3
System.out.println(data1 / 3);
//转为 double值再除以 3
System.out.println(data1Wrapper.doubleValue() / 3);
//进行两个值的比较
System.out.println(data1Wrapper.compareTo(data2Wrapper));
包裹( Wrap)基本类型自动装箱、拆箱
在 J2SE5.0之前,要如下才能将 int包装为一个 Integer物件
在 J2SE5.0之后提供了自动装箱的功能
Integer integer = new Integer(10);
Integer integer = 10;
自动装箱、拆箱
Integer data1 = 10;
Integer data2 = 20;
//转为 double值再除以 3
System.out.println(data1.doubleValue() / 3);
//进行两个值的比较
System.out.println(data1.compareTo(data2));
code\ch04\AutoBoxDemo.java
自动装箱、拆箱
自动装箱运用的方法还可以如下:
更一般化的 java.lang.Number类别自动装箱
int i = 10;
Integer integer = i;
Number number = 3.14f;
自动装箱、拆箱
自动拆箱( unboxing)
在运算时,也可以进行自动装箱与拆箱
Integer fooInteger = 10;
int fooPrimitive = fooInteger;
Integer i = 10; //装箱
System.out.println(i + 10); //拆箱
System.out.println(i++);
Boolean boo = true;
System.out.println(boo && false);
小心使用 boxing
自动装箱与拆箱的功能是编译程序来帮忙
自动装箱与拆箱的功能是所谓的「编译程序蜜糖」 ( Compilersugar)
Integer i = 100; Integer i = new Integer(100);
Integer i = null;
int j = i;
Integer i = null;
int j = i.intValue();
NullPointerException
小心使用 boxing
Integer i1 = 100;
Integer i2 = 100;
if (i1 == i2)
System.out.println("i1 == i2");
else
System.out.println("i1 != i2");
Integer i1 = 200;
Integer i2 = 200;
if (i1 == i2)
System.out.println("i1 == i2");
else
System.out.println("i1 != i2");
显示 "i1 == i2"
显示 "i1 != i2"
code\ch04\AutoBoxDemo2.java
code\ch04\AutoBoxDemo3.java
小心使用 boxing
‘==’也用于判断两个对象参考名称是否参考至同一个对象
在自动装箱时对于值从 -128到 127之间的值,
它们被装箱为 Integer对象后,会存在内存之中被重用
Integer i1 = 200;
Integer i2 = 200;
if (i1.equals(i2))
System.out.println("i1 == i2");
else
System.out.println("i1 != i2");
code\ch04\AutoBoxDemo4.java