原创
第四章
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类库中提供的用于管理对象集的类
功能:•持有、操作对象•自动完成容量的变化

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);
collection中的容器能够直接输出,按照toString()方法。
Collection接口的List子接口通过ArrayList或者LinkedList实现。
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读写若不存在则创建
网友评论