您的位置:首页 > 编程语言 > Java开发

Java中的数组

2015-11-23 12:28 381 查看
数组

Java中多维数组的声明和初始化应按从高维到低维的顺序进行

String s[]=new String [3];

String 中的方法

s.length();求数组长度

s.isEmpty();[返回值为Boolean型]

s.indexOf('e') 返回‘e'所在的位置 如果不在返回-1;

s.subString(1) 从1到字符串结尾 输出字串

s.replace('e','*') 把e换成*;

s.split(",")按逗号切割 返回类型是数组

s.trim() 去除首尾空格

s.toCharArray() 返回新数组与原字符串相等但是可进行更改

"ABC".equalsIgnoreCase("abc")

lastIndexOf('b') 最后一个位置

startWith();

endWith();

String gh='a';

for(int i=0;i<1000;i++){

gh=gh+i;//共生成一个对象

}

String gh=new String("a");

for(int i=0;i<1000;i++){

gh=gh+i;//共生成1002个对象

}

StringBuilder gh=new StringBuilder("a");

for(int i=0;i<1000;i++){

gh=gh+i;//共生成2个对象

}

StringBuilder中的方法

StringBuilder 有内部扩容机制

StringBuilder sb=new StringBuilder("abcdefghijklmnop");

sb.delete(int start,int end);

insert

replace

IndexOf

lastIndexOf()

reverse()

StringBuilder(线程不安全,效率高) 可变字符串序列

StringBuffer(线程安全,效率低)

append return this;可以追加方法链

String 不可变字符序列

Java就是Unicode字符串序列,例如串“Java”就是4个Unicode字符J,a,v,a组成的。

java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类String,每个

双引号括起来的字符串都是String类的一个实例。

String类equals 比较的是内容

==比较的是地址

String str=new String("abcd");

String str2=new String("abcd");

str2.equals(str) true

str2==str false

String str3="def";

STring str4="def";

str3.equals(str4); true;

str3==str4; true;

数组的常见操作

数组的拷贝

System里也包含了一个staticvoid arraycopy(object src,objiect dest,int

destpos,int length)方法,该方法可以将数组里的元素附给dest数组的元素,其中

srcpos指定从数组的第几个元素开始附值,length参数指定将src数组的多少个元素附给

dest数组的元素。

String []s={"Mircrosoft","IBM","Sun","oracle","Apple"};

String[] aBak=new String[6];

System.arraycopy(s,0,sBak,0,s.length);

System类包含有一些有用的类字段和方法。它不能被实例化。

在System类提供的设施中,有标准输入,标准输出和错误输出流;对外部定义的属性和环

境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。

数组打印

System.out.println(Arrays.toString(s));

asList()返回一个受指定数组支持的固定大小的列表

二分查找

二分查找的前提是数组必须是排好序的

binarySearch(参数);使用二分搜索获得指定对象

数组排序

Arrays.sort(s);为s数组排序(从小到大)

如果数组是引用对象类型,需要我们自定义排序方法

冒泡排序,二分查找

填充

Arrays.fill(a,2,44,100); 将2到4索引的元素替换为100

包装类的作用

-提供:字符串、基本数据类型、对象之间互相转化的方式!

-包含每种基本数据类型的相关属性如最大值、最小值等

基本数据类型的包装类(wrapper class)

基本数据类型 包装类

byte Boolean

short Short

char Character

int Integer

long Long

float Float

double Double

Integer i=new Interger(1000);

toHexInteger(i); 将i转成十六进制

Integer.MAX_VALUE 最大值2^31-1

Integer.MIN_VALUE 最小值-2^31

Integer i2=Integer.parseInt("234");将字符串“234”转换成Int型数据

i2.intValue();

自动装箱

-基本类型就自动的封装到UI特相同类型的包装中,如:

-Integer i=100;

-本质上是,编译器编译时为我们添加了:

-Integer i =new Integer(100);

自动拆箱

-包装类对象自动转换成基本数据类型。如:

-int a =new Integer(100);

-本质上,编译器编译时为我们添加了:

-int a=new Integer(100).intValue();

缓存问题

[-128,127]之间的数仍然当做基本数据类型来处理。

字符串相关类

不可变字符序列:String

可变字符序列:StringBuffer StringBuilder

时间处理相关类

Date时间类(java.util.Date)

在标准Java类库中 包含一个Date类。它的对象表示一个特定的瞬间,精确到毫秒。

Java中时间的表示说白了也是数字,是从:标准纪元1970.1.1.0点开始到某个时刻的标准

数,类型是long。

getTime();

setTime();

before(Date when) 比较时间

after(Date when) 比较时间

equals(Object object)

toString();

toGMTString();转换成格林尼治时间

Date构造器

DateFormat(抽象类)唯一子类SimpleDateFormat

完成字符串和时间对象的转化!

format 把时间对象按照格式化字符串,转换成字符串

parse 把字符串转换成时间

Calendar(日历类)

GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家使用的标准日

历系统。

注意:

-月份:一月是0,二月是1

-星期:周日是1,周一是2

Math类

File类

Java.io.File类:文件和目录路径名的抽象表示形式

通过File对象可以访问文件属性

public Boolean canRead() public Boolean canWrite()

public Boolean exists() public boolean isDirectory()

public Boolean isFile() public boolean isHidden()

public long lastModified() public long length()

public String getName() public String getPath()

通过File对象创建空文件夹或目录(在该对象所指的文件或目录不存在的情况下)

public boolean createNewFile()throws IOException

public boolean delete()

创建目录

public boolean mkdir(),mkdirs() 注意两个的区别

异常(Exception)机制

Java是采用面向对象的方式来处理异常的。处理过程

-抛出异常:在执行一个方法是,如果发生异常,则这个方法生成代表该异常的一个对象

,停止执行当前执行路径,并把异常对象提交给Jre

-捕获异常:Jre得到该异常后,寻找相应的代码来处理该异常。Jre在方法的调用栈中查

找,从生成异常的方法开始回溯,指导找到相应的异常处理代码为止。

异常分类

JDK中定义了很多异常类,这些类对应了各种各样可能出现的异常事件,所有异常对象都

是派生于Throwable类的一个实例。如果内置的异常类不能满足需要,还可以创建自己的

异常类。

Exception

所有的异常类的父亲,其子类对应了各种各样可能出现的异常事件。

Runtime Exception(unchecked Exception)

-一类特殊的异常,如被零除、数组下标超范围等,其产生比较频繁,处理麻烦,如果显

示的声明或补货将会对程序可读性和运行效率影响很大。因此由系统自动检测并将它们交

给缺少的异常处理程序(用户不必对其处理)

Checked Exception

这一类异常,我们必须捕获进行处理

异常的处理办法一样

捕获异常(try,catch,finally)

try语句指定了一段代码,该段代码就是一次捕获并处理的范围。在执行过程中,当人以

一条语句产生异常时,就会跳过该段后面的代码。代码中可能会产生并抛出一种或几种类

型的异常对象,他后面的catch语句分贝对这些异常做相应的处理

注意:当异常处理的代码执行结束以后,是不会回到try语句去执行尚未执行的代码。

try catch finally return 执行顺序

1.执行try catch给返回值赋值

2.执行finally

3.return

异常处理办法之二

声明异常:throws子句

当Checked Exception产生时,不一定立刻处理它,可以把异常Throws出去。

如果一个方法抛出多个已检查异常,就必须在方法的首部列出所有的异常,之间以逗号隔

开。

方法重写中声明异常原则

子类声明的异常范围不能超过父类声明的范围

包含如下意思:

-父类没有声明异常,子类也不能

-不可抛出原有方法抛出异常类的父类或上层类

也可以自己手动throw

File f=new File("c:/tt.txt");

if(!f.exists()){

try{

throw new FileNotFoundException(“File cant be found”);}catch

(Exception e){e.printStackException;}

五个关键字(try,catch,finally,throws,throw)

先逮小的,在逮大的

可以自定义异常类(继承Exception,重写构造器)

异常和重写的关系

使用异常机制建议

要避免使用异常处理代替错误处理,这样会降低程序的清晰性,并且效率低下。

处理异常不可以代替简单测试--只在异常情况下使用异常机制

不要进行小粒度的异常处理--应该将整个任务包装在一个Try语句块中

异常往往在高层处理

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: