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类的更多相关文章

  1. Java基础-IO流对象之File类

    Java基础-IO流对象之File类 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.IO技术概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下 ...

  2. JAVA中所有与集合有关的实现类都是这六个接口的实现类

    JAVA中所有与集合有关的实现类都是这六个接口的实现类. Collection接口:集合中每一个元素为一个对象,这个接口将这些对象组织在一起,形成一维结构. List接口代表按照元素一定的相关顺序来组 ...

  3. 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类

    078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...

  4. Java基础14-缓冲区字节流;File类

    作业解析 阐述BufferedReader和BufferedWriter的工作原理, 是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明? 答: BufferedReader对Rea ...

  5. JAVA基础复习与总结<七> File类_基本的IO概念_输入输出

    File类 1.操作目录  mkdir() 创建目录,必须确保父目录存在,如果不存在,创建失败 mkdirs() list() 文件:目录字符串形式 ,只返回目录和文件的名称 listFiles()  ...

  6. java文件传输之文件编码和File类的使用

    ---恢复内容开始--- 我们知道,在用户端和服务端之间存在一个数据传输的问题,例如下载个电影.上传个照片.发一条讯息.在这里我们 就说一下文件的传输. 1.文件编码 相信大家小时候玩过积木(没玩过也 ...

  7. 2017.12.20 Java中的 IO/XML学习总结 File类详细

    IO / XML 一.File类 1.定义/概念 Java是面向对象的语言,要想把数据存到文件中,就必须要有一个对象表示这个文件.File类的作用就是代表一个特定的文件或目录,并提供了若干方法对这些文 ...

  8. day19<异常&File类>

    异常(异常的概述和分类) 异常(JVM默认是如何处理异常的) 异常(try...catch的方式处理异常1) 异常(try...catch的方式处理异常2) 异常(编译期异常和运行期异常的区别) 异常 ...

  9. 读书笔记 之《Thinking in Java》(对象、集合、异常)

    一.前言 本来想看完书再整理下自己的笔记的,可是书才看了一半发现笔记有点多,有点乱,就先整理一份吧,顺便复习下前面的知识,之后的再补上. 真的感觉,看书是个好习惯啊,难怪人家说“书籍是人类进步的阶梯” ...

随机推荐

  1. C++之不带指针类的设计——Boolean

    经典的类设计分类 带指针类 不带指针类 Header文件的布局 #ifndef __COMPLEX__ #define __COMPLEX__ #include <iostream.h> ...

  2. select * from pet where species regexp '^c';

    select * from pet where species regexp '^c';

  3. React学习笔记 - Hello World

    React Learn Note 1 React学习笔记(一) 标签(空格分隔): React JavaScript 前.Hello World 1. 创建单页面应用 使用Create React A ...

  4. codefind.pl

    #!/usr/bin/perl # # Find a pattern in a the book's source collection (DOS/Windows version) # # (C) C ...

  5. ACM-ICPC(9/25)

    DP专题 记忆化搜索与递推(方式) DAG模型 记忆化搜索: 用d[状态] 的特殊值表示是否计算过. 用vis[状态]是否访问过 DAG模型: 矩形嵌套:d(i) 以 i 结点开始的最长长度,​ 存在 ...

  6. Codeforces 336C 0-1背包

    题意:每个水果有两个值,一个美味度 a,一个卡路里 b,从中挑选一些,要求 sum(aj) / sum(bj) = k,使得 sum(a) 最大. 分析:没有那个条件就是一个01背包,可以转换,对公式 ...

  7. Codeforces Round #422 (Div. 2)

    Codeforces Round #422 (Div. 2) Table of Contents Codeforces Round #422 (Div. 2)Problem A. I'm bored ...

  8. css盒模型-BFC

    BFC(边距重叠解决方案) 1.BFC的基本概念:块级格式化上下文 2.BFC的原理(说白了就是BFC的渲染规则): 这个规则是什么呢?我觉得大家能说出4点就够了 第一个就是BFC可以解决这个元素的垂 ...

  9. 使用TimeSpan对象获取时间间隔

    实现效果: 关键知识: TimeSpan对象表是时间间隔或持续时间,两个DateTime对象相减,则会得到一个TimeSpan对象 使用其days ,hours,minutes等属性 实现代码: pr ...

  10. Fiddler拦截并动态修改网页内容简易教程

    Fiddler默认可以拦截全局http请求,再加上它具备的脚本功能,可以很简单的达到动态修改网页内容的目的. 1.启动Fiddler 2.打开Rules->Customize Rules..., ...