2使用Java高级使用技术.docx

上传人:b****4 文档编号:24192197 上传时间:2023-05-25 格式:DOCX 页数:47 大小:456.76KB
下载 相关 举报
2使用Java高级使用技术.docx_第1页
第1页 / 共47页
2使用Java高级使用技术.docx_第2页
第2页 / 共47页
2使用Java高级使用技术.docx_第3页
第3页 / 共47页
2使用Java高级使用技术.docx_第4页
第4页 / 共47页
2使用Java高级使用技术.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

2使用Java高级使用技术.docx

《2使用Java高级使用技术.docx》由会员分享,可在线阅读,更多相关《2使用Java高级使用技术.docx(47页珍藏版)》请在冰豆网上搜索。

2使用Java高级使用技术.docx

2使用Java高级使用技术

一、集合框架与泛型

1.1Java集合框架图:

注:

算法是对实现接口的对象执行计算的方法!

1.2接口:

Collection接口:

是最基本的集合接口,可以存储一组不唯一、无序的对象。

List接口:

存储一组不唯一,有序(插入顺序)的对象。

Set接口:

存储一组唯一,无序的对象。

Map接口:

存储一组键值对像,提供key(键)到value(值)的映射。

1.2.1使用ArrayList和LinkedList动态存储数据:

List接口下的两大实现类分别为:

ArrayList和LinkedList。

ArrayList:

实现了长度可变的数组,在内存中分配连续的空间。

遍历元素和随机访问的效率比较高。

LinkedList:

采用链表存储方式。

插入、删除元素时效率比较高。

ArriyList的常用方法:

例如:

publicclassNewTitle{

privateintid;//ID

privateStringtitleName;//名称

privateStringcreater;//创建者

publicintgetId(){

returnid;

}

publicvoidsetId(intid){

this.id=id;

}

…..省略其他getter和setter方法……..

publicclassArrListTest{

publicstaticvoidmain(String[]args){

//1、创建多个新闻标题对象

NewTitlecar=newNewTitle(1,"汽车","管理员");

NewTitlete=newNewTitle(2,"高考","管理员");

//2、创建存储各类新闻标题的集合对象

Listlist=newArrayList();

//3、按照顺序依次添加各类新闻标题

list.add(car);

list.add(te);

//4、获取新闻标题的总数

System.out.println("新闻标题数目为:

"+list.size()+"条");

//5、根据位置获取相应新闻标题、逐条打印每条新闻标题的名称,也就是说遍历几何对象。

注意强制类型转换。

for(inti=0;i

NewTitletitle=list.get(i);

System.out.println((i+1)+":

"+title.getTitleName());

}

/*for(Objectobj:

list){

NewTitletitle=(NewTitle)obj;

System.out.println(title.getId()+":

"+title.getTitleName());

}*/

//6、使用foreach循环遍历集合对象

System.out.println("使用foreach循环");

for(NewTitlenewTitle:

list){

System.out.println(newTitle.getTitleName());

}

}

}

 

LinkedList的特殊方法:

例如:

publicstaticvoidmain(String[]args){

//1、创建多个类新闻标题对象

NewTitlecar=newNewTitle(1,"汽车","管理员");

NewTitleme=newNewTitle(2,"医学","管理员");

//2、创建存储各类新闻标题的对象

LinkedListlist=newLinkedList();//必须创建LinkedList类型对象,添加头条等方法List中没有声明

//3、添加头条新闻标题和末尾标题

list.addFirst(car);

list.addLast(me);

//4、获取头条、以及最末条新闻标题

NewTitlefirst=(NewTitle)list.getFirst();

NewTitlelast=(NewTitle)list.getLast();

//5、删除最末条新闻标题

list.removeLast();

for(inti=0;i

NewTitletitle=(NewTitle)list.get(i);

System.out.println((i+1)+":

"+title.getTitleName());

}

}

1.2.2使用HashSet类动态存储数据:

HashSet集合类的查找效率比较高。

特点:

1、集合内的元素时无序排列的;2、HashSet类是非线程安全的;3、允许集合元素值为null。

 

HashSet常用方法:

方法

说明

booleanadd(Objecto)

如果此Set中尚未包含指定元素,则添加指定元素

voidclear()

从此Set中移除所有元素

intsize()

返回此Set中的元素的数量(Set的容量)

booleanisEmpty()

如果此Set不包含任何元素,则返回true

booleancontains(Objecto)

如果此Set包含指定元素,则返回true

booleanremove(Objecto)

如果指定元素存在与此Set中,则将其移除

1.3Iterator接口:

Iterator接口表示对集合进行迭代的迭代器。

Iterator接口为集合而生,专门实现集合的遍历。

两个主要方法:

1、hasNext():

判断是否存在下一个可访问的元素,如果仍有元素可以迭代,返回true。

2、next():

返回要访问的下一个元素。

注:

凡是Collection接口派生而来的接口或者类,都实现了iterate()方法,此方法返回一个Iterator对象。

例如:

publicstaticvoidmain(String[]args){

//1、创建多个类新闻标题对象

NewTitlecar=newNewTitle(1,"汽车","管理员");

NewTitlete=newNewTitle(2,"高考","管理员");

//2、创建存储各类新闻标题的集合对象

Setset=newHashSet();

//3、按照顺序依次添加各类新闻标题

set.add(car);

set.add(te);

//4、获取新闻标题的总数

System.out.println("新闻标题数目为:

"+set.size()+"条");

//5、使用iterator()获取Iterator对象

Iteratorit=set.iterator();

//6、使用Iterator遍历集合

inti=1;

while(it.hasNext()){

NewTitleti=(NewTitle)it.next();

System.out.println((i)+":

"+ti.getTitleName());

i++;

}

}

 

1.4Map接口:

Map接口存储一组成对的键(key)-值(value)对象,提供key到value的映射,通过key来检索。

Map中的key不要求有序,不允许重复。

value也不要求有序,但允许重复。

Map的实现类是HashMap。

HashMap接口的常用方法:

例如:

publicstaticvoidmain(String[]args){

//1、创建学员对象

Studentstudent1=newStudent("李明","男");

Studentstudent2=newStudent("刘丽","女");

//2、创建保存键-值对的集合对象

Mapmap=newHashMap();

//3、把英文名称与学员对象按照键-值对的方式存储在HashMap中

map.put("Jack",student1);

map.put("Rose",student2);

//4、打印键集

System.out.println("键集:

"+map.keySet());

//5、打印值集

System.out.println("值集:

"+map.values());

//6、打印键-值对集合

System.out.println("键值集合:

"+map);

//7、判断是否存在"Jack"这个键

Stringkey="Jack";

if(map.containsKey(key)){

//8、如果存在,根据键获取相应的值

Studentst=(Student)map.get(key);

System.out.println("学员姓名:

"+st.getName());

}

System.out.println("使用Iterator遍历Map集合");

Setset=map.keySet();

Iteratorit=set.iterator();

while(it.hasNext()){

Stringkeys=(String)it.next();

Studentstudent=(Student)map.get(keys);

System.out.println("学员姓名:

"+student.getName());

}

}

1.5使用Collections类操作集合:

Collections类是java中提供的一个集合操作工具类,它包含了大量的静态方法,用于实现集合元素的排序、查找和替换等操作。

在java中,如果想实现一个类的对象之间比较大小,那么这个类就要实现Comparable接口。

类的comparableTo()方法被称为它的自然比较方法,此方法用于比较次对象与指定对象的顺序,如果该对象小于、等于或大于指定的对象,则分别返回负整数、0或整数。

这个方法在实现Comparable接口的时候,如果有需要,则需要重写。

例如对象的比较,要把一个学生类的集合里的所有学生进行排序,则可以按照年龄排序,那么就需要把comparableTo()方法重写。

代码如下:

//重写comparable方法(指定规则,排序)

publicintcompareTo(Objecto){

Studentstu=(Student)o;

if(this.age>stu.getAge()){

return1;

}elseif(this.age

return-1;

}

return0;

}

Collections类定义操作集合的静态方法:

1、staticvoidreverse(Listlist):

反转指定List集合中元素的顺序

2、staticvoidsort(Listlist):

根据元素的自然顺序,对指定List集合按升序排列

1.6泛型:

泛型定义:

将对像的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性。

泛型的本质就是参数化类型。

也就是说操作的数据类型被指定为一个参数,使代码可以应用于多种类型。

 

泛型的定义语法:

类1或者接口<类型实参>对象=new类2<类型实参>();

注意:

1、类2可以使类1本身,可以使类1的子类,还可以是接口的实现类;

2、类2的类型实参必须与类1的类型实参相同;

例如:

ArrayListlist=newArrayList();

上述代码表示创建一个ArrayList集合,但规定集合中存储的元素类型必须为String类型。

Map集合的泛型定义:

Mapmap=newHashMap();

上述代码表示将Map接口的引用指向了实现类ArrayList的对象,但规定Map集合里的key值必须是String类型,而value值必须是Student类型。

泛型从根本上改进了集合的使用和安全:

1、存储数据时进行严格的类型检查,确保只有合适类型的对象才能够存储在集合中;

2、从集合中检索对象时,减少了强制类型转换。

二、实用类

2.1JavaAPI:

JavaAPI即Java应用程序编程接口。

还特指API的说明文档,也成帮助文档。

JavaAPI提供了如下常用的包:

java.lang:

编写Java程序时最常用使用的包,自动导入到所有的程序中,包含了程序的基础类和接口。

包装类、Math类、String类等常用的类都包含在此包中,java.lang包还提供了用于管理类的动态加载、外部进程创建、主机环境查询和安全策略实施等“系统操作”的类。

java.util:

包含了系统辅助类,特别是Collection、List和Map等集合类。

java.into:

包含了与输入/输出有关的类。

包含了与网络有关的类,如Socket、SercerSocket等类。

java.sql:

包含了与数据库相关的类,如Connection、Statement等类。

2.2枚举:

枚举是指由一组固定的常量组成的类型。

使用关键字enum定义。

语法:

[访问修饰符]enumenumName{

枚举常量列表,中间用“,”隔开

}

注:

在枚举中,如果除了定义枚举常量,还定义了其他成员,则枚举常量列表必须以分号(;)结尾。

2.3包装类:

2.3.1包装类概述:

设计类时为每个基本数据类型设计了一个对应的类,成为包装类。

包装类均位于java.lang包中。

包装类的主要用途:

1、作为和基本数据类型对应的类类型存在,方便对象的操作。

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

2.3.2包装类和基本数据类型的装换:

(一)基本数据类型转换为包装类:

(两种方式)

1,使用包装类的构造方法:

(1)publicType(typevalue)。

(2)publicType(Stringvalue)。

其中,Type表示包装类,参数type作为基本数据类型。

例如:

IntegerintValue=newInteger(21);或IntegerintValue=newInteger(“21”);

注意:

不能使用第二种形式的构造方法创建Character类型的包装类对象,只能是CharactercharValue=newCharacter(‘21’);这种形式。

2,使用包装类valueOf()方法:

Integer包装类的使用方法

方法

说明

IntegervalueOf(inti)

返回一个表示指定的int值的Integer对象

IntegervalueOf(Strings)

返回保存指定的String的值的Integer对象

IntegervalueOf(Strings,intradix)

返回一个Integer对象,该对象中保存了用第二个参数提供的基数进行解析式从指定的String中提取的值

(二)包装类转换成基本数据类型:

例如:

intnum=Integer.parseInt("123");

//在java中,只有纯数字的字符串才能解析成整数

(二)包装类和基本类型的自动转换:

例如:

publicintgetAge(){

intage=this.age;//自动拆箱:

由包装类转换成基本数据类型

returnage;

}

publicvoidsetAge(intage){

this.age=age;//自动装箱:

由基本数据类型转换成包装类

}

注意:

包装类对象只有在基本数据类型需要用对象表示时才使用,包装类并不是用来取代基本数据类型的。

 

2.4Math类:

Math类中的所有方法都是静态的,并且是final类,常见方法:

(1)staticdoubleabs(doublea):

返回double值的绝对值。

例如,math.abs(-3.5);返回3.5。

(2)staticdoublemax(doublea,doubleb):

返回两个double值中较大的一个。

(3)staticdoublerandom():

返回一个double值,该值大于等于0.0且小于1.0

例如:

使用random方法实现双色球抽奖

publicstaticvoidmain(String[]args){

ListredList=newArrayList();

while(redList.size()<6){

//产生红色球随机数

intred=(int)(Math.random()*33)+1;

if(!

redList.contains(red)){

redList.add(red);

}

}

/*

*while(true){intred=(int)(Math.random()*33)+1;

*if(redList.size()==6){break;}else{

*if(!

redList.contains(red)){//刚刚产生的球在集合中是否存在redList.add(red);}}}

*/

//产生蓝色球随机数

intblue=(int)(Math.random()*16)+1;

Collections.sort(redList);

for(Objectobj:

redList){

System.out.print(obj+"");

}

System.out.println(blue);

}

2.5使用String类操作字符串:

Java中字符串被作为String类型的对象类处理。

String类位于java.lang包中,默认情况下,该包被自动导入所有的程序。

String类提供了许多有用的方法,例如:

获得字符串的长度,对两个字符串进行比较、连接两个字符串以及提取一个字符串中的某一部分等。

特点:

一个String对象所包含的字符串内容永远不会被改变。

 

String类常用的方法:

Stringstr="abcdeb";

System.out.println(str.length());//str.length()方法得到字符串的长度长度:

6

System.out.println(str.equals("abc"));//str.equals():

值是否相等false

System.out.println(str.equalsIgnoreCase("abcDEB"));//truestr.equalsIgnoreCase():

忽略大小写,比较是否相等

System.out.println(str.endsWith("cde"));//falsestr.endsWith()是否是以指定的字符串结尾

str="abc";

System.out.println(str.concat("EEEEEEEE"));//字符串的连接

System.out.println(str.charAt(0));//a置顶索引的字符:

索引是0时出现的字符

System.out.println(str.indexOf("b",3));//-1说明不存在指定索引:

从第3位开始第一次出现b的索引

System.out.println(str.indexOf("bcde"));//-1:

说明不存在字符串第一次出现的索引

str="abc,aaa,BBB";

String[]strs=str.split(",");//拆分:

按照”,”将字符串"abc,aaa,BBB"进行拆分"

for(Stringstring:

strs){

System.out.println(string);

}

System.out.println(str.toUpperCase());//ABC,AAA,BBB将小写字母转换成大写

System.out.println(str.toLowerCase());//abc,aaa,bbb将字符串字母大写转换成小写

System.out.println(str.substring

(2));//abc,aaa,bbb前面两个空格也算是字符串的长度。

从索引时第2位开始到最后一位的字符串

System.out.println(str.substring(2,5));//abc从索引时第2位开始到5位截取的字符串,字符串从此位置开始截取,不包括结束位置[beginIndex,endIndex)

System.out.println(str.trim()+"*****");//abc,aaa,BBB*****清除字符串前后位置的空格,把前后的空格去掉,中间的不能去掉

publicstaticvoidmain(String[]args){

//1、常用的方法:

length,toLowerCase,toUpperCase,split

Stringstr="要好好学习Java";

intlength=str.length();//字符串长度

System.out.println(str+"的长度是:

"+length);

StringrStr=str.toLowerCase();//转换小写

System.out.println(str+"转换小写是:

"+rStr);

System.out.println(str+"转换大写是:

"+str.toUpperCase());//转换大写

System.out.println();

Stringemails="l.l@;w.w@;z.z@";

String[]emailsList=emails.split(";");

System.out.println("收件人是:

");

for(Stringemail:

emailsList){

System.out.println(ema

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1