![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
pinkdown
不慌不忙,花期漫长。
展开
-
复制文件
文件复制练习:一读一写 明确: 数据源 数据的目的地 文件复制的步骤: 1、创建一个字节输入流对象,构造方法中绑定要读取的数据源 2、创建一个字节输出流对象,构造方法中绑定要写入的目的地 3、使用字节输入流对象中的方法read读取文件 4、使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中 5、释放资源实现代码(复制内容可以是任意类型的文件)public static void main(String[] args) t原创 2020-07-21 17:02:04 · 186 阅读 · 0 评论 -
一个有趣的方法——sleep方法
public static void sleep(long millis):使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。毫秒数结束之后,线程继续执行模拟秒表://模拟秒表for (int i = 1; i <= 60; i++) { System.out.println(i); //使用Thread类的sleep方法让程序睡眠1秒钟 try { Thread.sleep(1000); } catch (InterruptedException e) { e.p原创 2020-06-22 19:13:30 · 176 阅读 · 0 评论 -
如何获取线程的名称
两个方法:获取线程的名称: 1、使用Thread类中的方法getName() String getName() 返回该线程的名称 2、可以先获取到当前正在执行的线程,使用线程中的方法getName()获取线程的名称 static Thread currentThread() 返回当前正在执行的线程对象的引用实例://重写Thread类中的run方法,设置线程任务 @Overridepublic void run() { //获取线程名称 String name原创 2020-06-22 19:01:17 · 3614 阅读 · 0 评论 -
Throwable中3个处理异常的方法
Throwable类中定义了3个异常处理的方法 String getMessage() 返回此 throwable 的简短描述。 String toString() 返回此 throwable 的详细消息字符串 void printStackTrace() JVM打印异常对象,默认调用此方法,打印的异常消息是最全面的System.out.println(e.getMessage());//文件的后缀名不对System.out.println(e.toString())原创 2020-06-20 10:10:58 · 522 阅读 · 0 评论 -
Objects非空判断——requireNonNull方法
Objects类中的静态方法: public static <T> requireNonNull(T obj):作用:查看指定引用对象是不是null源码:public static <T> requireNonNull(T obj){ if(obj == null) throw new NullPointerException(); return obj;}public static void method(Object obj) { //堆传递过来的参数原创 2020-06-19 19:40:59 · 3971 阅读 · 0 评论 -
throw关键字
throw关键字 作用: 可以使用throw关键字在指定的方法中抛出指定的异常 使用格式: throw new xxxException(“异常产生的原因”) 注意: 1、throw关键字必须写在方法的内部 2、throw关键字后边new的对象必须是Exception或者Exception的子类对象 3、throw关键字抛出指定的异常对象,我们就必须处理这个异常对象 throw关键字后边创建的是RumtimeException或者是RumtimeExcept原创 2020-06-19 19:28:00 · 1363 阅读 · 0 评论 -
异常分类
java.lang.Throwable:Throwable类是Java语言中所有错误或异常的超类。Exceptions:编译期异常,进行编译(写代码)Java程序出现的问题RuntimeException:运行期异常,Java程序运行过程中出现的问题异常就相当于程序得了一个小毛病,把异常处理掉,程序可以继续执行Error:错误错误就相当于得了一个无法治愈的毛病,必须修改源代码,程序才能继续执行。实例如下:1//Exceptions:编译期异常,进行编译(写代码)Java程序出现的问题Sim原创 2020-06-19 18:05:49 · 112 阅读 · 0 评论 -
计算一个字符串中每个字符出现的次数
分析: 1、使用Scanner获取用户输入的字符串 2、创建Map集合,key是字符串中的字符,value是字符的个数 3、遍历字符串,获取每一个字符 4、获取到的字符,去Map集合判断key是否存在 key存在: 通过字符(key),获取value(字符个数) value++ put(key, value)把新的value存储到Map集合中 key不存在: put(key, 1) 5、遍历Map集合,输出结果原创 2020-06-19 11:27:29 · 1001 阅读 · 0 评论 -
HashTable集合
java.util.HashTable<K, V>集合 implements Map<K, V>接口HashTable:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢HashMap:底层也是一个哈下表,是一个线程不安全的集合,是多线程的集合,速度快HashMap集合:可以存储null值,null键HashTable集合:不能存储null值,null键HashTable和Vector集合一样,在JDK1.2版本之后被更先进的集合(HashMap,ArrayLi原创 2020-06-19 11:06:09 · 168 阅读 · 0 评论 -
LinkedHashMap与HashMap之间的区别
简单介绍:java.util.LinkedHashMap<K, V> extends HashMap<K, V>Map 接口的哈希表和链表列表实现,具有可预知的迭代顺序底层原理:哈希表 + 链表(记录元素的顺序)总的来说。二者之间的区别主要有一点,请看如下实例:public class Demo01LinkedHashMap { public static void main(String[] args) { HashMap<String, String>原创 2020-06-19 10:46:48 · 668 阅读 · 0 评论 -
HashMap存储自定义类型键值
HashMap存储自定义类型键值Map集合保证key是唯一的作为key的元素,必须重写hashCode方法和equals方法,以保证key唯一例如:public class Person { private String name; private int age; public Person() { super(); // TODO Auto-generated constructor stub } public Person(String name, int age) {原创 2020-06-19 10:30:23 · 377 阅读 · 0 评论 -
Map集合遍历键值对方式
Map集合遍历的第二种方式:Map集合中的方法:Set<Map.Entry<K, V>> entrySet() 返回此映射中包含的映射关系的Set视图实现步骤: 1、使用Map集合中的方法entrySet(),把Map集合中多个Entry对象取出来,存储到一个Set集合中 2、遍历Set集合,获取每一个Entry对象 3、使用Entry对象中的方法getKey()和getValue()获取键与值public class Demo03EntrySet { p原创 2020-06-19 09:54:47 · 321 阅读 · 0 评论 -
Map集合遍历键找值方式
Map集合的第一种遍历方式:通过键找值的方式Map集合中的方法:Set<K> keySet() 返回此映射包含的键的Set视图。实现步骤: 1、使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中 2、遍历Set集合,获取Map集合中每一个key 3、通过Map集合的方法get(key),通过key找到valuepublic class Demo02Map { public static void main(String[] a原创 2020-06-19 09:10:06 · 431 阅读 · 0 评论 -
Collections集合工具类的方法
java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:01 public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。 public static void shuffle(List<?> list):打乱集合顺序。public class Demo01Collections { public static void main(原创 2020-06-17 10:50:37 · 92 阅读 · 0 评论 -
可变参数
可变参数: 是JDK1.5之后出现的新特性使用前提: 当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数。使用格式: 定义方法时使用 修饰符 返回值类型 方法名(数据类型...变量名){}可变参数的原理:可变参数底层就是一个数组,根据传递参数个数的不同,会创建不同长度的数组,来存储这些参数, 传递的参数个数,可以是0个(不传递),1,2,3,…多个/* 定义计算(0~n)整数和的方法 已知:计算整数的和,数据类型已经确定int,但是参数的个数不确定,不原创 2020-06-17 09:38:31 · 102 阅读 · 0 评论 -
LinkedHashSet集合
java.util.LinkedHashSet集合 extends HashSet集合LinkedHashSet集合特点:底层是一个哈希表(数组 + 链表/红黑树) + 链表;多了一条链表(记录元素的存储顺序),保证元素有序实例:public class Demo04LinkedListHashSet { public static void main(String[] args) { HashSet<String> set = new HashSet<>(); set原创 2020-06-16 20:56:45 · 86 阅读 · 0 评论 -
HashSet存储自定义类型的元素
HashSet存储自定义类型元素Set集合元素唯一: 存储的元素(String, Integer, …Student, Person…),必须重写hashCode和equals方法要求:同名同年龄的人,视为一个人,只能存储一次public class Person { private String name; private int age; public Person() { super(); // TODO Auto-generated constructor stub }原创 2020-06-16 20:45:40 · 290 阅读 · 0 评论 -
Set集合存储元素不重复的原理
Set集合存储不重复的元素前提:存储的元素必须重写hashCode和equals方法public class Demo02HashSetSaveString { /* Set集合在调用add方法的时候,add方法会调用元素的hashCode方法和equals方法,判断元素是否重复 */ public static void main(String[] args) { //创建HashSet集合对象 HashSet<String> set = new Ha原创 2020-06-16 20:27:14 · 394 阅读 · 0 评论 -
哈希值
哈希值:是一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来得到地址,不是数据实际存储的物理地址)在Object类有一个方法,可以获取对象的哈希值int hashCode(); 返回对象的哈希码值hashCode方法的源码: public native int hashCode();native: 代表该方法调用的是本地操作系统的方法public class Person { //也可以重写hashCode方法}public class Demo01Has原创 2020-06-16 19:44:14 · 274 阅读 · 1 评论 -
HashSet集合
java.util.Set接口 extends Collection接口Set接口的特点: 1、不允许存储重复的元素 2、没有索引,没有带索引的方法,也不能使用普通的for循环遍历java.util.HashSet集合 implements Set 接口HashSet特点: 1、不允许存储重复的元素 2、没有索引,没有带索引的方法,也不能使用普通的for循环遍历 3、是一个无序的集合,存储元素和取出元素的顺序有可能不一致 4、底层是一个哈希表结构(查询的速度非常的快原创 2020-06-16 19:23:11 · 163 阅读 · 0 评论 -
LinkedList集合
java.util.LinkedList集合 implements List接口LinkedList集合的特点:1、底层是一个链表结构:查询慢,增删快2、里边包含了大量操作首位元素的方法注意:使用LinkedList集合特有的方法,不能使用多态public void addFirst(E e); 将指定元素插入此列表的开头。 public void addLast(E e); 将指定元素添加到此列表的结尾。 public void push(E e); 将元素推入此列表所表示的堆栈。原创 2020-06-16 17:29:34 · 129 阅读 · 0 评论 -
List集合常用方法
java.util.List接口 extends Collection接口List接口的特点: 1、有序的集合,存储元素和取出的元素的顺序是一致的 2、有索引,包含了一些带索引的方法 3、允许存储重复的元素 List接口中带索引的方法(特有)public void add(int index, E element); 将指定的元素,添加到该集合中的指定位置上。public E get(int index); 返回集合中指定未位置的元素。public E remove(int i原创 2020-06-16 16:53:19 · 211 阅读 · 0 评论 -
泛型通配符
泛型的通配符:?:代表任意的数据类型使用方式:不能创建对象使用,只能作为方法的参数使用public class Demo05Generic { public static void main(String[] args) { ArrayList<Integer> list01 = new ArrayList<>(); list01.add(1); list01.add(2); ArrayList<String> list02 = new Arra原创 2020-06-15 20:07:24 · 100 阅读 · 0 评论 -
定义和使用含有泛型的接口
含有泛型的接口,第一种使用方式:定义接口的实现类,实现接口,指定接口的泛型public class GenericInterfaceImpl1 implements GenericInterface<String>{ @Override public void method(String i) { System.out.println(i); }}含有泛型的接口,第二种使用方式;接口使用什么泛型,实现类就使用什么泛型,类跟着接口走,就相当于定义了一个含有泛型的类,创建对象的时候确原创 2020-06-15 19:24:56 · 396 阅读 · 0 评论 -
定义和使用含有泛型的方法
定义含有泛型的方法:泛型定义在方法的修饰符和返回值类型之间格式:修饰符 <泛型> 返回值类型 方法民 (参数列表(使用泛型)){ 方法体;}含有泛型的方法,在调用方法的时候确定泛型的数据类型传递什么类型的参数,泛型就是什么类型public class GenericMethod { //定义一个含有泛型的方法 public <M> void method01(M m) { System.out.println(m); } //定义一个含有泛型的静态方法原创 2020-06-15 16:59:05 · 376 阅读 · 0 评论 -
定义和使用含有泛型的类
定义一个含有泛型的类,模拟ArrayList集合泛型是一个未知的数据类型,当我们不确定使用什么数据类型的时候,可以使用泛型泛型可以接收任意的数据类型,可以使用Integer,String,Student…创建对象的时候确定泛型的数据类型...原创 2020-06-15 16:40:46 · 269 阅读 · 0 评论 -
使用泛型的好处
创建集合对象,不使用泛型好处: 集合不使用泛型,默认的类型就是Object类型,可以存储任意类型的数据 弊端: 不安全,会引发异常创建集合对象,使用泛型好处: 1、避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型 2、把运行期异常(代码运行之后就会抛出的异常),提升到了编译期(写代码的时候会报错)弊端: 泛型是什么类型,只能存储什么类型的数据不使用泛型:private static void show01() { ArrayList list = new ArrayList(原创 2020-06-15 16:24:12 · 299 阅读 · 0 评论 -
增强for循环
增强for循环:底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写,是JDK1.5之后出现的新特性强for循环:用来遍历集合和数组格式:for(集合/数组的数据类型 变量名; 集合名/数组名){ sout(变量名);}实例://使用增强for循环遍历集合private static void demo01() { int arr[] = {1, 2, 3, 4, 5}; for (int i : arr) { System.out.println(i); }}//使原创 2020-06-15 15:39:44 · 121 阅读 · 0 评论 -
迭代器
java.util.Iterator接口: 迭代器(对集合进行遍历)有两个常用方法boolean hasNext(); 如果仍有元素可以迭代,则返回true; 判断集合中还有没有下一个元素,有则返回true,没有则返回false。E next(); 返回迭代的下一个元素; 取出集合的下一个元素Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊。Collection接口中有一个方法,叫iterator(),这个方法返回原创 2020-06-15 15:29:21 · 85 阅读 · 0 评论 -
Collection集合常用方法
java.util.Collection接口: 所有单列集合的最顶层接口,里边定义了所有单列集合共性的方法, 任意的单列集合都可以使用Collection接口中的方法共性方法:boolean add(E e); 向集合中添加元素boolean remove(E e); 删除集合中的某个元素void clear(); 清空集合中的所有元素boolean contains(E e); 判断集合中是否包含某个元素boolean isEmpty(); 判断集合是否为空int size(); 获取集原创 2020-06-15 14:45:32 · 240 阅读 · 0 评论 -
包装类
装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类) 构造方法: Integer(int value),构造一个新分配的 Integer 对象,它表示指定的 int 值。 Integer(String s),构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。 注意:传递的字符串,必须是基本类型的字符串,否则会抛出异常,"100"正确 "a"抛异常 静态方法: static Integer valueOf(int i),返回一个原创 2020-06-13 16:51:12 · 114 阅读 · 0 评论 -
StringBuilder类
java.lang.StringBuilder类:字符串缓冲区,可以提高字符串的效率构造方法:public StringBuilder():构造一个空的StringBuilder容器public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。public class Demo01StringBuilder { public static void main(String[] args) { StringBuilder bu1原创 2020-06-13 15:52:45 · 78 阅读 · 0 评论 -
System的常用方法
java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有:public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。public static long currentTimeMillis():返回以毫秒为单位的当前时间原创 2020-06-13 11:07:09 · 391 阅读 · 0 评论 -
时间日期相关类总结
public class Test01 { public static void main(String[] args) throws ParseException { //空参构造方法 Date d = new Date(); System.out.println(d);//Sat Jun 13 10:29:25 CST 2020 System.out.println(d.toLocaleString());//13-Jun-2020 10:29:25 Date d2 = new D原创 2020-06-13 10:43:33 · 94 阅读 · 0 评论 -
Calendar类
java.util.Calendar类:日历类Calendar类是一个抽象类,里边提供了很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR), Calendar类无法直接创建对象使用,里边有一个静态方法getInstance(),该方法返回了Calendar类的子类对象static Calendar getInstance() //使用默认时区和环境语言获得一个日历public static void main(String[] args) { Calendar c原创 2020-06-13 10:24:57 · 150 阅读 · 0 评论 -
DateFormat类
java.text.DateFormat:是日期/时间格式化子类的抽象类作用:格式化(也就是日期—>文本)、解析(文本—>日期)成员方法:String format(Date date) 按照指定的模式,把Date日期,格式化为符合模式的字符串Date parse(String source) 把符合模式的字符串,解析为Date日期DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat的子类java.text.SimpleDateFormat ex原创 2020-06-13 09:14:52 · 247 阅读 · 0 评论 -
Date类
java.util.Date:表示日期和时间的类,类Date表示特定的瞬间,精确到毫秒。毫秒值的作用:可以对时间和日期进行计算把日期转换为毫秒:时间原点:1970年1月1日00:00就是计算当前日期到时间原点之间一共经历了多少毫秒注意:中国属于东八区,会把时间增加八个小时1970 年 1 月 1 日 08:00把毫秒转换为日期:1 天 = 24 x 60 x 60 = 86400 秒 = 86400 x 1000 86500000 毫秒public class Demo01Date原创 2020-06-13 08:31:53 · 217 阅读 · 0 评论 -
Objects类的equals方法
源码: // Objects·类的equals方法,对两个对象进行比较,可以防止空指针异常 public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); }public class Demo03Objects { public static void main(String[] args) { Str原创 2020-06-11 16:49:00 · 281 阅读 · 0 评论 -
Object类的equals方法
源码分析:public boolean equals(Object obj) {return (this == obj);}参数Object obj,可以传递任意的对象方法体:==:比较运算符,返回的就是一个布尔值 true false基本数据类型:比较的是值引用数据类型:比较的是两个对象的地址值this:哪个对象调用的方法,方法中的this就是那个对象;p1调用的equals方法,所以this就是p1obj:传递过来的参数p2this == obj ----> p1 ==原创 2020-06-11 16:37:35 · 606 阅读 · 0 评论 -
Object类的toString方法
java.lang.Object类类Object是类层次结构的根(最顶层)类。每个类都使用Object作为超(父)类。所有对象(包括数组)都实现这个类的方法。例如:创建一个Person类public class Person { private String name; private int age; public Person(String name, int age) { super(); this.name = name; this.age = age; } pu原创 2020-06-11 10:04:40 · 309 阅读 · 0 评论