zoukankan      html  css  js  c++  java
  • 学习《21天学通Java 6》(四)第3章总结

    第三章 对象

    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

  • 相关阅读:
    关于Android反编译
    调用图灵机器人API实现Android智能机器人
    STM32 驱动1602液晶
    1602A液晶
    STM32 PWM波
    STM32的优先级NVIC_PriorityGroupConfig
    STM32——timer
    Ajax Json的后台例子
    固定导航例子
    本周学习总结
  • 原文地址:https://www.cnblogs.com/miki/p/3308571.html
Copyright © 2011-2022 走看看