Java : java基础(2) 集合&正则&异常&File类
Obj 方法: hashCode() 返回内存地址值, getClass() 返回的时运行时类, getName() 返回类名, toString() 把名字和
hashCode() 合在一起返回,如果直接输出对象,返回的就是这个东西, equals() 比较两个对象的地址值是否相等.
== 比较基本数据类型比较的是值,比较引用数据类型比较的是地址值,如果不重写equals方法,那么==和equals是一样的,但是有的类比如String重写了equals方法,那么比较的就是里面的值而不是地址值了.(String 类型无论==和equals都是比较值,因为如果常量池中存在了这个字符串,那么如果再次使用的话就直接用,String 类型的字符串是无法改变的)
-127 -- +128 是byte 的取值范围,如果 Integer 类型包装的int值在这个范围内,那么就不会新创建对象,而是直接从常量池获取.
如果一个字符串作为正则表达式的时候,那么转义. 或者 d 这种匹配符号要用两个 \\ 因为首先编译器会转义一次,把 \\转义为\
正则表达式引擎会再转义一次,把\. 转义为. 表示任意字符
Pattern p = Pattern.compile(regex); //p是一个正则表达式
Matcher m = p.matcher(s); // m 是一个编译器,用p去匹配s字符串
while (m.find()) {m.group()} // 先用find()方法寻找,如果找到了,可以用m.group() 把匹配到的字符串提取出来 这样可以循环取出所有匹配的的字符串(m.find()寻找的是子序列,即不是完全匹配.字符串的matches()方法是完全匹配,即整个字符串要完全匹配整个正则表达式)
BigDecimal,可以用它来进行精确的小数计算,前提是构造的时候必须要在构造方法中传入字符串类型的小数,不能直接传入float和double.如果非要传入小数类型的话,那么可以用 BigDecimal.valueOf() 这种方法构建一个BigDecimal数
如果想要获得年或者月或者日之类的时间,那么建议使用Calendar类,里面取代了Date类大部分关于年月日的方法.
java的集合(Collection)框架下的类如ArrayList只能存放引用数据类型,基本数据类型在直接往里面存的时候会先包装成包装类然后存进去.
泛型里面只能写引用数据类型,不能写基本数据类型.
泛型可以加在类的定义上,如 public class Stu<E> 这样的话,如果类里面的方法是 public E getxxx() 这种类型的话,那么创建类的时候给E泛型赋了什么类型,方法就返回什么类型,也可以用在方法的形参里面.
如果类里面的某个方法需要单独加泛型那么可以用 public<T> void show(T t) 这种方法声明方法的泛型,这样调用这个方法传递参数的时候,传递的参数是什么类型,T就是什么类型.静态方法必须要用这种方式声明泛型,因为类的泛型的类型0是在创建类的对象的时候进行声明,而静态方法不需要创建对象就能调用.
<?> 是泛型通配符,他可以表示任意类型,如在创建数组时 : List<?> list = newArratList<String> 当右边的泛型不确定时,可以在左边的泛型里面填入?, <? extends E> 表示E及其子类, <? super E> 表示E及其父类
增强型for循环可以简化数组和Collection集合的遍历,用迭代器实现.
对于遍历list想删除里面的元素,如果用普通for循环可以用i--的方式来处理如果相邻两个元素都要删除的情况,迭代器可以用本身的remove()方法,增强for循环则不能删除,会出现并发修改异常,还有一种更简单的方式 list.removeIf()里面传入一个lambda表达式返回boolean类型的返回值就可以,会一次性清除集合或列表里面所有lambda返回true的元素.
如果必须要使用强制类型转换,可以先判断一下字节码文件是否相同,如一个对象为 Object obj,强制转换成Person类型,可以这样判断 if (obj.getClass() == Person.class) 或者是 if(obj instanceof Person)
在Set集合里面存自定义对象时,需要重写hashCode()和equals()方法,一般可以用IDE自动生成.
TreeSet可以让集合拥有排序的功能,如果需要存储自定义对象的话,那么对象的类需要实现Comparable接口,重写compareTo()方法,如果compareTo返回0,那么集合中只有一个元素,返回正数集合怎么存怎么取,返回负数则倒叙存储. 这种特性和TreeSet的底层存储是有关系的,底层存储用的是二叉树,如果比根小就存在左边,如果比根大就存在右边,取的时候从小往大取,就出现了这一特性. 取出的时候按照二叉树的中序遍历即可按顺序取出.
Map遍历可以用 map.keySet()获取所有键的Set集合,然后遍历取出值,也可以用map.entrySet() 获取一个里面的对象是Map.Entry类型的Set集合,里面的每一个对象都是实现了Map.Entry接口的对象,可以用getKey() 和 getValue()取出键值对
如果要抛出(throw)编译时异常,那么必须要对它进行处理,要么catch处理,要么throws往上一层抛出,而RuntimeException则可以处理也可以不用处理.
throws表示抛出异常,用在方法声明后面,由该方法的调用者处理,throw表示抛出异常,用在方法体内,由方法体内语句处理.
finally是无论是否有异常,都会执行的,而且如果catch里面有return语句,那么return之前也会执行finally里面的语句(确切的说应该是在return建立返回路径之后,还未完全return之前执行finally,所以如果这时候在finally里面修改返回的值,那么是无效的),如果catch里面退出了jvm虚拟机,则finally不会执行.
如果需要自定义异常,只需要继承Exception然后重写有参无参构造方法就可以了.
新建文件路径用File类 创建文件用 createNewFile()方法,创建目录用mkdir()方法.重命名或者剪切文件用renameTo()方法,删除文件或目录用delete()方法,isDirectory判断是否是目录,isFile判断是否是文件,exists判断是否存在,canRead判断是否可读,canWrite判断是否可写,isHidden判断是否隐藏(Windows文件不能用setReadable设置不可读,但是可以用setWritable设置是否可写),用getAbsolutePath获取绝对路径,getPath获取路径,getName获取名称,length长度,lastModified最后修改时间,list获取目录下所有文件和文件夹.
Java : java基础(2) 集合&正则&异常&File类的更多相关文章
- Java基础-IO流对象之File类
Java基础-IO流对象之File类 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.IO技术概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下 ...
- JAVA中所有与集合有关的实现类都是这六个接口的实现类
JAVA中所有与集合有关的实现类都是这六个接口的实现类. Collection接口:集合中每一个元素为一个对象,这个接口将这些对象组织在一起,形成一维结构. List接口代表按照元素一定的相关顺序来组 ...
- 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类
078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...
- Java基础14-缓冲区字节流;File类
作业解析 阐述BufferedReader和BufferedWriter的工作原理, 是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明? 答: BufferedReader对Rea ...
- JAVA基础复习与总结<七> File类_基本的IO概念_输入输出
File类 1.操作目录 mkdir() 创建目录,必须确保父目录存在,如果不存在,创建失败 mkdirs() list() 文件:目录字符串形式 ,只返回目录和文件的名称 listFiles() ...
- java文件传输之文件编码和File类的使用
---恢复内容开始--- 我们知道,在用户端和服务端之间存在一个数据传输的问题,例如下载个电影.上传个照片.发一条讯息.在这里我们 就说一下文件的传输. 1.文件编码 相信大家小时候玩过积木(没玩过也 ...
- 2017.12.20 Java中的 IO/XML学习总结 File类详细
IO / XML 一.File类 1.定义/概念 Java是面向对象的语言,要想把数据存到文件中,就必须要有一个对象表示这个文件.File类的作用就是代表一个特定的文件或目录,并提供了若干方法对这些文 ...
- day19<异常&File类>
异常(异常的概述和分类) 异常(JVM默认是如何处理异常的) 异常(try...catch的方式处理异常1) 异常(try...catch的方式处理异常2) 异常(编译期异常和运行期异常的区别) 异常 ...
- 读书笔记 之《Thinking in Java》(对象、集合、异常)
一.前言 本来想看完书再整理下自己的笔记的,可是书才看了一半发现笔记有点多,有点乱,就先整理一份吧,顺便复习下前面的知识,之后的再补上. 真的感觉,看书是个好习惯啊,难怪人家说“书籍是人类进步的阶梯” ...
随机推荐
- 【Mood 21】要不要重复造轮子
90%的人应该使用另外10%的人制造的轮子 但是每个人都应该有能力去创造属于自己的轮子 使用不代表伸手拿来,使用也是需要学习的,使用也可以升级为创新,关键在于这个轮子是在谁的手中! 90%的能套用着别 ...
- 屏幕 z
private void FullScreen() //全屏 { SizeMode = 2; FormBorderStyle = FormBo ...
- 点触科技安全验证新模式与逐浪CMS3.9.3新功能预览
是颠覆传统字符验证码的新一代验证码系统.用户通过点击.拖动等有趣方式即可完成验证,防止机器攻击, 应用在注册.登录.数据访问保护.黄牛刷单等场景. 只要在逐浪CMS后台-系统-配置 ,进行简单的配置, ...
- 2.LVS配置过程
请查看我的有道云笔记: http://note.youdao.com/noteshare?id=866edb5736418d29c86d68b5198c5c1c&sub=66F88F0A24D ...
- Git软件的学习
第一部分:我的git地址是https://github.com/ZHU19007/gitLearning 第二部分:我对git的认识 一.Git是一款免费.开源的分布式版本控制工具.而Github是用 ...
- WCF思考随笔一: WCF是干什么的?
对于WCF,之前知道是微软新一代开发框架的重要组成部分,是从之前Socket,COM,COM+,.NET Remoting,WebService等等系统内或系统间通讯解决方案发展而来,同时对各种解决方 ...
- 2018.12.30 Intellij IDEA设置main方法自动补全
Eclipse与 Intellij IDEA设置方法自动补全 1.首先,点击File-->Settings-->Editor-->Live Templates 设置你想输出的模板 右 ...
- 生成二维码、微信自定义分享到朋友圈、ipa不从应用商店安装
生成二维码网址:http://www.liantu.com/ 微信自定义分享到朋友圈:http://www.cnblogs.com/memor-y/p/6728179.html ipa不从应用商店安装 ...
- 原生js 异步请求,responseXML解析
异步更新原理:用XMLHTTP发送请求得到服务器端应答数据,在不重新载入整个页面的情况下,用js操作Dom最终更新页面1.创建XMLHttp请求协议 function createXMLHttpReq ...
- Java8函数之旅 (六) -- 使用lambda实现Java的尾递归
前言 本篇介绍的不是什么新知识,而是对前面讲解的一些知识的综合运用.众所周知,递归是解决复杂问题的一个很有效的方式,也是函数式语言的核心,在一些函数式语言中,是没有迭代与while这种概念的,因为此类 ...