44java集合异常快捷键.docx
- 文档编号:29588169
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:16
- 大小:19.96KB
44java集合异常快捷键.docx
《44java集合异常快捷键.docx》由会员分享,可在线阅读,更多相关《44java集合异常快捷键.docx(16页珍藏版)》请在冰豆网上搜索。
44java集合异常快捷键
4月11号复习:
epackagea;
publicclassA
{
publicinti=10;
intj=20;
privateintk=30;
protectedintl=40;
}
packageb;
publicclassBextendsA
{
publicinti=100;
intj=200;
privateintk=300;
protectedintl=400;
}
Bb=newB();
b.i?
10
b.j?
不可以访问,friendly的关键字其他包无法访问
b.k?
不可以访问,没有权限
b.l?
可以访问
攻略:
只要是查找变量,看类型
Ab=newB();
b.i?
10
Bb2=(B)b;
b2.i?
100;
------------------------------
publicclassA
{
publicstaticinti=10;
publicvoidprint()
{
}
}
publicclassBextendsA
{
publicinti=10;
publicvoidtest();//错,没有实现,publicabstractvoidtest();,即使改正也不对,因为只有抽象类才能有抽象方法
}
只有方法才有重载和重写
重写注意点:
范围只能变大不能变小
--------------------------------------------------------------------------------------
抽象类:
(抽象一部分)
不能直接创建对象
可以包含抽象方法
可以包含实例方法公用的部分
抽象类和普通的区别,和共同点?
区别:
抽象类可以有抽象方法,普通类不行
抽象类不能直接创建对象
**抽象类的抽象方法的作用域的范围public,protected
共同点:
都可以有实例变量,实例方法,静态变量,静态方法
接口:
(抽象所有)
接口和抽象类的区别?
区别:
接口里面全部都是抽象方法,抽象类不一定
接口里面的变量全部都是常量,抽象类不是
接口可以多实现,继承只能单继承
------------------------------------------------------------------------------------------------------------
publicinterfaceBusiness
{
publicinti=10;
}
publicclassTestimplementsBusiness
{
publicinti=20;
}
publicclassTest2extendsTest
{
static{
....
}
}
Businessb=newTest2();
--------------------------------------------------------------------------------------------------------------------------------
继续研究JDK,先学标准(接口),后研究实现(实现接口的类)。
因为接口中抽象方法都必须实现。
集合(重点):
引用类型的遍历、排序
1、Collection
子接口(常用的两个):
1)List:
元素可以重复;
2)Set:
元素不可重复,因为Set是以Map中的key作为底层,key在Map中是不能重复的,如果重复则后面的key将会覆盖前面的。
子接口的实现类:
1)ArrayList:
ArrayList底层就是一个Object数组
Listlist=newArrayList();
2)HashSet:
不排序,去重复
TreeSet:
排序(需实现comparable接口),去重复
2、Map
Map的底层是两个Object数组。
-----------------------------------------------------------------------------------------------------------
引用类型的比较
1、基本类型的比较,
inti=10;
intj=10;
i==j-->true比较的是值
2、引用类型的比较
Strings="abc";
Strings2="a"+"bc";
Objecto=newObject();
Objecto2=newObject();
s==s2-->true//比的是内存中的地址,不是比内容,但是由于jvm对性能的优化,由于内容相同所以jvm为了节约内存,就指向同一块区域。
o==o2-->false;//new出来的,即使内容相同但地址一定不同。
字符串及引用类型的比较千万不要使用==,一定要使用内容比较equals
**自定义引用类型以后的比较,如果是比较内容,一定要重写equals、hashCode方法。
(JDK已经存在的引用类型,equals和hashCode方法已经被重写过了可以直接使用)
----------------------------------------------------------------------------------------------------------------
如何判断对象的内容完全一致?
equals,hashCode
equals返回true&&hashCode返回值也必须一致
hashCode:
作为对象的唯一标识,和数据库中主键的作用差不多。
**如果需要支持两个对象进行比较,那么必须重写equals和hashCode方法,在比较内容上主要是equals方法起的作用。
equals方法
//1、先比较一下内存地址是否一致
if(this==obj)
{
returntrue;
}
//2、如果传入的类型不是Person类型,返回false
//Person.class;
if(obj.getClass()==Person.class)
//if(objinstanceofPerson)
{
//3、id相同,name也得相同,则认为是同一个对象
Personp=(Person)obj;
if(this.id==p.getId()&&this.name.equals(p.getName()))
{
returntrue;
}
}
returnfalse;
hashCode方法
publicinthashCode(){
return(int)this.id;//只是设置对象的唯一标识,没有比较的意义。
}
面向对象三大特性:
封装,继承,多态
封装:
对外隐藏字段(用private修饰),提供相应的方法进行修改和获取(更好的安全性),因为安全系统对方法可以更好的进行拦截。
privateintid;
privateStringname;
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
-------------------------------------------------------------------------------------------------------------------------
判断某个对象是否为某一个类型
法一:
instanceof-->判断某个对象是否为某一个类型(或者这类型的父类、子类)
Animala=newDog();
ainstanceofAnimal-->true
ainstanceofDog-->true
法二:
Personp=newPerson();
Personp2=newPerson();
可不可以得到是由哪个类来创建的?
?
obj.getClass()-->返回由哪个类来创建的对象
obj.getClass()==Person.class//类加载后在内存中地址就只有一份
obj.getClass()==Person.class和objinstanceofPerson有什么区别呢?
obj.getClass()==Person.class是精确匹配;
objinstanceofPerson是模糊匹配,其父类或者子类都能与其匹配成功
Animal
Dog
Cat
Dogd=newDog();
dinstanceofAnimal-->true
d.getClass()==Animal.class-->false
-----------------------------------------------------------------------------------------------------------------------
byteshortint....
ByteShortInteger...
0、null初值具有业务含义:
inti;0
Integeri;NULL
装箱和解箱-------基本数据类型与其相应的引用类型之间的相互转换
Integeri=10;等价于Integeri=newInteger(10)//装箱int-->Integer
intj=i+10;//解箱Integer-->int
由于jvm对性能的优化,由于基本数据类型对应的引用类型内容相同所以jvm为了节约内存,就指向同一块区域,而new出来的即使值相同但地址也不相同。
-------------------------------------------------------------------------------------------------------------
Integeri=10;
Integerj=10;
Stringll="abc";
intk=10;
System.out.println(i==j);//比的是地址
System.out.println(i==k);//true
**引用类型和基本类型比较、运算,就存在解箱的过程
Integeri=10;//newInteger(10)0x1111
Integerj=10;//如果数字小于等于127,会查看上面有没有创建该对象,如果有,直接返回0x1111
System.out.println(i==j);//true
Integeri=1000;//newInteger(1000)
Integerj=1000;//newInteger(1000)
System.out.println(i==j);//false
------------------------------------------------
集合的遍历
1、for(Objecto:
list)
{
System.out.println(o);//需要重写toSring()方法;
}
2、迭代!
!
--》可以遍历各种类型
使用集合中的iterator()方法,返回一个Iterator对象。
Iterator
只要有集合,必定有迭代
集合删除元素
Listlist=newArrayList();
list.add(100);
list.add(200);
list.add
(1);
remove(intindex);
list.remove
(1);//删除下标为1的元素
remove(Objecto);
list.remove(Integer.valueOf
(1));//将数值转换成对象,删除值为1的元素
删除集合元素不要用循环去做,因为循环的话,删除前一个元素后面的元素会自动向前补全,会报错。
请用迭代器。
-----------------------------------------------------------------------------------------------------------
泛型:
限定一个输入类型
List
---------------------------------------------------------------------------------------------------------
Arraylist
练习:
List:
100
200
300
400
500
删除200~400的元素,分析iterator的工作过程
-----------------------------------------------------------------------
TreeSet
Person要支持排序?
?
需要自定义排序规则,
1)实现Comparable接口
publicintcompareTo(Objecto){
//TODOAuto-generatedmethodstub
return0;
}
int:
0表示相等1大于-1小于
-----------------------------------------
有一个ArrayList,希望快速的去重复?
?
list--》set
Listlist=newArrayList();
list.add
(1);
list.add
(1);
list.add
(2);
Setset=newHashSet(list);
set.size();//2
set=newTreeSet(list);//不仅去重复,并且排序
---------------------------------------
集合的操作的API:
Collections和Collection区别?
Collection是接口
Collections是工具类
如:
Listlist=newArrayList();
list.add
(1);
list.add
(1);
list.add
(2);
list.add
(2);
list.add(100);
Collections.reverse(list);
Collections.sort(list);
Arrays也是一个工具类
-------------------------------------------------------------------------------------------------------------------
Map
Mapmap=newHashMap();
map.Put(ObjectK,ObjectV);//Map的key和value都是Object对象
Map的遍历:
1)获得Map中指定key的map.get(Objectk);
2)必须要获得所有的key
map.keySet();//获取map对象key值所有的set值,返回一个set类型。
遍历Map元素的关键。
Setset=map.keySet();
Iteratort=set.iterator();
While(t.hasNext)
{
map.get(t.next());
}
1)内存数据库的实现就是通过Map实现的。
2)set的底层就是一个map,通过map的key来实现唯一约束
--------------------------------------------------------------------------------------------------------------
去重复排序
ArrayList不能去重复Collections.sort()
HashSetequals(),hashcode()不能排序
TreeSetcompareTo()compareTo
HashMapmap.keyset(),compareTo()map.keyset(),compareTo()
--------------------------------------------------------------------------------------------------------------
异常:
异常和错误区别?
错误:
一些外在的意外情况,程序无法顾及的
异常:
程序运行过程/编译过程中,可能会发生的一些可预知的一些待处理的问题
**throws异常名称异常的说明,表示该方法可能会抛出该异常,如果不处理则异常会一层一层的向上抛,最后抛给main方法,main方法也不处理该异常将最终抛给JVM(java虚拟机),java虚拟机如果不能处理该异常则虚拟机停止运行,处理的了程序就正常运行。
**重写方法的时候,不能抛出更大的异常,只能抛出更小的。
**throw异常对象---------》动作,主动抛出一个异常
一般来说会构建RuntimeException
try
{
...
}
catch(RuntimeExceptione)
{
}
catch......
catch(Exceptione)//将所有没有考虑到的异常都捕获进行处理
{
}
finally{
这里的代码一定会被执行到
}
练习:
下面的代码输出结果
publicintret()
{
try
{
thrownewRuntimeException("test");
return1;
}
catch(Exceptione)
{
return2;
}
finally{
return3;
}
}
ret();//3
eclipse快捷键:
contentassistalt+/
wordcomplete去掉。
。
。
ctrl+o--》显示当前类的所有信息
ctrl+/-->快速注释
ctrl+1--自动补全包
ctrl+shift+t-->打开一个存在的类型
ctrl+shift+r-->快速的定位找到你自己的源文件
ctrl+shift+f-->快速使代码排版
ctrl+shift+o-->快速的导入合适的类型
ctrl+shift+/---->多行注释
选中代码,按TAB--》往后缩进
shift+tab-》去缩进
------------------------------------------------------------------------------------------------------
作业:
1、创建一个类,Student,学号,姓名,分数,使用封装
2、
键盘输入学号,姓名,分数,
根据输入的内容封装成对象
上述步骤执行N次,直到你输入quit,就退出
3、将上述学生信息展现在屏幕(以JSON字符串表示)
4、提示是否需要去重复排序(根据分数)?
如果输入Y,去重复排序TreeMap
5、提示是否需要正常排序(根据分数)?
如果输入Y,不去重复ArrayList
6、提示是否需要去重复?
如果输入Y,则去重复后输出HashSet
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 44 java 集合 异常 快捷键
![提示](https://static.bdocx.com/images/bang_tan.gif)