zoukankan      html  css  js  c++  java
  • 对象转型、迭代器Iterator、Set集合、装箱与拆箱、基本数据类型与字符串的转换、TreeSet集合与对象

     

    包的声明与定义

    需要注意的是,包的声明只能位于Java源文件的第一行。

    在实际程序开发过程中,定义的类都是含有包名的; 如果没有显式地声明package语句,创建的类则处于默认包下; 在实际开发中,这种情况是不应该出现的(示例代码主要展现的是功能部分的代码,所以在大多数示例代码中没有为示例指定包名)。

     

    如果有时候需要用到一个包中的许多类,则可以使用“import 包名.*; ”来导入该包下所有类。

     

    对象转型

    1. 什么是对象转型

    (1)数据类型转换

    基本数据类型之间,在使用时可以进行类型转换。

     

    其中:大à小的转换可能丢失数据

    (2)对象转型

    引用类型(对象)之间,使用时也可以进行转换,但前提是两个对象之间存在继承关系

     

    其中:向下转型存在风险

     

    1. 向上转型(upcasting)

    (1)语法

    父类 父类对象=子类实例

     

    (2)限制

    只能用父类的成员,不能用子类的新成员(编译错)

     

    1. 向下转型(downcasting)

    (1)语法

    子类 子类对象=(子类)父类对象

     

    (2)向下转型不安全

    编译可以通过,运行时可能抛异常:java.lang.ClassCastException

     

    (3)向下转型成功的条件

    父类对象,其声明类型是父类,但实际类型是子类

    子类实例向上转型得到的对象,再向下转型才能成功

     

    1. instandof运算符

    (1)语法

    对象名 instanceof 类名

    (2)运算规则

    如果对象是类或其子类的实例,则返回true

     

    迭代器Iterator<E>

    java.util包中的一个接口Iterator<E>

    1. 作用

    提供一组方法来遍历集合

    Iterator<String> iter =list.iterator();

        while(iter.hasNext())

    {

        String str=iter.next();

        System.out.println(str);

    }
    1. 主要方法

    boolean hasNext():集合中是否还有下一个可访问的元素

    E next():返回下一个可访问的元素。必须确保还有下一个可访问的元素,否则抛异常NoSuchElementException

    void remove():删除上一次next()方法返回的元素。

    1. 迭代器遍历的基本逻辑

    while(调用hasNext()){

    调用next()读取元素

    }

    1. 迭代器的好处

    隐藏底层结构的复杂性,提供统一的遍历方法

    1. 迭代器的限制

    只能遍历一次

    用迭代器遍历时,集合是只读的

     

    1. List的双向迭代

    List的listIterator()方法,返回ListIterator接口,可以反向迭代

    System.out.println("反向迭代");

    while(iter.hasPrevious()) { System.out.println(iter.previous()+" "); }

    怎样才能得到Iterator<E>接口的实例

    Collection接口的iterator()方法

     

    增强的for循环与迭代器(JDK1.5)

    1. 语法格式

    for(集合中元素的类型 e:集合或数组){ ​ 循环体 }

     

    Set集合

    List集合:元素可以重复,并且有序(存入的顺序)

    Set集合:元素不能重复,而且无序

     

    是Collection接口的子接口,只是对add()方法做了限制,并没有增加新的方法

    1. HashSet如何排除相等的元素?

    例:需要重写Object的两个方法:hashCode()和equals(),定位,判断

    1. 基本数据类型的变量不是对象

    2. 8种基本类型对应8个包装类 (1)java.lang包 (2)Byte、Integer、Short、Long、Float、Double 数字包装类,共同的父类java.lang.Number (3)Character、Boolean

     

    1. 包装类解决什么问题

    把基本数据类型à对象

    (可以像对象一样使用基本数据类型,即引用包装类的属性和方法)

    如:(1)equals()方法

    (2)compareTo()方法(实现了Compareable<T>接口)

    装箱与拆箱

    【说明】JDK1.5自动装箱、自动拆箱

    1. 装箱

    (1)包装类的方法

    构造方法

    public Integer(int value)

    public Integer(String s) throws NumberFormatException

    静态方法:valueOf

    public static Integer valueOf(int i)

    public static Integer valueOf(String s)

    throws NumberFormatException

    (2)自动装箱

    Integer 对象名=int数据;

     

    1. 拆箱

    (1)拆箱后才能做为基本数据类型参与运算

    (2)xxxValue()方法:xxx是基本数据类型

    public int intValue()

    public long longValue()

    ……

    (3)自动拆箱

    直接用:Integer可以直接用在任何使用int的地方

    强制类型转换:(int)Integer对象

     

    1. 自动装箱与拆箱

    (1)好处

    使用int与Integer几乎等价,更加方便

    (2)扩展:基本数据类型与Object之间的自动装箱与拆箱

    装箱:Object 对象名=int数据

    拆箱:int 变量名=(int)Object对象

     

    基本数据类型与字符串的转换

    String.valueOf()

    1. 基本数据类型String

    (1)基本数据类型+""

    (2)String.valueOf()

     

    TreeSet集合与对象比较

     

    一. 引例

    1. TreeSet的特点:不重复,有序

    2. TreeSet如何为对象排序

    add( )方法抛异常

    如果类没有实现java.lang.Comparable接口,TreeSet调用add()方法时将抛异常

    二. 对象比较:Comparable接口

    1. 对象能否比大小?

    有的对象可以按某种规则来比大小,从而实现排序

    1. 对象比大小不能用关系运算符

    对象比大小必须要依赖某种规则,而不能直接使用比较运算符

    即,通过调用某个方法(规则)来比较对象的大小

    1. Comparable<T>接口的方法

    只提供一个方法:int compareTo(T other)

    返回0:两个对象相等

    返回>0:当前对象大于other

    返回<0:当前对象小于other

    1. Comparable<T>接口的含义

    (1)接口的用处:能使类具有比较的能力,即可比较的

    (2)使用:如果类实现了该接口,那么对象之间就可以比较大小

    三. 一组对象如何排序

    1. 例:对象数组的排序

    2. 可比较的对象才能排序

    四. TreeSet中的对象应满足什么条件?

    (1)实现Comparable接口

    (2)comparaTo相等与equals()相等的逻辑必须一致

    五. 对象能否按多种不同的规则排序

    实现java.util.Comparator<T>接口,把接口作为参数传入相关的方法

    1. 比较器接口:Comparator<T>

    (1)java.util.Comparator<T>

    (2)接口的方法:int compare(T t1,T t2)

    返回0:两个对象相等

    返回>0:t1大于t2

    返回<0:t1小于t2

     

    1. 如何使用该接口

    (1)接口的用处:提供一个专门用于比较对象大小的类,即比较器

    (2)使用:分两个步骤

    步骤一:定义比较器

    步骤二:需要时调用比较器来完成对象大小的比较

     

  • 相关阅读:
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    网页排版中的浮动和定位(学习笔记)
    在html中,<input tyle = "text">除了text外还有几种种新增的表单元素
    初学者入门web前端:C#基础知识:函数
    初学者入门web前端 C#基础知识:数组与集合
    while/for循环
    jmeter http请求与参数化
    rpm -e --nodeps
  • 原文地址:https://www.cnblogs.com/mumuyinxin/p/8639430.html
Copyright © 2011-2022 走看看