java学习笔记16

1、基本数据对象包装类


2、如何把基本数据类型转为字符串?可通过String类中的静态方法String.valueOf()来实现。那如何讲字符串转为基本数据类型?

只要异常声明了,那就是希望能够处理,真正不希望你处理的异常都是Runtime类的(且不声明的)异常,像  NumberFormatException就是Runtime异常,但是仍然声明了,还是希望你能有所处理的。

3、8种基本数据类型



基本数据对象包装类中valueOf()方法可以把传入的对象类型转换为相应的基本数据对象包装类对象。基本数据类型包装类对象转为字符串,如:可以调用它的Integer.toString()方法


上图中的i已经是int类型的123了,直接打印I结果也是123,不用i.intValue()也可以直接打印。


最后一条指令是转换为任意进制,例如4进制。


4、下图可以说明a,b是两个独立的对象。地址自然不同,但是Integer的equal方法已经重写,比较的是对象的数值大小是否相同。把Integer对象转化为int基本数据类型是借助i.intValue()


自动装箱,自动拆箱

4、129大于一个字节,所以重新开辟了一个空间,所以x==y打印的是false,若果是127就是一个字节可以表示,就不会开辟新空间,也即用的是一个空间,所以x==y打印的结果是true


1、集合类(在java.util包中)


当对象很多的时候就用集合(这个容器)来对其进行存储。


2、集合体系的共性内容就是抽取到最上层collection

下面的部分其实主要讲的就是各种容器,像之前讲过的Arrlist,collection等等,都用来存放对象。

迭代器iterator:专门用来取出集合中的元素。

size 返回里面有没有元素,有或者没有。快捷键ctrl,shift+o快速导入需要的包。collection是一个接口,是抽象的。




5、直接打印collection,是把整个集合中的内容以一个字符串的形式打印出来。

而用迭代器iterator的方法是每次取出其中的一个字符串。


如果想在循环遍历完还用迭代器那就用while,如果循环完就不用了,那就用for()循环。

迭代器就是实现了Iterator接口的每一个容器的内部对象,每一个容器里格局自己的结构有自己独特的iterator,特定的集合容器于实现Iterator接口,覆盖了里面的方法,也就成了自己专有的。



8、List具有添加,插入,删除,修改的功能,但是Collection只有前三个功能。List的remove(2)方法返回的是被移除的那个对象(让操作者明白移除的是哪个)和set(1,“abc8”),返回的是abc2,返回的是被修改的对象(也是同样道理)。

Collection是接口,List是Collection的子类,也是接口,ArrayList是其具体实现


如果以移除的是对象,那么返回的是Boolean

容器集合里面没有length这一说法,只能用size()来代替。



LIst不仅可以通过itertior来取出元素,还可以通过get(角标)来得到特定的对象(List特有的方法 )


之前是List集合在操作元素对象,后面是迭代器在操作对象,while循环中List.add("abc9")表明List又在操作元素对象,你List刚把元素对象的个数确定下来,我迭代器根据个数开始一个个取,你List在我取的半路又加进来新的元素对象,那我迭代器是该取新的元素对象还是不该取新的元素对象?这下纠结了,就报了ConcurrentMidification这个异常。但是我又想在迭代器迭代的过程中加入新的元素对象,那则么办呢?迭代器只有三个方法hasNext(),next(),remove(),没有add()的方法,显然通用的迭代器方法不够用,那就可以用listIterator()这个针对(完美适合)List的加强版iterator来添加元素对象,listIterator()里面的方法有很多,其中就有add()的方法。要注意的是listIterator中的add()方法是在listiteraotor当前所指的位置加入元素对象,而不是在List的最末尾加入元素对象,一般像Collection中的add()都是把新元素对象加在最后的位置。



10、vector现在用的很少了,就算是同步,也是在ArrayList上加锁。


12、vector中凡是带着elements的方法 都是vector所独有的。Enumeration 接口方法和interator一样,就是少个remove.


模仿队列的功能写个类DuiLei

14、java1.6的版本后,多了个和getFirst()功能一样的函数peekFirst,还有和removeFirst()功能一样的pollFirst(),功能虽一样,但是稍有不同。


15、注意迭代器it.next()在输出完成后,next会自动往后走一个。next可以理解为一个指针。

因为我们的容器集合接收的都是object对象,所以我们存进去的各种类型的对象都被向上转型为object类型后存入集合,那么取出来的自然也是Object类型的,若果想用那个对象特定的方法,就必须把取出的对象先向下转型为原始的类型才可以。

另外,每用一次迭代器的next()方法,next就会自动往后走一位,所以下图中注释的方法不能显示一个对象的名字和年龄。需要强转一下,用Person类型的对象指着才行。


集合中存放的都是对象的引用!!!各种集合本身也是对象,所以都是开辟在堆内存中的。本来add()只能添加对象,但是1.5版本后也可以直接add(5),其实是自动装箱了,把5变成了对象,然后才添加的。基本数据类型赋给引用数据类型的时候才会自动装箱!当引用数据类型和基本数据类型做运算的时候,引用数据类型就会拆箱为基本数据类型,再去做运算。



16、迭代就是取出单个的意思。set集合取出元素对象只有迭代器一种方法。set中的元素不能重复,元素无序。(重复的元素对象根本存不进去)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值