美文网首页
认识java(三)

认识java(三)

作者: Cipolee | 来源:发表于2019-03-02 22:06 被阅读0次

    原创

    第四章

    java数组具有length属性(只读)

    数组①数组的定义与为数组元素分配空间、赋值操作分开进行动态初始化

    静态初始化:定义数组的同时给数组分配空间并赋初值

    
    String[ ] str= new String[3];
    
    for(inti=0;i<str.length;i++){
    
       System.out.println(str[i]);
    
    }
    

    ATTENTION

    System.out.println(str[1].length());空指针错误
    String[]数组长度使用length;而String[i]使用length();
    String就是字符串,而String[]才是字符串数组
    不规则数组:不同行具有不同长度的数组
    

    多维数组的遍历

    int[ ][ ] square =
    
    {{3,5,7},{1,4,9},{2,5,6}};
    
    for(inti=0;i<square.length;i++){
    
      for(int j=0;j<square[i].length;j++){
    
      System.out.println(square[i][j]);
    
      }
    
    }
    

    java中数组的copy System.arraycopy(from,fromIndex,to,toIndex,count);

    fromIndex和toIndex是维度信息即列顺序-1;


    第五章

    关于java中的String.

    虽然String是字符常量,但是归根到底其是一个引用,只是通过引用转递变化如

    String s;
    s=s+“hallo";
    

    而其他的东西不能改变s如s.trim();toUpperCase();函数不改变其本身

    toUpperCase()和toLowerCase()方法返回一个新的String对象。如果原字符串本身就是大写形式或小写形式,那么返回原始对象。

    因为当需要改变字符串的内容时,String类的方法会返回一个新的String对象。同时,如果内容没有发生改变,String的方法只是返回指向原有对象的引用。

    基本值初始化后不能改变,不能修改,为什么要有Wrapper类:为了将基本类型转换为对象类型。

    /*java枚举:(public not protected 、private、abstract修饰符)enum名字 {变量1~n;}

    枚举类型不能通过new创建实例对象

    访问方法1:通过枚举类型名访问枚举常量

    s = SEASON.春季;(枚举类型变量s,其值为“春季”)

    访问方法2:通过枚举变量访问枚举常量(使用方法:类似于类的静态成员)

    • name():返回此枚举常量的名称

    -toString():返回此枚举常量的名称

    values():获得该枚举类型的所有枚举变量

    –ordinal():获取该枚举变量的编号

    §enum不能继承类(包括继承enum),只能实现接口,类无此限制,enum更像interface。最好不要使用*/


    第六章:

    l容器类:Java类库中提供的用于管理对象集的类

    功能:•持有、操作对象•自动完成容量的变化

    image

    collection中方法

    • int size();

    • boolean isEmpty();

    • boolean contains(Object o);

    • Iterator iterator();

    • Object[] toArray();

    • boolean add(E o);

    • boolean remove(Object o);

    • boolean containsAll(Collection<?>c);

    • boolean addAll(Collection<?extends E> c);

    • boolean removeAll(Collection<?>c);

    • boolean retainAll(Collection<?>c);

    • void clear();

    • boolean equals(Object o);

    {1.}collection中的容器能够直接输出,按照toString()方法。

    {2.}Collection接口的List子接口通过ArrayList或者LinkedList实现。

    {3.}LinkedList是双向链表:插入快访问慢,注意这些都是接口中的方法没有被实现,所以list前面都是接口

    如果想要使用一个接口则可以使用该接口的实现类完成【接口】
    接口对象 =new ArrayList();

    package terminal_review_test;
    
    import java.util.*;
    
    public class jiekou_test {
    
    public static void main(String[] args)
    
    {
    
    List list = new LinkedList();
    
    for(int i=0;i<=5;i++){
    
    list.add("a"+i);
    
    }
    
    System.out.println(list);
    
    list.add(3,"b");
    
    System.out.println(list);
    
    list.set(6,"c");
    
    System.out.println(list);
    
    System.out.println((String)list.get(2));//进入容器时 
    
    System.out.println(list.indexOf("a3"));
    
    System.out.println(list.set(6,"f"));//实参数,实际改变参数
    
    list.remove(1);
    
    System.out.println(list);
    
    }
    
    }
    

    collection中

    泛型List<String> list= new LinkedList<String>();容器中只能存String

    System.out.println(list.get(2));便无需转换String

    容器内加入的是对象的引用

    Vector是List接口的实现类

    线程安全的①Vector是线程安全的,是可以同步的,运行效率低;

    • offer():(入队)如果可能,将指定的元素插入此队列。

    • peek(),element():在不移除的情况下返回队头。peek方法在队列为空时返回null,element方法在队列为空时抛出异常。

    poll(),remove():移除并返回队头(出队)。poll方法在队列为空时返回null,remove方法在队头为空时抛出异常,其实现类主要是LinkedList故

    Queue queue=new LinkedList();
    

    Set

    接口的实现类TreeSet:保存次序的Set,

    底层为二叉树结构。使用它可以从Set中提取有序的序列。

    看一带hash的题

    
    Set s = new HashSet();
    
    s.add("Java");
    
    s.add("C#");
    
    s.add(new
    
    Student(1,"Tom",70));
    
    s.add("Java");
    
    s.add(new String("C#"));
    
    s.add(new Student(1,"Tom",70));
    
    System.out.println(s.size());
    
    System.out.println(s);未实现equals之前是4
    
    TreeSet只能接受实现了Comparable接口的类的对象
    
    hashmap可以使用null而hashtable不可以使用null
    
    (Collection都有iterator()方法返回Iterator接口的对象)
    
    Iterator接口:Iterator中方法boolean hasNext( )–object next()–void remove( )
    
    不可以使用迭代器删除for(Iterator i= c.iterator();i.hasNext();){  Student s = (Student)i.next(); if(s.getNo()>2)  /*i.remove();应使用c.remove(s);
    
    list接口都可以实现双向迭代
    
    实用类Collections提供了基于List容器的排序方式静态方法
    
    void sort(List);//对List容器内元素排序
    
    void shuffle(List);//对List容器内的对象进行随机排序
    
    void reverse(List);//对List容器内的对象进行逆序排列
    
    void copy(List dest,Listsrc);
    
    //把src中List容器内容拷贝到destList容器
    
    intbinarySearch(List,Object);
    
    //对顺序的List容器,用折半查找方法查找指定对象
    
     }
    

    Arrays实用类

    实现了对数组元素的排序、填充、转换为列表或字符串形式、增强的检索和深度比较等功能。

    如Interger[]a={3,34,53,22,34,5};

    Arrays.sort(a);

    如果要进行大量随机访问,使用ArrayList;如果要经常从表中间插入或删除元素,则使用LinkedList。

    各种Queue和栈的行为,都使用LinkedList代替

    Map是一种将对象与对象相关联的设计。HashMap设计用来进行快速访问,而TreeMap保持“键”始终处于排序状态,所以没有HashMap快。LinkedHashMap保持元素插入的状态,但是也是通过散列提供了快速访问的能力。

    Set不接受重复元素。HashSet提供最快的查询速度。TreeSet保持元素处于排序状态。LinkedHashSet以插入顺序保存元素。


    第七章 异常

    异常:运行期出现的错误

    异常的抛出(throw):运行时出现异常事件,生成对应的异常对象,该对象封装了异常的信息并被提交给Java运行时系统

    §方法何时用throws声明要抛出的异常

    –调用了一个抛出已检查异常的方法,方法中没有处理异常

    –程序运行时发现错误,利用throw抛出一个异常,方法中没有处理异常

    §若一个方法抛出多个已检查异常,则在方法定义头部列出所有的异常,每个异常用“,”分开。

    –void method1() throws Exception1,Exception2,...

    重写方法需要抛出与原方法所抛出异常类型一致(相同的类或子类)的异常或不抛出异常

    –不使用异常,程序的相应位置要对可能出现的各种异常情况处理,导致程序可能存在大量的选择分支结构,使程序的结构变的复杂;

    –采用异常处理,可简化上述处理过程,使程序具有统一的处理模式,可以将各种异常情况集中统一处理。


    第八章

    •RandomAccessFile

    –是一个十分有用的类,因为很多时候我们并不想覆盖掉文件,而是从某个位置开始进行输入。

    可以从一个特定的数据源读取数据

    r只读

    rw读写若不存在则创建

    相关文章

      网友评论

          本文标题:认识java(三)

          本文链接:https://www.haomeiwen.com/subject/wekyuqtx.html