Java基础
WindJunn
这个作者很懒,什么都没留下…
展开
-
泛型
自定义泛型(类、方法、接口)泛型通配符通配符用“?”表示普通使用相同点:代表任意的数据类型 不同点:通配符不能创建对象使用,只能作为方法的参数使用约定上限和下限的使用泛型的上限限定: ? extends E 代表使用的泛型只能是E类型的子类/本身泛型的下限限定: ? super E 代表使用的泛型只能是E类型的父类/本身泛型概述集合中是可以存...原创 2019-07-19 23:38:36 · 95 阅读 · 0 评论 -
IO流(四) 字符流
在操作过程中字节流可以操作所有数据,可是当我们操作的文件中有中文字符,并且需要对中文字符做出处理时怎么办呢?字节流读取字符的问题通过以下程序读取带有中文件的文件。 public class CharStreamDemo { public static void main(String[] args) throws IOException { //给文件中写中文 write...原创 2019-07-22 21:50:11 · 95 阅读 · 0 评论 -
IO流(五) IO异常及转换流
我们在实际开发中,对异常时如何处理的public class FileOutputStreamDemo3 { public static void main(String[] args) { File file = new File("c:\\file.txt"); //定义FileOutputStream的引用 FileOutputStream fos = null; t...原创 2019-07-22 21:53:55 · 106 阅读 · 0 评论 -
IO流(六) 缓冲流
在我们学习字节流与字符流的时候,大家都进行过读取文件中数据的操作,读取数据量大的文件时,读取的速度会很慢,很影响我们程序的效率,那么,我想提高速度,怎么办?Java中提高了一套缓冲流,它的存在,可提高IO流的读写速度缓冲流,根据流的分类分类字节缓冲流与字符缓冲流。字节缓冲流字节缓冲流根据流的方向,共有2个写入数据到流中,字节缓冲输出流 BufferedOutputStream...原创 2019-07-22 21:56:27 · 165 阅读 · 0 评论 -
IO流(七) Properties类
Properties类介绍Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。Properties:Map集合的一种,它是Hashtable集合的子集合,它键与值都是String类型,它是唯一能与IO流结合使用的集合特点:1、Hashtable的子类,map集合中的方法都可以用。2、该集合没有...原创 2019-07-22 22:02:01 · 327 阅读 · 0 评论 -
IO流(八) 序列化流与反序列化流
用于从流中读取对象的操作流 ObjectInputStream 称为 反序列化流用于向流中写入对象的操作流 ObjectOutputStream 称为 序列化流序列化:用一个字节序列可以表示一个对象,该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。反序列化:该字节序列还可以从文件中读取回来,重构对象...原创 2019-07-22 22:04:56 · 101 阅读 · 0 评论 -
IO流(九) 打印流
打印流的概述打印流添加输出数据的功能,使它们能够方便地打印各种数据值表示形式.java.io.PrintStream:打印流PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。PrintStream特点:1.只负责数据的输出,不负责数据的读取2.与其他输出流不同,PrintStream 永远不会抛出 IOExcep...原创 2019-07-22 22:41:18 · 56 阅读 · 0 评论 -
IO流(十) commons-IO
FilenameUtils这个工具类是用来处理文件名(译者注:包含文件路径)的,他可以轻松解决不同操作系统文件名称规范不同的问题常用方法:getExtension(String path):获取文件的扩展名;getName():获取文件名;isExtension(String fileName,String ext):判断fileName是否是ext后缀名;FileUtils...原创 2019-07-22 22:43:14 · 81 阅读 · 0 评论 -
网络编程
软件结构C/S结构:全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。即Client/Server(客户机/服务器) 结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理、...原创 2019-07-22 22:57:13 · 290 阅读 · 0 评论 -
Lambda表达式
函数式编程思想概述在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。面向对象的思想: 做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.函数式编程思想: 只要能获取到结果,谁去做的,怎么做的都不...原创 2019-07-23 13:37:57 · 130 阅读 · 0 评论 -
函数式接口
jdk提供我们的常用函数式接口:Supplier;Consumner;Predicate;Function;02_函数式接口的概念&函数式接口的定义概念: 有且仅有一个抽象方法的接口;@FunctionalInterface告诉编译器,我当前这个接口是函数式接口;(编译器就会检测当前接口是不是有且仅有一个抽象方法)03_函数式接口的使用l...原创 2019-07-23 13:46:26 · 147 阅读 · 0 评论 -
Stream流 与 方法引用
在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。Java 8的Lambda让我们可以更加专注于做什么(What),而不是怎么做(How),这点此前已经结合内部类进行 了对比说明。现在,我们仔细体会一下上例代码,可以发现:for循环的语法就是“怎么做” for循环的循环体才是“做什么”为什么使用循环?因为要进行遍历...原创 2019-07-23 13:48:06 · 146 阅读 · 0 评论 -
反射
类加载器类的加载当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。加载就是指将class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象连接验证 是否有正确的内部结构,并和其他类协调一致准备 负责为类的静态成员分配内存,并设置默认初始化值解析 将类的二进制数据中的符号...原创 2019-07-23 14:04:40 · 136 阅读 · 0 评论 -
Junit单元测试
测试分类:1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。2. 白盒测试:需要写代码的。关注程序具体的执行流程。Junit使用:白盒测试步骤:1. 定义一个测试类(测试用例)建议:测试类名:被测试的类名Test CalculatorTest包名:xxx.xxx.xx.test cn.itcast.test2. 定义测试方法:可以独...原创 2019-07-23 14:08:07 · 128 阅读 · 0 评论 -
IO流(三) 字节流
我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据。现在我们就要开始给文件中写数据,或者读取文件中的数据。字节输出流写入数据到文件写入数据的原理(内存-->硬盘)java程序-->JVM(java虚拟机)-->OS(操作系统)-->OS调用写数据的方法-->把数据写入到文件中字节输出流的使用步骤(重点):1.创建一个File...原创 2019-07-22 21:42:22 · 108 阅读 · 0 评论 -
IO流(二) 递归
递归的概述递归,指在当前方法内调用自己的这种现象递归分为两种,直接递归和间接递归。public void method(){ System.out.println(“递归的演示”); //在当前方法内调用自己 method();}直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。注意事项:- 递归...原创 2019-07-22 21:36:53 · 112 阅读 · 0 评论 -
集合(一 Collection集合)
1. JDK9对集合添加的优化【of( )】方法JDK9的新特性:List接口,Set接口,Map接口:里边增加了一个静态的方法of,可以给集合一次性添加多个元素static <E> List<E> of(E... elements)使用前提:当集合中存储的元素的个数已经确定了,不在改变时使用注意:1.of方法只适用于List接口,...原创 2019-07-19 23:41:44 · 232 阅读 · 0 评论 -
集合 (二 Iterator迭代器)
Iterator接口在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口java.util.Iterator。Iterator接口也是Java集合中的一员,但它与Collection、Map接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为...原创 2019-07-19 23:42:45 · 199 阅读 · 0 评论 -
集合 (三 Map接口)
Map接口概述Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同。Collection中的集合,元素是孤立存在的,向集合中存储元素采用一个个元素的方式存储。Map集合的特点:1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)2.Map集合中的元素,key和value的数据类型可以相同,也可以不同3.M...原创 2019-07-19 23:46:38 · 98 阅读 · 0 评论 -
异常
什么是异常?Java代码在运行时期发生的问题就是异常。在Java中,把异常信息封装成了一个类。当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置、原因等)。异常基础在Java中使用Exception类来描述异常。查看API中Exception的描述,Exception 类及其子类是 Throwable 的一种形式,它用来表示java程序中可能会产生...原创 2019-07-19 23:51:22 · 153 阅读 · 0 评论 -
多线程(一) 基本概念
多线程介绍并发与并行并发:指两个或多个事件在同一个时间段内发生。 并行:指两个或多个事件在同一时刻发生(同时发生)通俗易懂版:你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这...原创 2019-07-20 00:04:54 · 142 阅读 · 0 评论 -
多线程(二) 创建线程方式------继承Thread类
创建线程方式一继承Thread类创建线程的步骤:1 定义一个类继承Thread。2 重写run方法。3 创建子类对象,就是创建线程对象。4 调用start方法,开启线程并让线程执行,同时还会告诉jvm去调用run方法。测试类public class Demo01 { public static void main(String[] args) { ...原创 2019-07-20 11:09:15 · 595 阅读 · 0 评论 -
多线程(三) 创建线程方式------实现Runnable接口
创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后创建Runnable的子类对象,传入到某个线程的构造方法中,开启线程。为何要实现Runnable接口,Runable是啥玩意呢?继续API搜索。查看Runnable接口说明文档:Runnable接口用来指定每个线程要执行的任务。包含了一个 run 的无参数抽象方法,需要由接口实现类重写该方法。创...原创 2019-07-20 11:22:53 · 2118 阅读 · 0 评论 -
多线程(四) 线程池
多线程有几种实现方案,分别是哪几种?a, 继承Thread类b, 实现Runnable接口c, 通过线程池,实现Callable接口线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。我们详细的解释一下为什么要使用线程池?在java中,如果每个请求到达就创建一个新线程,开销是相当大的。在实际使用...原创 2019-07-20 11:24:12 · 75 阅读 · 0 评论 -
多线程(五) 线程安全和线程同步
如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。我们通过一个案例,演示线程的安全问题:电影院要卖票,我们模拟电影院的卖票过程。假设座位共100个(本场电影只能卖100张票)。我们来模拟电影院的售票窗口,实现多个窗口同时卖电影票(多个窗口一起卖这100张票)需要窗口,采用线程对...原创 2019-07-20 11:33:50 · 96 阅读 · 0 评论 -
多线程(六) 死锁和Lock锁
死锁同步锁使用的弊端:当线程任务中出现了多个同步(多个锁)时,如果同步中嵌套了其他的同步。这时容易引发一种现象:程序出现无限等待,这种现象我们称为死锁。这种情况能避免就避免掉。synchronzied(A锁){ synchronized(B锁){ }}我们进行下死锁情况的代码演示:定义锁对象类publicclassMyLoc...原创 2019-07-20 11:39:09 · 317 阅读 · 0 评论 -
多线程(七) 等待唤醒机制
线程之间的通信:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。通过一定的手段使各个线程能有效的利用资源。而这种手段即—— 等待唤醒机制。等待唤醒机制所涉及到的方法:wait() :等待,将正在执行的线程释放其执行资格 和 执行权,并存储到线程池中。 notify():唤醒,唤醒线程池中被wait()的线程,一次唤醒一个,而且是任意的。 notifyAll(): 唤醒全...原创 2019-07-20 11:44:16 · 164 阅读 · 0 评论 -
IO流(一) 概述及File类
概述数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了。那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据读出来继续使用呢?其实要把数据持久化存储,就需要把内存中的数据存储到内存以外的其他持久化设备(硬盘、光盘、U盘等)上。当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作。当把持久设备上的数...原创 2019-07-20 13:25:57 · 107 阅读 · 0 评论 -
内部类
什么是内部类将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类。其他类也称为外部类。什么时候使用内部类在描述事物时,若一个事物内部还包含其他可能包含的事物,比如在描述汽车时,汽车中还包含这发动机,这时发动机就可以使用内部类来描述。class 汽车 { //外部类 class 发动机 { //内部类 }}内部类的...原创 2019-07-19 23:37:25 · 56 阅读 · 0 评论 -
注解
注解:* 概念:说明程序的。给计算机看的* 注释:用文字描述程序的。给程序员看的* 定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。* 概念描述:* JDK1.5之后的新特性* 说明程序...原创 2019-07-23 14:09:25 · 177 阅读 · 0 评论