
JavaSE
文章平均质量分 68
IQ等于猪
照虎画猫
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java (Hash)Set和(Hash)Map的关系
这篇未完,待续写总述:放一张Map,Set关系图,TreeSet使用TreeMap,HashSet使用HashMap(主要)和LinkedHashMap,LinkedHashSet继承自HashSet,调用了(HashSet中调用的LinkedHashMap).HashSet底层是HashMap实现的,因为Set元素不能重复和Map的key也不能重复,所以Set是使用了Map的一部...原创 2018-11-20 16:37:44 · 257 阅读 · 0 评论 -
java io流字符乱码问题
一个中文占两个字节,在字符串中(一个中文占3个字节(utf-8)或者2个字节(GBK)),所以用字节流读入 写出中文时会出现乱码的情况。解决办法呢,就是将读入的字节流转换成字符串形式,这种方式不一定能够能解决成功 先演示读出问题:test/test0.txt的内容如下:hello世界 世界读取test0.txt文件package IoCharctorTest01;i...原创 2018-11-22 14:34:09 · 1988 阅读 · 0 评论 -
java Map接口
Map中的元素是以键-值(key-value)的方式存在的,通过键key可以获取到值value,键key是不可以重复的Map接口的继承关系图: 常用Map类的特点,HashMap采用哈希表的存储结构,所以里面的数据是无序的。(实现key不重复的方式就是重写 Hashcode和equals方法)非线程安全,key和value都可以是null,只支持Iterator(迭代器)遍...原创 2018-11-19 17:07:37 · 119 阅读 · 0 评论 -
java 字符流 Reader和Writer
字节流可以处理MP3,图片,视频,等用二进制存储的数据类型,虽然可以操作强行字符,但会出现各种难以控制的问题但是不能直接操作Unicode字符,因为一个字符有两个字节,字节流一次只能操作一个字节。字符流处理的单元为2个字节的Unicode字符,字符流用来操作字符、字符数组或字符串字符流的介绍输入字符流Reader继承图: 抽象类Reader的常用方法:abstract ...原创 2018-11-22 17:31:06 · 421 阅读 · 0 评论 -
java 字符缓冲流BufferedReader和BufferedWriter
本节概要:目录BufferedReaderBufferedWriter字符缓冲流复制文本文件:BufferedReader继承自Reader构造方法: private static int defaultCharBufferSize = 8192;//可以手动设置缓存去char数组的大小 public BufferedReader(Reader...原创 2018-11-22 19:16:47 · 802 阅读 · 0 评论 -
java 转换流InputStreamReader和OutputStreamWriter
转换流InputStreamReader和OutputStreamWriter,看结尾的字母,知道它们是属于字符流的先说不管字符还是字节,保存在电脑上或者传输在网络中的只能是字节,为什么要有字符呢,我理解的是每个国家语言都不同,那么所用的字符也是不同的,每种字符都可以通过某种规则,即编码和解码都遵循同样的规则才能将文字信息正常显示,如果编码和解码使用不同的规则,就会出现乱码的情.,就好像以前的...原创 2018-11-22 21:28:43 · 815 阅读 · 0 评论 -
java LinkedList
LinkedList是一个实现了List接口和Deque接口的双端链表,底层使用链表结构,链表存储的对象内存是不连续的,所以LinkedList的特点是增加和删除快,查询和修改慢.LinkedList的继承关系图LinkedList特有的常用方法:void addFirst(E e) 在Linkedlist最前面的位置添加元素void addLast(E e) 在Linkedl...原创 2018-11-17 16:54:41 · 116 阅读 · 0 评论 -
java 泛型
泛型T---Type E---Element泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 泛型主要使用在集合中,使用泛型时,在实际使用之前类型就已经确定了,好处是可以统一集合中的数据类型,提高安全性,不需要强制类型转换。在编译阶段检查.泛型在定义的时候并不知道泛型的数据类型,只有使用的...翻译 2018-11-17 21:49:16 · 123 阅读 · 0 评论 -
java 增强for循环 和可变参数
JDK5中定义了一种新的语法----增强for循环,以简化遍历操作。增强for循环只能用在数组或实现Iterable接口的集合上.for(元素的数据类型 变量 : 数组或者集合) { 对变量进行操作 //该变量就是集合或者数组中的元素 }三种遍历方式的比较普通for循环,对索引进行自增,通过索引获取元素值,可以删...原创 2018-11-17 22:48:06 · 441 阅读 · 0 评论 -
java 可变参数,集合与数组的互转,静态导入
可变参数可变参数是如果类型确定,参数个数不确定,需要用可变参数来定义,参数的具体个数在方法调用时才能确定java把可变参数当做数组处理可变参数的定义是jdk1.5加入的,比如main方法 public static void main(String [] args)特点:如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个。 ...(三个点)位于变量类型和变量名之...原创 2018-11-18 14:38:18 · 18466 阅读 · 0 评论 -
java 序列化简介
序列化: 把java对象转换为字节序列的过程反序列化:把字节序列恢复成对象的过程.为什么需要序列化?多台机器通信时,需要以字节序列进行传输,需要将java对象序列化当对象实例过多,要把对象保存在硬盘中,需要的时候再读进内存,也需要序列化怎样序列化和反序列化? 比如序列化到硬盘文件,再从硬盘文件中读取出来 首先需要需要实现Serializ...转载 2018-11-24 01:07:22 · 149 阅读 · 0 评论 -
java File按层级目录打印文件夹内容
将指定目录下的所有文件和文件夹的名字按层级关系打印,也可以从控制台获取需要打印的目录按照如下样式:world 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt hello.txt javaSpring.txt javaSpring.txt.bak 新建文件夹 ...原创 2018-11-23 23:35:20 · 1048 阅读 · 0 评论 -
java IO File类和FilenameFilter文件名称过滤器
File类Java文件类以抽象的方式代表文件名和目录路径名,定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建、删除、重命名文件等。File对象代表磁盘中实际存在的文件和目录.构造方法:File(String pathname) 通过将给定路径名字字符串转换为抽象路径来创建一个File对象。File(String parent, String chil...原创 2018-11-23 21:43:46 · 1965 阅读 · 0 评论 -
java Collections工具类
数组中的有Arrays工具类,可以对数组操作,见我的博客 https://mp.youkuaiyun.com/postedit/83933998集合框架中也有跟工具类Collections,下面主要介绍其中的常用方法基础方法: max(Collection<? extends T> coll) 返回集合中最大的元素,此元素类必须实现Comparable接口,并重写compareTo方...原创 2018-11-20 18:14:07 · 289 阅读 · 0 评论 -
java 集合框架
目录集合框架Collection接口List接口Set接口Map接口Collections工具类集合框架Collection接口Collection集合接口简介和迭代器的介绍:https://blog.youkuaiyun.com/sinat_41132860/article/details/84069142List接口List接口及ArrayList类的介绍:ht...原创 2018-11-20 18:30:17 · 111 阅读 · 0 评论 -
java 用集合实现扑克牌的洗牌和发牌
1随机发扑克,但没对玩家的扑克整理,代码如下://实现随机发牌,按斗地主的模式,实现步骤,创建List集合对象将54张扑克放入集合中,用集合工具类的shuffle方法,将List打乱//将List集合的元素放入四份,三个玩家,一份底牌import java.util.ArrayList;import java.util.Collections;import java.util.Lis...转载 2018-11-20 21:14:51 · 3327 阅读 · 1 评论 -
java 购物车简单练习
商品,购物车,测试类三个类,商品有价格,id,名称,三个属性,购物车有总价和车两个属性,有添加,删除,清空,打印四个方法商品类://定义商品,三个属性,名称,价格(BigDecimal类型),id编号,重写toString,hashCode,equals方法,构造方法import java.math.BigDecimal;public class Product { priva...转载 2018-11-21 11:29:14 · 1700 阅读 · 0 评论 -
java Vector类
List接口有三个实现类,ArrayList、Vector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。随着jdk的不...原创 2018-11-16 20:04:11 · 372 阅读 · 0 评论 -
java List三个子类的数据结构和特点
数组:数组特点:查询和修改快,增加和删除慢ArrayList和Vector的底层是使用数组的数据结构在ArrayList中初始化的长度是10,如果长度不够用了,每次会增加之前长度的50%,然后将旧的集合中的数据拷贝到新的集合中。Vector每次扩容的长度是之前的一倍数组的结构: 为什么查询和修改快?查询和修改时直接通过数组的下标就能快速定位到相应的位置。为什么增加和删除慢...转载 2018-11-16 20:44:48 · 270 阅读 · 0 评论 -
java IO概述
java IO(输入输出),输入和输出相对电脑内存来说,从别的地方传入到内存中叫做输入,从内存中传出到别的地方叫做输出java.io包 包括了几乎所有的操作输入输出需要的类,但是并没有涵盖所有输入输出类型这个包主要包含5个类File、OutputStream、InputStream、Writer、Reader和一个接口SerializableIO流的分类:按流向分类:输入流(I...原创 2018-11-21 17:35:04 · 115 阅读 · 0 评论 -
java InputStream和OutputStream
•InputStream 和 Reader 是所有输入流的基类。本节内容:目录InputStreamOutputStream分割符的问题:jdk7的改进写法InputStreamInputStream输入流,以它的子类FileInputStream来讲解绝对路径和相对路径,绝对路径是值在硬盘上存储的真正路径相对路径 是指相对于某个文件的路径,ja...原创 2018-11-21 20:06:09 · 1382 阅读 · 0 评论 -
java IO流进行文件的复制和加密解密
本节主要介绍下面内容文件的复制目录用FileInputStream复制用BufferedInputStream复制文件的加密:用FileInputStream复制文件的拷贝需要将文件读入到内存中,再将文件从内存中写入到硬盘中,需要用文件输入流FileInputStream读取文件,每次读取一个byte数组的内容,用文件输出流FileOutputStream将...原创 2018-11-22 13:15:59 · 2156 阅读 · 0 评论 -
java 多线程synchronized锁同步方法,同步代码块
线程安全问题同步和异步我们知道多个线程共享堆内存,当两个或者多个线程调用同一个对象的方法操作对象成员时,因为cpu轮流执行线程,线程A刚开始操作对象方法,修改了数据,轮到线程B运行,线程B也操作对象方法,修改数据,可能又轮到线程A操作对象方法,接着上次线程A的剩余部分执行,那这个时候的数据是被线程B修改后的数据,这样会造成线程操作数据出错,这叫做异步处理,因为谁也不知道现在的数据是被线程A...原创 2018-11-25 18:40:48 · 5385 阅读 · 0 评论 -
java 多线程 死锁和valitile关键字
死锁两个或者多个线程都在等待对方释放锁,在写多线程代码时要注意避免这种死锁的发生发生死锁后可以在dos命令行输入jps命令查看java进程状况可以试用jstack -l 进程号 命令查看当前类的问题关闭jvm停止死锁 以上节三个公司卖电影票为例,指出写问题,这个不是死锁啊,先看代码:package collection;import java.util.Arr...翻译 2018-11-25 20:37:23 · 2412 阅读 · 0 评论 -
java 多线程简介
进程和线程程序(program)是对数据描述与操作的代码的集合,是应用程序执行的脚本。进程(process)是程序的一次执行过程,是系统运行程序的基本单位。程序是静态的,进程是动态的。系统运行一个程序即是一个进程从创建、运行到消亡的过程。可以认为每个程序就是一个进程,但有些应用程序会有多个进程,即一个应用程序至少会启动一个进程.,多进程的实现基础是CPU时间片轮训或者抢占式执行线程(t...原创 2018-11-24 18:22:58 · 246 阅读 · 0 评论 -
java 多线程 线程的生命周期
线程的生命周期主要分为下面5个状态:1新建 new Thread 当创建Thread类的一个实例(对象),继承Thread类,实现Runnable接口,调用Callable接口,此线程进入新建状态(未被启动)2就绪 runnable 线程已被启动,线程对象创建好之后进入就绪状态,此时会等待获取CPU的执行权3运行 running获取到CPU执行权之后,线程对象...原创 2018-11-26 22:01:08 · 185 阅读 · 0 评论 -
jdk8新特性Stream API
jdk8中新加入流Stream接口,主要为处理集合提供了便利,jdk8以后,在集合接口中新增加了默认的sream方法,用来生成流 对象结合Collection的源码增加的stream方法如下:default Stream<E> stream() { return StreamSupport.stream(spliterator(), false); }...原创 2018-11-30 19:11:17 · 1098 阅读 · 0 评论 -
java 反射类及辅助类
本文主要介绍反射的基本使用目录反射反射作用及优缺点Class类 创建Class对象的三种方式:由Class对象得到类的对象其他常用方法:获取属性获取方法获取构造方法获取父类及接口Field类Method类Modifier类Constructor类代码示例: 反射反射机制是指在程序运行状态中,对于任意一个类(只要知道类的...原创 2018-11-27 21:30:52 · 344 阅读 · 0 评论 -
java 反射中的包装类与基本数据类型
写了个执行反射方法的函数,但是却老出问题,捣鼓了下,原来是基本数据类型出了问题,调用反射中的方法时,需要知道方法的参数类型,Method getDeclaredMethod(String name, Class<?>... parameterTypes)但是因为参数是可变类型,我们要单独下一个执行反射类中方法的工具方法的时候,要用数组来处理,就会出现自动装箱问题,比如我...原创 2018-11-28 13:45:46 · 3484 阅读 · 0 评论 -
jdk8 日期相关类
在jdk8中的java.time包下增加了许多处理日期的类,这些类大多数是线程安全的java.time 主要的日期处理相关类LocalDate类,操作日期相关的数据LocalTime类,操作时间相关的数据LocalDateTime类,操作日期和时间ZoneId设置时区Duration类 求两个LocalDate持续时间,对年月日可用Period类 求两个LocaTime持续时间...原创 2018-12-01 02:05:34 · 492 阅读 · 0 评论 -
java 反射 泛型
先看获取父类泛型参数Type getGenericSuperclass() 获取带泛型参数的父类,返回值为Type类型调用Type的子接口ParameterizedType的getActualTypeArguments()方法获取泛型参数的数组简单看下Type接口:Type接口String getTypeName()返回Type的名字子接口ParameterizedTyp...转载 2018-11-28 17:06:39 · 176 阅读 · 0 评论 -
java 反射 动态代理AOP
简单介绍下动态代理的基本用法详细的后面补充AOP(Aspect Orient Program, 面向切面编程)面向切面编程,可以将一些系统性相关的编程工作(如日志,验证,事务等),独立实现,然后通过切面切入进系统。非面向切片变成会导致的问题:代码混乱: 每个方法在处理核心逻辑时还必须兼顾其他多个关注点. 代码分散: 以日志需求为例, 只是为了满足这个单一需求, 就不得不在多个模...转载 2018-11-28 19:31:39 · 641 阅读 · 1 评论 -
java 反射 类加载器
一会二写原创 2018-11-28 19:49:41 · 104 阅读 · 0 评论 -
08 jdbc 单元测试junit简介
junitjunit是一个单元测试框架,使用junit之后可以运行非main方法中的程序使用junit要导入相关jar包,junit官网下载或者eclipse中自带有jar包,导入步骤为:方法1:使用eclipse的插件junit,项目上右键—>properties—>java build path—>选择libraries一项—>点击add library—j...原创 2018-12-14 12:52:03 · 342 阅读 · 1 评论 -
java 多线程 ReentrantLock互斥锁
互斥锁:在上节中我们谈到了Object类的notify()方法随机唤醒单个线程,而不是唤醒指定线程,这就会导致一个问题,比如三个线程A,B,C,A在执行线程体,B,C在等待,A执行完该B执行了,notify方法随机唤醒一个线程,显然不能用,notifyAll方法把两个线程都唤醒,然后C再次设置成等待,这不太好.为了解决不能唤醒指定线程的问题,jdk5.0的增加了ReenTrantLo...原创 2018-11-26 21:23:54 · 215 阅读 · 0 评论 -
java 多线程之通信
共享堆内存变量属于通信的一种,今天要介绍的是使用Object类中的wait和notify方法进行通信,可以让两个线程共同地轮流做一件事再看Object类:Object类是所有类的根父类,现在主要介绍wait方法和notify方法void wait()让当前线程进入等待状态,直到别的线程将其唤醒(notify或者notifyAll方法)。void notify()随机唤醒单个等待状态的线...原创 2018-11-26 18:46:57 · 183 阅读 · 0 评论 -
jdk8新特性 forEach方法和方法引用
先说明,jdk8增加了一个包java.util.function,里面存放的都是新增的函数式接口,方便用lambda表达式重写其抽象方法下面列举三个常见的函数式接口,下行是其抽象方法 Consumer<T>代表了接受一个输入参数并且无返回的操作 void accep(T t)接收一个参数,使用它 IntConsumer接受一个int类型的输入参数,无返回值 。void...原创 2018-11-29 20:30:33 · 6525 阅读 · 1 评论 -
java 使用匿名内部类的方式创建线程并设置和获取线程名字
有些方法需要传入接口的实例或者抽象类的实例对象,比如Thread有一个构造方法,Thread(Runnable target)这时可以可以自定义类实现Runnable接口,重写接口中的方法,将自定义类的对象传入构造方法中也可以使用匿名内部类,即在创建Thread对象时传入Runnable接口,在其后面重写接口的方法这篇文章介绍下使用匿名内部类创建三个线程package creat...转载 2018-11-24 20:07:08 · 2496 阅读 · 0 评论 -
java 多线程 单例模式
单例模式:单例模式是指在程序运行过程中,某个类在内存中只有一个对象,即让一个类只能创建一个对象,所以单例模式不能用new关键字创建单例模式一般分为两种情况,饿汉式和懒汉式创建单例模式的步骤:1构造方法私有化private,保证外部访问不到构造方法,否则可以创建无限多个对象,私有化构造方法后系统不再提供默认的构造方法2创建私有的private静态的static 当前对象类对象(...原创 2018-11-25 21:43:42 · 1243 阅读 · 0 评论 -
java 多线程Thread类
Thread类之前在博客简单介绍了下,本篇重点介绍几个常用方法:先看构造方法:Thread() 创建新的线程对象Thread(String name) 基于指定的名字创建一个线程对象Thread(Runnable target)基于Runnable接口实现类的实例(可以是匿名内部类)创建一个线程对象Thread(Runnable t,String name) 根据给定的Runn...原创 2018-11-24 22:36:17 · 285 阅读 · 0 评论