认识java(三)

2019-03-02  本文已影响0人  Cipolee

原创

第四章

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:通过枚举变量访问枚举常量(使用方法:类似于类的静态成员)

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

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

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

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


第六章:

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

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

image

collection中方法

{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是线程安全的,是可以同步的,运行效率低;

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读写若不存在则创建

上一篇下一篇

猜你喜欢

热点阅读