
JavaSE基础
我不是大王强
这个作者很懒,什么都没留下…
展开
-
java反射中Method类invoke方法的用法
Method getMethod(String name, Class<?>... parameterTypes) --返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。 方法后面接收的就是Class类的对象,而如:String.class、int.class这些字节码才是Class类的对象 ...转载 2018-09-02 16:31:15 · 6127 阅读 · 0 评论 -
OutputStream
IO流的分类\n" + " 如果从类型上分,可以分成字节流和字符流\n" + " \n" + " 字节流\n" + " 字节输出流: OutputStream\n" + " 字节输入流: InputStream\n" + "...原创 2018-07-19 08:24:22 · 24312 阅读 · 0 评论 -
泛型类,泛型方法,泛型接口
/ 泛型, 就是一种不确定的数据类型。//// 如果在类后面加上<T>,这个类就变成了泛型类。这个T可以使用任意的字母代替。//<T> 表示定义了一种不确定的数据类型,这种不确定的数据类型必须在使用这个类(比如创建对象)的时候才能确定下来。//// 如果希望缩小泛型的范围,延后泛型的确定时间,让泛型在调用方法的时候...原创 2018-07-06 12:14:53 · 598 阅读 · 0 评论 -
什么是泛型
// 泛型:就是一种不确定的数据类型。// 比如:ArrayList<E> E就是泛型。 这种不确定的数据类型需要在使用这个类的时候才能够确定出来。// 泛型可以省略,如果省略,默认泛型是Object类型。// 泛型的好处:// 1. 省略了强转的代码。// 2. 可以把运行时的问题提前到编译时期。public class Demo01Generic { ...原创 2018-07-06 12:03:19 · 53185 阅读 · 5 评论 -
增强for遍历
集合package demo03_foreach;/* 使用增强for循环遍历集合 格式: for(数据类型 变量名 : 容器) { //... } 增强for遍历集合,本质是迭代器 增强for的优点和缺点 优点: 语法更加的简洁。 省略了索引的操作。 缺点: 在循环中拿不到索引,所以如...原创 2018-07-06 12:00:52 · 1404 阅读 · 0 评论 -
对没有索引的集合进行遍历
如何对集合进行遍历? 之前根据get(索引)的方式遍历集合,并不适用于所有的集合,因为有些集合没有索引。 有只用通用的遍历集合的方式,叫做迭代器遍历。 迭代器就是一个遍历集合的工具,内部有一个光标,这个光标最开始指向集合的最开头。 如何获取集合的迭代器? 使用Collection中的方法获取就可以了 Iterator<E>...原创 2018-07-06 11:31:38 · 1094 阅读 · 0 评论 -
Collection
public class Demo01CollectionMethod { /* Collection 是所有单列 集合的根接口。 里面有一些方法: public boolean add(E e) : 把给定的对象添加到当前集合中 。 public void clear() :清空集合中所有的元素。 public...原创 2018-07-06 11:29:05 · 268 阅读 · 0 评论 -
基本类型的包装类,基本类型与包装类的相互转换
* 基本类型和字符串的相互转换 基本类型转字符串: 最常用: 直接把这个数字加上空字符串 1. 12 + "" 其他方法:不常用 2. 使用String的静态方法valueOf进行转换 3. 调用其包装类的toString方法。 字符串转基本类型: 如果转int类型...原创 2018-07-06 11:00:47 · 1553 阅读 · 0 评论 -
StringBuilder和String区别,StringBuilder的构造方法,使用方法
* StringBuilder是一个可变的字符序列(可以改变的字符串) StringBuilder内部是使用一个数组去存储数据的 在JDK9之前:是char[] 在JDK9及之后: 是byte[] StringBuilder和String的区别 String是不可变的。 StringBuilder是可以改变的。 如果要进行频繁的...原创 2018-07-06 10:57:18 · 2217 阅读 · 0 评论 -
Java中的System类下的System.currentTimeMillis()显示当前时间方法 和arraycopy方法
long mills1=System.currentTimeMillis();//显示当前系统时间毫秒,从1970 1 月1 日System中有一个方法,可以对数组进行复制。 static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length): 将一个数组复制到另一个数组中 ...原创 2018-07-06 10:48:52 · 757 阅读 · 0 评论 -
Java中Calendar类的使用
/* 在Calendar中有一个方法,可以获取指定字段的值。 int get(int field):可以获取日历对象中指定字段的值。 get(年): 获取年的值。 get(月): 获取月的值 get(日): 获取日的值 参数是一个int数字,要使用int数字表示每个字段。 1表示的...原创 2018-07-06 10:39:16 · 1321 阅读 · 0 评论 -
InputStream
/* 在java中InputStream是字节输入流,用来将文件中的数据读取到java程序中。 InputStream是所有字节输入流的顶层父类,是一个抽象类。如果要用,需要使用子类。 最常用的子类:FileInputStream。 构造方法: FileInputStream(File file): 传递一个F...原创 2018-07-19 08:26:42 · 64243 阅读 · 3 评论 -
字符流 Reader
/ 在java中Reader是字符输入流,可以将文件中的数据读取到java程序中。// Reader是字符输入流的顶层父类,是一个抽象类。 如果要用,需要使用子类。// 最常用的子类叫做FileReader。// 字符输入流可以以字符为单位进行读取,这样就可以读取中文了。//// FileReader的构造方法:...原创 2018-07-19 08:29:31 · 711 阅读 · 0 评论 -
泛型的限定(对泛型通配符的范围进行限制)
/ 泛型的限定。对泛型通配符的范围进行限制。////<? extends A>:表示泛型的类型只能是A类或者A类的子类。 上限,最高到A类。//<? super A>: 表示泛型的类型只能是A类或者A类的父类。 下限,最低到A类。//// 泛型的使用场景:// 一般用于后期的代码重构,代码的优化。// */pu...原创 2018-07-08 08:23:14 · 3442 阅读 · 0 评论 -
Java中的lambada表达式综合应用、匿名内部类完成多线程
匿名内部类可以省略单独创建一个.java文件的步骤。// 但是匿名内部类也有他的弊端,弊端就是它语法太麻烦了.//// 匿名内部类中最关键的东西是方法(参数,方法体,返回值)//// 每个方法都有前中后三个东西。// 1. 前: 参数// 2. 中: 方法体// 3. 后: 返回值//// ...原创 2018-07-13 23:48:52 · 1141 阅读 · 0 评论 -
Java 线程池的理解
线程池是一个容器,这个容器中预先创建了很多个线程。如果要执行任务,直接使用这个容器中的线程去执行就可以了。 并且这个线程池中的线程,可以复用。执行完一个任务后,可以继续执行其他任务。 public class Demo01ThreadPool { public static void main(String[] args) { //...原创 2018-07-13 23:37:51 · 234 阅读 · 0 评论 -
线程通信概念的理解
线程等待唤醒机制。用到的API, 下面的方法都是Object中的。 void wait(): 让当前的线程等待。 void notify(): 随机唤醒一个线程 void notifyAll(): 唤醒所有的线程。上面这些方法虽然是Object中的方法,但是不能通过对象直接去调用这些方法一定要放在同步代码块中,并且使用锁对象(对象监视器)去调用。当一个线...原创 2018-07-13 23:32:12 · 1358 阅读 · 0 评论 -
NIO工具类Files
/* BIO: 同步阻塞IO NIO: 同步非阻塞IO。 NIO是基于通道,缓冲区,和选择器.... AIO: 异步非阻塞IO。*/ jdk7之后,提供了一个NIO的工具类,叫做Files 相关API: Path: 表示一个路径。 Paths: 路径的工具类,可以获取一个Path对象 Files: 操作I...原创 2018-07-19 15:18:54 · 1225 阅读 · 0 评论 -
序列化流
/* ObjectOutputStream 叫做序列化流。 可以将java程序中的对象写入到文件中。 构造方法: ObjectOutputStream(OutputStream out): 传递一个字节输出流对象。 写对象方法: void writeObject(Object obj): 向文件中写入对象。 使用步骤: ...原创 2018-07-19 15:16:34 · 513 阅读 · 0 评论 -
转换流
/* 使用FileReader读取文件中的内容 FileReader读取的时候,会使用idea平台默认编码方式去读取,而平台默认的编码是UTF-8 但是我们要读取的文件采用的是gbk编码,此时编码不一致,就产生了乱码。 我们可以想办法指定编码进行读写, 指定编码就可以使用转换流 */public class ...原创 2018-07-19 15:11:10 · 181 阅读 · 0 评论 -
Buffered缓冲流
缓冲流 字节缓冲流: 字节输入缓冲流:BufferedInputStream 字节输出缓冲流:BufferedOutputStream 字符缓冲流: 字符输入缓冲流:BufferedReader 字符输出缓冲流:BufferedWriter 缓冲流特点是快,因为内部有一个缓冲区,可以提高效率。 ...原创 2018-07-19 15:05:34 · 546 阅读 · 0 评论 -
Properties集合、
/* Properties 其实就是一个双列集合 特点: 1. Properties是Map接口的实现类。 拥有Map接口的中所有的方法。 2. Properties没有泛型,键和值都是String 3. 这个集合支持对流的操作,可以从流冲获取键值对。 构造方法: Properties():使用空参数...原创 2018-07-19 14:58:49 · 555 阅读 · 0 评论 -
IOl流中的异常处理
/* 在JDK7之前的IO流中的异常处理 一定要保证释放资源的代码无论如何都会执行到。 我们可以把这部分代码放入到finally代码块中 */public class Demo01Exception { public static void main(String[] args) { FileWriter fw = null; ...原创 2018-07-19 14:56:33 · 325 阅读 · 0 评论 -
Write 字符输出流
/* 在java中Write表示字符输出流, 可以将java程序中的数据写到文件中。 Writer是所有字符输出流的顶层父类, 并且这个类是一个抽象类。一般使用子类。 最常用的子类是FileWriter。 FileWriter的构造方法: FileWriter(File file): 传递一个...原创 2018-07-19 14:53:23 · 3217 阅读 · 0 评论 -
常见的函数式接口
/* 在jdk8之后,多了java.util.function 。这个包下面放了很多的常用的函数式接口。 其中有一个接口叫做Supplier<T>(生产者), 里面有一个方法,可以获取一个对象。 T get(): 可以获取一个对象。 */public class Demo01Supplier { public static void ma...原创 2018-07-23 19:58:54 · 1858 阅读 · 0 评论 -
Objict 中的 toString()
/* 所有的类都直接或者间接的继承自Object。如果在一个类上面没有使用extends关键字,那么这个类是继承自Object的。 在Object中,有一个方法,叫做toString,可以把一个对象转成对应的字符串形式。 String toString() 返回对象的字符串表示形式。 当通过一个对象调用toString方法后,会先看一下自己有...原创 2018-07-05 08:16:49 · 201 阅读 · 0 评论 -
Date类及使用
在java中,有一个类表示时间,这个类叫做Date。 java.util.Date英语单词的意思是日期,但是在java中表示精确的时间瞬间(精确到了毫秒)。 构造方法: Date():空参数构造,会以当前操作系统的时间构造一个Date对象。 Date(long date): 传递一个毫秒值。 这个毫秒值指的是从1970年1月1日 0点0分0秒 开始过了多...原创 2018-07-05 08:08:46 · 488 阅读 · 0 评论 -
多线程01
/* 每个程序里面至少要有一个线程。 我们之前运行的java程序也是有线程的。 当运行main方法的时候jvm会启动, 并且JVM会创建一个新线程这个线程叫做main线程, 由这个main线程去执行mian方法中的代码。 单线程程序同时只能执行一个任务,如果有多个任务,只能执行完其中一个之后再去执行另外一个任务。 如果想要同时执行多个任务,可以使用多...原创 2018-07-10 18:18:15 · 107 阅读 · 0 评论 -
异常的体系结构,产生原因,抛异常 ,异常的处理。全面的总结
在java中,程序运行过程中产生的问题叫做异常,在java中所有程序运行产生的问题都可以用一个类来表示,这个类叫做它Throwable,它有两个子类Error:表示错误,程序中出现了不可挽回问题Exception:表示异常,程序中出现的可以挽救补回的问题异常产生原因流程/* throw关键字,可以手动的抛出一个异常对象。 格式: throw new...原创 2018-07-10 18:01:34 · 299 阅读 · 0 评论 -
Java集合全面总结
Collection : 单列集合的根接口List : 有序(存和取的顺序一致),有索引,可以存储重复ArrayList : 数组实现,查找快,但是增删慢,线程不安全LinkedList : 链表实现,增删快,但是查找慢,线程不安全Vector(向量) : 数组实现,线程安全Set : 无序(存和取的顺序不一致),无索引,不可以存储重复HashSet : 哈希算法,TreeSet : 二叉树算法...原创 2018-07-08 19:50:22 · 680 阅读 · 0 评论 -
Map双列集合的用法,遍历方法
Map集合的常用方法。Map集合是一个双列集合,里面的每个元素都是一个键值对。Map<K,V> 有两个泛型, K 表示Map集合中键的类型。 V 表示Map集合中值的数据类型。常用方法: (重要)V put(K key, V value): 向Map集合中添加键值对。 (重要)V get(Object key): 根据key获取到value的值。 ...原创 2018-07-08 19:34:04 · 1044 阅读 · 0 评论 -
利用Arraylist和Map完成的斗地主准备牌,发牌,洗牌,看牌操作
import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;/*大体思路1扑克牌一共有54张,首先创建一个集合来存储扑克牌编号,再创建一个Map集合来存储扑克牌编号与扑克牌牌面的映射关系,牌面有花色4个,数字13个,利用for循环,将52张牌的编号和映射关系分别添加进Arraylist集合和map...原创 2018-07-08 18:26:23 · 629 阅读 · 0 评论 -
可变参数
/* 可变参数: 方法参数的数量可以变化 格式: 修饰符 返回值类型 方法名(参数类型... 参数名) { } 1. 可变参数的方法在调用的时候,可以传递任意个数字。这些数据的类型要一致。 2. 可变参数本质是数组, 按照数组的方式去使用这个可变参数就可以了 3. 因为可变参数本质就是数组,所以调用...原创 2018-07-08 15:02:15 · 165 阅读 · 0 评论 -
Collections中的sort方法2,比较器排序
/* Collections中还有一个sort方法,可以根据比较器排序 static void sort(List list, Comparator c): 参数list:是要排序的集合 参数c: 是比较器, 好比一个法官。如果使用比较器排序,那么这个集合的泛型是不需要实现Comparable接口的。总结: 一个类实现Compa...原创 2018-07-08 15:00:01 · 1489 阅读 · 0 评论 -
Collections中的sort方法,对集合内容进行排序
/* Collections 中有一个方法叫做sort可以对集合中的内容进行排序 static void sort(List list): 对集合中的内容进行排序 要使用这个sort方法进行排序的集合,里面的泛型必须实现Comparable接口 实现这个接口的对象才具备排序的功能, 这种排序自然排序。 口诀: 升序就是我减他,降续就是他减我...原创 2018-07-08 14:33:32 · 6261 阅读 · 0 评论 -
Object中的equals类
/* Objects中的equals方法。 static boolean equals(Object a, Object b): 比较a和b是否相同。 如果通过Objects调用equals方法,内部会通过第一个对象调用equals和第二个对象进行比较 如果我们想要比较对象的内容,还是要在子类中重写equals//ALT+INSERT快捷键,在子类teacher中插入重写...原创 2018-07-05 08:22:30 · 240 阅读 · 0 评论 -
String类型的date( yyyy年MM月dd日) 与Date类型相互转换
如果想把Date对象转成我们自己喜欢的字符串,可以使用DateFormat对Date对象进行格式化。 DateFormat是一个抽象类, 所以要使用DateFormat的子类 SimpleDateFormat SimpleDateFormat的构造方法: SimpleDateFormat(String pattern): 使用指定的模式创建一个SimpleDateFor...原创 2018-07-05 08:33:43 · 27424 阅读 · 0 评论 -
多线程中的方法、两种实现方式、匿名内部类创建多线程,线程安全问题的解决、
多线程两种实现方式: 方式一: 继承Thread类的方式 方式二: 实现Runnable接口的方式。方式一: 步骤: // 1. 定义一个类,然后继承Thread // 2. 重写里面的run方法,在run方法中定义线程要执行的任务 // 3. 在测试类中创建子类的对象。 // 4. 调用start方法,开启线程。public class MyThrea...原创 2018-07-11 19:43:12 · 762 阅读 · 0 评论 -
方法引用的 4 + 2 种方式
* 方法引用的 4 + 2 种方式 对于类来说,有4种方式 1. 对象引用成员方法 2. 类名引用静态方法 3. super引用父类方法 4. this引用本类方法 对于构造器来说,有2种方法。 1. 类的构造器引用 2. 数组的构造器引用。1 ...原创 2018-07-23 19:55:39 · 518 阅读 · 0 评论 -
方法的引用
/* Lambda表达式做的事情是,拿到参数之后【直接】对参数进行了打印。 如果Lambda表达式做的事情,和某个方法是一样的。 如果再重复写一遍方法的参数就有些多余了,因为在里面做的事情是拿到参数之后直接对参数进行打印。 如果Lambda表达式做的事情和方法一样,可以使用Lambda表达式的一个孪生兄弟去表示,叫做方法引用。...原创 2018-07-23 16:49:42 · 219 阅读 · 0 评论