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》(对象、集合、异常)
一.前言 本来想看完书再整理下自己的笔记的,可是书才看了一半发现笔记有点多,有点乱,就先整理一份吧,顺便复习下前面的知识,之后的再补上. 真的感觉,看书是个好习惯啊,难怪人家说“书籍是人类进步的阶梯” ...
随机推荐
- Arcobject获得栅格影像的边界
一般的各种遥感影像都是采用某种地理或投影坐标的栅格影像,对于从事影像相关工作的人来说,得到现有影像的覆盖范围是确定研究内容,购买遥感影像的基础.怎么得到这个覆盖范围呢?当然我们可以在ArcGIS或ER ...
- Cass和ArcGIS交换
南方cass图形为CAD,把CAD图形转换成arcgis没有任何问题,到属性有问题,cass存放数据是放在CAD扩展XDATA中,和 arcgis导入导出CAD标准扩展属性不一样,只能二次开发使用,c ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(12)、自定义方式加载Bundle格式缓存数据
随着ArcGIS 10.3的正式发布,Esri推出了新的紧凑型缓存格式以增强用户的访问体验.新的缓存格式下,Esri将缓存的索引信息.bundlx包含在了缓存的切片文件.bundle中.具体如下图所示 ...
- mybooklist 日志5.12
这是一个很悲伤的日子. 今天,我不发朋友圈了.可手头的工作还是要做的,虽然说这是工作,也不能完全算. 在上班的时间做的事情,可以称得上工作,可这不是老板交给我做的事情.国有企业领导很两难,老板你是要辞 ...
- Oracle里删除重复记录,保留一项
我们在使用数据库的时候,有时数据会有所重复,当我们只需要一项数据时,不需要显示重复的记录时 如下就有SQL代码: --查找表中多余的重复记录,重复记录是根据单个字段来判断 select * from ...
- C# 任务并行库使用小计 z
1.简单创建使用 using System; using System.Diagnostics; using System.Threading; using System.Threading.Task ...
- React学习笔记 - JSX简介
React Learn Note 2 React学习笔记(二) 标签(空格分隔): React JavaScript 一.JSX简介 像const element = <h1>Hello ...
- leetcode 322零钱兑换
You are given coins of different denominations and a total amount of money amount. Write a function ...
- fast、faster中ap值的计算
def voc_ap(rec, prec, use_07_metric=False): """ ap = voc_ap(rec, prec, [use_07_metric ...
- Python实现读取json文件到excel表
一.需求 1.'score.json' 文件内容: { "1":["小花",99,100,98.5], "2":["小王" ...