java api 有多少个类_Java API常见的使用类(二)

数组的高级操作

1,数组是存储同一种数据类型多个元素的容器。

2,特点是每个元素都有从0开始的编号,称为索引。

3,数据的操作:

1,遍历:

//数组的遍历

public static void printArray(int[] arr){for(int i=0;i

System.out.println(arr[i]);

}

}

2,获取最大值:

//获取最大值

public static int getMax(int[] arr){int max=arr[0];for(int i=1;imax){

max=arr[i];

}

}returnmax;

}

3,排序:

a 冒泡排序:相邻元素两两比较,最大后往后放,第一次比较完毕,最大值在最大索引处。

//冒泡排序

public static void bubleSort(int[] arr){for(int i=0;iarr[j+1]){int temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

}

b 选择排序:从0索引元素开始,依次和后边的所有元素进行比较,小的往0索引处放,第一次比较完毕后,最小值在0索引。

//选择排序

public static void selectSort(int[] arr){for(int i=0;i

arr[j]=arr[i];

arr[i]=temp;

}

}

}

}

4,查找:

a 普通查找:遍历数组,从头找到尾。

//查找

public static int getIndex(int[] arr,intvalue){int index=-1;if(arr==null) returnindex;for(int i=0;i

index=i;break;

}

}returnindex;

}

b 二分查找:每次都从中间开始查找,如比中间值小,就在左边找,如果比中间值大,就在右边找,如果相等就返回该值索引。

前提:数组必须是有序的。

public static void getIndex(int[] arr,intvalue){int start=0;int end=arr.length-1;int mid=(start+end)>>1;while(arr[mid]!=value){if(value>arr[mid]){

start=mid+1;

}else if(value

end=mid-1;

}if(start>end){return -1;

}

mid=(start+end)>>1;

}returnmid;

}

Arrays

1,Arrays是针对数据进行操作的工具类。

2,需要掌握的功能:

a:把数组转换成字符串。

public static String toString(int[] arr)

b:排序。

public static void sort(int[] arr)

c:二分查找。

public static int binarySearch(int[] arr,int value)

StringBuffer

1,StringBuffer是字符串缓冲区,长度可改变。

2,构造方法:

a:StringBuffer buffer=new StringBuffer();

b:StringBuffer buffer=new StringBuffer(int capacity);

c:StringBuffer buffer=new StringBuffer(String s);

注意: StringBuilder的功能与StringBuffer一致,StringBuilder是JDK5以后出现的。

3,需要掌握的功能:

添加功能:

StringBuffer append(data):在缓冲区追加数据,添加到尾部。

StringBuffer insert(index,data):在指定位置插入数据。

删除功能:

StringBuffer delete(start,end):删除从指定位置开始到结束的内容。包左不包右。

StringBuffer deleteCharAt(index):删除指定位置的字符。

替换功能:

StringBuffer replace(start,end,string):从指定位置开始至结束的内容替换成一个字符串,返回当前对象的引用。

截取功能:

public String substring(int start):截取从指定位置开始到末尾的字符串并返回。

public String subsring(int start,int end)截取从指定位置开始到指定位置结束的内容,并返回。

返转功能:

public StringBuffer reverse():把字符串缓冲区对象的内容进行反转。

字符串和字符缓冲区的相互转换:

//String-->StringBuffer

StringBuffer buffer=newStringBuffer(String s);

StringBuffer buffer=newStringBuffer();

buffer.append(String s);//StringBuffer-->String

String s=newString(StringBuffer buffer);

String s=(StringBuffer buffer).toStirng();

基本数据类型包装类

1,我们针对基本数据类型只能做一些基本的算术运算,想对其做一些复杂操作,就做不了。

所以,JAVA提了基本数据类型的包装类,这样就有很多属性和方法可供我们使用了。

2,基本数据类型对应的包装类:

byte       >> Byte

short      >> Short

int         >> Integer

long       >> Long

float      >> Float

double   >> Double

char      >> Character

boolean >> Boolean

3,Integer类的构造方法:

a Integer i=new Integer(int x);

b Integer i=new Integer(String s);

注意:s必须是数字字符组成的字符串。

4,Integer的功能:

a  String >>  int

String s=”100”;

int i=Integer.parseInt(s);

b  int  >>  String

int i=100;

String s=Integer.valueOf(i);

5,JDK5以后的新特性。

a 自动装箱:从int到Integer

b 自动拆箱:从Integer到int

//示例

Integer i=100; //自动装箱,等价于 Integer i=new Integer(100);

i+=200; //i自动拆箱 i.intValue()//自动装箱 i=i.intValue()+200;

System.out.println(i);

注意事项:基本数据类型包装类让我们操作变的简单 ,但其中也隐含一个问题,操作前最好做不为null的校验。

6,Byte常量池的问题:

//byte常量池示例

Integer i=new Integer(128);

Integer i2=new Integer(128);

System.out.println(i==i2); //false

System.out.println(i.equals(i2)); //trueInteger i3=128;

Integer i4=128;

System.out.println(i3==i4); //false

System.out.println(i3.equals(i4)); //trueInteger i5=127;

Integer i6=127;

System.out.println(i5==i6); //true

System.out.println(i5.equals(i6)); //trueInteger i7=new Integer(127);

Integer i8=new Integer(127);

System.out.println(i7==i8); //false

System.out.println(i7.equals(i8)); //true//byte范围内的值赋值包装类的时候,是从常量池里获取的。

7,包装类的功能测试

需求:把“1 44 34 88 98 -4”字符串进行排序并打印输出

分析:

首先需要将字符串中的空格进行去除,

然后将字符串需要进行类型转换成数组。

将数组进行排序,

将数组转换成字符串,输出。

//获取字符串

String s="1 44 34 88 98 -1";//将字符串空格切割转换成字符串数组

String[] strs=s.split(" ");//将字符串数组转成int数组

int [] arr=new int[strs.length];for(int i=0;i

arr[i]=Integer.parseInt(strs[i]);//对数组进行排序Arrays.sort(arr);//调用方法 将数组转换成字符串原来的格式。

String result=strsToString(arr);

System.out.println(result);//

//返回类型:String//参数列表:int[]

private static String strsToString(int[] arr) {

StringBuilder builder=newStringBuilder();for(int i=0;i

builder.append(arr[i]).append(" ");

}returnbuilder.toString().trim();

}

Random

1,是产生随机数的类。

2,构造方法:

a Random r=new Random();

b Random r=new Random(long seed);

注意:种子一样,随机数一样。

3,掌握的方法 :

public int nextInt(int n );

产生在[0,n]之间的随机数。

正则表达式

1,符合一定规则的字符串。

2,规则:

字符:

x    字符x

\\   反斜线字符

\r   回车

\n  换行

字符类:

[abc]         a、b或c

[^abc]       任何字符,除了a、b或c

[a-zA-Z]     a到z,A到Z,包括两端的字符

[0-9]          数字0到9

预定义字符:

.         任意字符

\d       数字[0-9]

\w       单词字符[a-zA-Z_0-9]

边界适配器:

^       行的开头

$       行的结尾

\b      单词的边界 指这里不能出现的字符,如hello;world   xi.xi

Greedu数量词:

x?        x,一次或一次也没有。

x*       x,零次或多次。

x+       x,一次或多次。

x{n}    x,n次。

x{n,}   x,n次以上。

x{n,m} x至少n次不超过m

组:从左边小括号开始编号,每一个对应一个组。

(a(b(c)d(e)))

第一组:a(b(c)d(e))

第二组:b(c)d(e)

第三组:c

第四组:e

我们可以通过组名来获取组内的内容,组0表示整个表达式。

组功能示例:

需求:

“我..我.爱爱....JJJ..ja...a..vv...aaa....a”将字符串还原成"我爱Java"

分析:

首先将所有.替换成“”

将重复的叠词只保留一个。

//定义一个字符串

String strs="我..我.爱爱....JJJ..Ja...a..vv...aaa....a";//将.替换成""

String s1=strs.replaceAll("\\.","");//将重复的叠词保留一个

String s2=s1.replaceAll("(.)\\1+","$1");

System.out.println(s2);

叠词:

在同一个字符串中,右边引用左边:“(.)\\1+”

在下一个字符串中引用前边字符串组的内容:“(.)\\1+”,“$1”

3,通过String类的功能使用正则表达式

判断 public boolean matches(String regex)

分割 public String[] split(String regex)

替换 public String replaceAll(String regex,String newString)

获取 :

1,pattern和Matcher类。

pattern:正则表达式的编译表示形式。

Matcher:匹配器

2,使用步骤:

//正则表达式获取功能的使用步骤

Pattern p=Pattern.compile(String regex);//规则

Matcher m=p.matcher(String findstring);//查找的字符串//判断是否有

while(m.find){//有就获取System.out.println(m.group());

}

3,获取的简易示例:

需求:“hi,what do you want to do?”找到其中两个字符的单 词分别是哪些

//定义一个字符串

String s="hi,what do you wat to do ?";//定义规则

String regex="\\b[a-z]{2}\\b"Pattern p=Pattern.compile(regex);

Matcher m=p.mathcer(str);while(m.find){

System.out.println(m.group());

}

Date

1,Date:是一个日期类,大部分方法已过时。被Calendar替代

构造方法 :

Date d=new Date();//获得当前日期的毫秒值

Date d=new Date(long time);//把一个毫秒值转换成日期。

获取毫秒值:

getTime()

2,DateFormat:

对日期进行格式化和字符串进行解析的类。

String >> Date

public  Date parse(String source)

解析:parse()

Date  >> String

public final String format(Date date)

格式化:format()

示例:

//获得当前日期

Date d=newDate();

String s=dateToString(d,"yyyy年MM月dd日HH:mm:ss");

System.out.println(s);public staticString dateToString(Date date,String format){return newSimpleDateFormat(format).format(date);

}

//字符串日期转成日期

String s="2014-03-27 15:20:13";

Date d=stringToDate(s,"yyyy-MM-dd HH:mm:ss");

System.out.println(d);private static Date stringToDate(String date,String string) throwsParseException {return newSimpleDateFormat(string).parse(date);

}

3,Calendar:

日历类,对日期进行了更细的划分,可以获取日历的每个字段值。

根据日历字段获取对应的值:

get()

设置年月日

set(int year,int month,int date)

修改指定日历的值

add(int field,int value)

示例:

根据输入的日期判断这年的2月有多少天(闰年)

Calendar c=Calendar.getIntance();

Scanner sc=newScanner(System.in);int y=sc.nextInt();

c.get(y,2,1);

c.add(Calendar.DATE,-1);int d=c.get(Calendar.DATE);

System.out.println(d);

System

系统类,通过静态的方法供我们使用。

需要掌握的功能:

exit()

currentTimeMillis()

arraycopy() 小写。

Collection

1,集合的由来:

我们需要对多个对象进行存储,可以使用对象数组。

但是如果对象的个数是变化的, 对象数组就解决不了。

因此Java提供了集合类。

2,集合体系的由来:

多种集合的数据结构不同,但是它们都有共同的特性,

通过不断的向上抽取,最终形成了集合的体系结构。

Collection

|

|-----List

|---ArrayList

|---Vactor

|---LinkedList

|

|-----Set

|---HashSet

|---TreeSet

3,Collection的接口功能:

添加功能:add(Object obj)

删除功能:remove(Object obj)

判断功能:contains(Object obj)

获取功能:Iterator iterator()

长度功能:size()

4,迭代器:以内部类的方式存在。

1,就是遍历集合的一种方式。

2,迭代器不能单独使用,它依赖集合而存在。

3,使用步骤:

1,通过集合调用Iterator的方法得到迭代器对象。

2,通过迭代器的hasNext()判断是否有元素。

3,通过迭代器的next()方法获取元素。

集合示例:

//创建集合对象

Collection c=newArrayList();//创建元素对象

String s="hello";

String s1="world";

String s2="java";//将元素添加到集合c.add(s);

c.add(s1);

c.add(s2);//通过集合调用Iterator()方法获得迭代器对象

Iterator it=c.iterator();//遍历

while(it.hasNext()){//向下转型

String s=(String)it.next();

System.out.println(s);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值