导航

学习《21天学通Java 6》(四)第3章总结

Posted on 2012-07-30 15:38  immiki  阅读(112)  评论(0编辑  收藏  举报
第三章 对象

1.类是用来创建对象的模板,对象(也称为实例)是程序的自包含元素,他们包含相关的特性和数据。

2.可以使用new运算符和要创建的对象所属的泪的名称,并加上圆括号

String name = new String();

URL addr = new URL();

3.StringTokenizer类,位于java.util包中。它将一个字符串划分为一系列叫做标记(token)的字符串

StringTokenizer st1 = new StringTokenizer(quote1);

默认分解符:空格' ',水平制表符'\b',换行'\n',回车'\r',换页'\f'

StringTokenizer st2 = new StringTokenizer(quote2,"@");

用@分割

使用st1.nextToken()读取下一个子串

4.程序运行时,Java定期地查询未使用的对象,并收回这些对象所咱用的内存。这种被称为无用单元收集,完全自动。不必显示的释放对象占用的内存。

5.类变量是在类中定义和存储,它们的值适用于类及其所有实例

类变量定义的方法是在前面加上关键字static

引用类变量时使用类名,(用变量也可以),代码更容易阅读,出错也好调试。

6.String类的一些方法

str.length();//长度

str.charAt(5);//返回地5个字符

str.substring(1,7);//返回从1到7的子字符串

str.indexOf('V');//返回字符V的下标

str.indexOf("IBM");//返回字符串IBM开始位置的下标

str.toUpperCase();//返回字符串的大写版

7.System.out.format()格式化输出。

%,d 显示十进制数,且每三位用逗号隔开

%n 回车

%.11f 显示包含11位小数的值

8.对象的引用

引用是一个地址,它指明了对象的变量和方法的存储位置。

将对象付给变量或将其作为参数传递给方法时,使用的是对象的引用。

A a1 = new A();

A是类名,a1 是引用,new A()才是对象,a1引用指向new A()这个对象。

在Java 中,"="不能看做是一赋值语句,他不是把一个对象的赋给另一个对象,它执行过程实质是将右边的对象的地址传给了左边的引用,使得左边的引用指向了右边的对象。

总结:

初始化时,“=”语句左边的是引用,右边是new出来的对象

在之后,左右都是引用的"="语句时,左右的引用同时指向了右边的引用指向的对象。

9.强制转换基本类型

有一种基本数据类型用于不能用于强制类型转换中,布尔值要么是true 要么是false,不能用于强制类型转换操作中

通常可以将byte或者char用作是int,将int用作float或long。

将任何数字类型用作double

在大多数情况下,由于更大的数据类型的精确度比小类型高,所以不会导致信息丢失。

一种例外——将整数转换为浮点数,将int或者long转换为float ;long转换为double时,都可能导致精确度降低。

总结:

可以的:byte/short -> int ; int -> float/long ; anything ->double

不可以:? -->boolean ;boolean --> ?;

精度降低:int /long ->float ; long ->double.

10.将大类型值转换成小类型时,必须显示地进行强制类型转换,否则将导致精确降低。

(typename) value

int result = (int)(x/y);由于强制类型转换的优先级高于算数云散,所以必须使用圆括号,否则,x先被转换成int,然后被除。

11.强制转换对象

(1)在需要子类对象的地方使用超类对象,必须显示地进行强制类型转换。

在转换过程中,不会损失任何信息,而是得到了子类定义的全部方法和变量

(2)(classname)object;

强制类型转换中创建了一个classname对象的引用,原来的对象继续存在。

(3)VicePresent是Employee的一个子类。

Employee emp = new Employee();

VicePresent veep = new VicePresent();

emp = veep;// 在该使用超类对象时使用子类对象----ok

veep = (VicePresident) emp ;//在该使用子类对象时,使用超类对象要要显式的强制类型转换

(4)除了强制转换成某种类之外,还可以将对象强制转换为接口,但是,仅为该对象的类或者其超类之一实现了该接口才行。

将对象转换为接口,意味着可以调用该接口的方法,即使该对象的类并没有实现这个接口。

12.基本类型不可以和对象之间进行转化

自动封装和拆封:一种自动转换过程,处理表示用一类值的基本类型和对象时更为容易

自动封装自动地将基本类型转换为对象,而拆封执行相反的操作

Float  f1 = new Float (12.1F);

Float f2 = new Float (37.9F);

System.out.println("Lower number: " + Math.min(f1,f2));//自动拆封

13. == 和!=用于对象时不时判断一个对象的值是否等于另一个对象的值,而是判断运算符两端引用的是否是用一个对象。

14.字符串字面量在Java中是经过优化的:

 如果使用字面量创建一个字符串,然后用相同的字符内容来重新创建它时,Java将返回原来的String对象。这样两个字符串将是同一个对象——并没有创建两个不同的对象

 15.判断对象所属的类

(1)判断赋给变量key的对象所属的类

String name = key.getClass().getName();

getClass()是在Object类中定义的,因此所有的对象都可以用这种方法,这种方法返回一个Class对象(Class是一种类),对象的getName()返回一个表示类名的字符串

(2)instanceof运算符

Instanceof有两个操作数:左边为对象的引用,右边是类名

boolean check1 = "Texas" instanceof String;//true

Point pt = new Point(10,10);

boolean check2 = pt instaneceof String;//false