![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
02.java高级语法
文章平均质量分 64
从0.33333333到0.66666666666666
哈喽天空
这个作者很懒,什么都没留下…
展开
-
MySQL 安装与使用_hehe.employment.over.2.2
2.3 MySQL 的安装1.双击“mysql-5.5.40-win64.msi”文件——点击”next“——勾选,点击”next“2. 选择”Custom"3. 修改路径——点击“next"——点击”Install"——安装完成后,出现配置界面,点击“next"——点击"next"...原创 2021-01-30 11:37:49 · 116 阅读 · 0 评论 -
数据库概念_hehe.employment.over.2.1
2.1 数据库基本概念什么是数据库存储数据的仓库;本质上是一个文件系统,还是以文件的方式存在服务器的电脑上的;所有的关系型数据库都可以使用通用的 SQL 语句进行管理 DBMS DataBase Management System。2.2 常见的数据库软件的介绍MySQL: 开源免费的数据库,小型的数据库,已经被 Oracle 收购了。MySQL6.x 版本也开始收费。后来 Sun 公司收购了MySQL,而 Sun 公司又被 Oracle 收购Oracle: 收费的大型数据库,Or原创 2021-01-29 22:12:45 · 119 阅读 · 0 评论 -
注解_hehe.employment.over.1.3
1.9 概念概念:说明程序的。给计算机看的注释:用文字描述程序的。给程序员看的概念描述:JDK1.5之后的新特性。说明程序的。使用注解: @注解名称 。作用分类:编写文档:通过代码里标识的注解生成文档【生成文档doc文档】代码分析:通过代码里标识的注解对代码进行分析【使用反射】编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【Override】1.10 JDK内置注解@Override :检测被该注解标注的方法是否是继承自父类(接口)的;@Depre原创 2021-01-29 21:01:53 · 107 阅读 · 0 评论 -
反射_hehe.employment.over.1.2
1.3 反射概述反射:框架设计的灵魂框架: 半成品软件。可以在框架的基础上进行软件开发,简化编码。反射: 将类的各个组成部分封装为其他对象,这就是反射机制。反射好处:可以在程序运行过程中,操作这些对象。可以解耦,提高程序的可扩展性。图示:1.4 获取字节码Class对象的三种方式Class.forName(“全类名”): 将字节码文件加载进内存,返回Class对象;(源代码阶段)多用于配置文件,将类名定义在配置文件中。读取文件,加载类。类名.class:原创 2021-01-29 16:17:10 · 82 阅读 · 0 评论 -
Junit单元测试_hehe.employment.over.1.1
1.1 Junit 测试概述测试分类:黑盒测试: 不需要写代码,给输入值,看程序是否能够输出期望的值。白盒测试: 需要写代码的。关注程序具体的执行流程。1.2 Junit 使用步骤Junit使用:白盒测试步骤:1.定义一个测试类(测试用例);建议:测试类名:被测试的类名Test ,eg:CalculatorTest包名:xxx.xxx.xx.test, eg:com.xww.test2.定义测试方法:可以独立运行;建议:方法名:test测试的方法名原创 2021-01-29 10:59:15 · 110 阅读 · 0 评论 -
方法引用_hehe.employment.13.2
13.13 方法引用基本介绍方法引用符:双冒号 :: 为引用运算符,而它所在的表达式被称为方法引用。如果Lambda要表达的函数方案已经存在于某个方法的实现中,那么则可以通过双冒号来引用该方法作为Lambda的替代者。冗余的Lambda场景@FunctionalInterfacepublic interface Printable {void print(String str);}public class Demo01PrintSimple {private static v原创 2021-01-28 20:53:46 · 64 阅读 · 0 评论 -
Stream流_hehe.employmenty.13.1
13.1 使用传统方式_遍历集合,对集合中的数据进行过滤示例:package com.xww.demo01;import java.util.ArrayList;import java.util.List;/* 使用传统的方式,遍历集合,对集合中的数据进行过滤 */public class demoLi { public static void main(String[] args) { //创建一个List集合,存储姓名 List<原创 2021-01-28 16:27:43 · 81 阅读 · 0 评论 -
常用函数式接口_hehe.employment.12.3
12.6 Supplier 接口java.util.function.Supplier 接口仅包含一个无参的方法: T get()。用来获取一个泛型参数指定类型的对象数据。由于这是一个函数式接口,这也就意味着对应的Lambda表达式需要“对外提供”一个符合泛型类型的对象 数据。示例:package com.xww.demo05;import java.util.function.Supplier;public class demoSu { public static void ma原创 2021-01-27 21:57:03 · 89 阅读 · 0 评论 -
函数式编程_hehe.employment.12.2
12.3 性能浪费的日志案例示例:package com.xww.demo02;/* 日志案例: 发现以下代码存在的一些性能浪费的问题 调用showLog方法,传递的第二个参数是一个拼接后的字符串 先把字符串拼接好,然后在调用showLog方法 showLog方法中如果传递的日志等级不是1级 那么就不会是如此拼接后的字符串 所以感觉字符串就原创 2021-01-27 20:18:00 · 62 阅读 · 0 评论 -
函数式接口_hehe.employment.12.1
12.1 函数式接口的概念与定义函数式接口: 有且只有一个抽象方法的接口,称之为函数式接口,当然接口中可以包含其他的方法(默认,静态,私有)。格式:修饰符 interface 接口名称 { public abstract 返回值类型 方法名称(可选参数信息); // 其他非抽象方法内容}@FunctionalInterface注解作用: 可以检测接口是否是一个函数式接口是: 编译成功;否: 编译失败(接口中没有抽象方法抽象方法的个数多余1个)。示例:packag原创 2021-01-27 19:48:49 · 61 阅读 · 0 评论 -
模拟B\S服务器_hehe.employment.11.4
11.12 模拟 B/S服务器 分析图示:11.12 模拟 B/S服务器 代码实现示例:package com.itheima.demo04.BSTCP;import java.io.*;import java.net.ServerSocket;import java.net.Socket;/* 创建BS版本TCP服务器 */public class TCPServerThread { public static void main(String[] arg原创 2021-01-27 15:23:37 · 83 阅读 · 0 评论 -
综合案例_文件上传_hehe.employment.11.3
11.7原创 2021-01-27 14:54:42 · 83 阅读 · 0 评论 -
TCP通信程序_hehe.employment.11.2
11.5 TCP 通信的概述两端通信时步骤:服务端程序,需要事先启动,等待客户端的连接。客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。在Java中,提供了两个类用于实现TCP通信程序:客户端: java.net.Socket 类表示。创建 Socket 对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。服务端: java.net.ServerSocket 类表示。创建 ServerSocket 对象,相当于开启一个服务,并等待客户端的连接。原创 2021-01-26 21:50:15 · 202 阅读 · 0 评论 -
网络编程入门_hehe.employment.11.1
11.1 软件结构C/S结构 : 全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。图示:B/S结构 : 全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。图示:11.2 网络通信协议网络通信协议: 通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这就好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守,最终原创 2021-01-26 21:16:44 · 77 阅读 · 0 评论 -
打印流_hehe.employment.10.4
10.18 打印流_概述与使用java.io.PrintStream:打印流PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。PrintStream特点:1.只负责数据的输出,不负责数据的读取;2.与其他输出流不同,PrintStream 永远不会抛出 IOException;3.有特有的方法,print,println。void print(任意类型的值)void println(任意类型的值并换行)构造方法:PrintStrea原创 2021-01-26 17:26:26 · 49 阅读 · 0 评论 -
序列化_hehe.employment.10.3
10.13 序列化与反序列化的概述Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该 对象的数据、 对象的 类型 和 对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。 对象的数据 、 对象的类型 和 对象中存储的数据信息,都可以用来在内存中创建对象。看图理解序列化图示:10.14 对象的序列化流_ObjectOutputStreamjava.io.原创 2021-01-26 17:08:24 · 86 阅读 · 1 评论 -
转换流_hehe.employment.10.2
10.7 字符编码计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果;编码 :按照某种规则,将字符存储到计算机中;。解码:将存储在计算机中的二进制数按照 某种规则解析显示出来;比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本f符 号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。字符编码 Character Encoding : 就是一套自然语言的字符与二进制数之间的对应规则。10.8 字符集原创 2021-01-26 15:46:39 · 62 阅读 · 1 评论 -
缓冲流_hehe.employment.10.1
10.1 缓冲流的原理图示:10.2 字节缓冲输出流_BufferedOutputStreamjava.io.BufferedOutputStream extends OutputStreamBufferedOutputStream: 字节缓冲输出流继承自父类的共性成员方法:public void close() :关闭此输出流并释放与此流相关联的任何系统资源。public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。public void w原创 2021-01-25 22:38:30 · 67 阅读 · 0 评论 -
属性集_hehe.employment.9.4
9.19 使用 Properties 集合存储数据,遍历java.util.Properties集合 extends Hashtable<k,v> implements Map<k,v>Properties 类 :表示了一个持久的属性集。Properties 可保存在流中或从流中加载。Properties集合 :是一个唯一和IO流相结合的集合可以使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储;可以使用Properties集合原创 2021-01-25 17:15:50 · 54 阅读 · 0 评论 -
IO异常的处理_hehe.employment.9.3
9.17 使用 try_catch_finally 处理流中的异常在jdk1.7之前使用try catch finally 处理流中的异常。格式: try{ 可能会产出异常的代码 }catch(异常类变量 变量名){ 异常的处理逻辑 }finally{ 一定会指定的代码 资源释放 }示例:package com.xww.demo10原创 2021-01-25 16:27:12 · 63 阅读 · 0 评论 -
字符流_hehe.employment.9.2
9.12java.io.Reader:字符输入流,是字符输入流的最顶层的父类,定义了一些共性的成员方法,是一个抽象类共性的成员方法: int read() 读取单个字符并返回。 int read(char[] cbuf)一次读取多个字符,将字符读入数组。 void close() 关闭该流并释放与之关联的所有资源。java.io.FileReader extends InputStreamReader extends ReaderFileReader:文件字符输入流作用:原创 2021-01-25 16:09:38 · 64 阅读 · 0 评论 -
字节流_hehe.employment.9.1
9.1 IO 概述什么是IOJava中I/O操作主要是指使用 java.io 包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写 出数据。IO的分类根据数据的流向分为:输入流和输出流。输入流 :把数据从 其他设备 上读取到 内存 中的流。输出流 :把数据从 内存 中写出到 其他设备 上的流。格局数据的类型分为:字节流和字符流。字节流 :以字节为单位,读写数据的流。字符流 :以字符为单位,读写数据的流。顶级父类们输入流输出流原创 2021-01-24 10:34:28 · 84 阅读 · 0 评论 -
文件过滤器_hehe.employment.8.2
8.9 FileFilter 原理与使用在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器File[] listFiles(FileFilter filter)java.io.FileFilter接口 : 用于抽象路径名(File对象)的过滤器。作用: 用来过滤文件(File对象) 。抽象方法: 用来过滤文件的方法 。boolean accept(File pathname) :测试指定抽象路径名是否应该包含在某个路径名列表中。参数:File pat原创 2021-01-22 22:12:58 · 73 阅读 · 0 评论 -
File 类_hehe.employment.8.1
8.1 File类的概述java.io.File 类 :是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。file: 文件directory: 文件夹/目录path: 路径8.2 File 类的静态成员变量static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。static char pathSeparatorChar 与系统有关的路径分隔符。static String separator 与系统有关的默认原创 2021-01-22 21:21:10 · 95 阅读 · 0 评论 -
Lambda表达式_hehe.employment.7.3
7.6 函数式编程思想概述在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象 过分强调“必须通过对象的形式来做事情”,而 函数式思想 则尽量忽略面向对象的复杂语法——强调做什么,而不是以 什么形式做。面向对象的思想:做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.函数式编程思想:只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程....原创 2021-01-22 10:46:07 · 83 阅读 · 0 评论 -
线程池_hehe.employment.7.2
7.5 线程池概念线程池: 其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作, 无需反复创建线程而消耗过多资源。合理利用线程池能够带来三个好处:降低资源消耗。减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。提高线程的可管理性。可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消原创 2021-01-21 22:11:57 · 47 阅读 · 0 评论 -
等待唤醒机制_hehe.employment.7.1
7.1 线程间通信概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。为什么要处理线程间通信:多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,并且我们 希望他们有规律的执行,那么多线程之间需要一些协调通信,以此来帮我们达到多线程共同操作一份数据。如何保证线程原创 2021-01-21 21:08:53 · 79 阅读 · 0 评论 -
线程状态_hehe.employment.6.3
6.16 线程状态概述线程状态导致状态发生条件NEW(新建)线程刚被创建,但是并未启动。还没调用start方法。Runnable(可运行)线程可以在java虚拟机中运行的状态,可能正在运行自己代码,也可能没有,这取决于操作系统处理器。Blocked(锁阻塞)当一个线程试图获取一个对象锁,而该对象锁被其他的线程持有,则该线程进入Blocked状态;当该线程持有锁时,该线程将变成Runnable状态。Waiting(无限等待)一个线程在等待另一个线程执行一个(唤醒原创 2021-01-21 16:35:45 · 50 阅读 · 0 评论 -
线程安全_hehe.employment.6.2
6.8原创 2021-01-21 16:14:00 · 63 阅读 · 0 评论 -
线程_hehe.employment.6.1
6.1 多线程原理_随机打印结果图示:6.2 多线程原理_多线程内存图解图示:6.3 Thread类的常用方法_获取线程的名字获取线程的名字:使用Thread类中的方法getName().public String getName() :获取当前线程名称。可以先获取到当前正在执行的线程,使用线程中的方法getName()获取线程的名字.public static Thread currentThread() :返回对当前正在执行的线程对象的引用。线程的名称原创 2021-01-21 11:16:53 · 62 阅读 · 0 评论 -
多线程_hehe.employment.5.4
5.14 并发与并行并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)。5.15 线程与进程进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创 建、运行到消亡的过程。线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序原创 2021-01-20 21:40:54 · 58 阅读 · 0 评论 -
自定义异常_hehe.employment.5.3
5.12 自定义异常类自定义异常类: java提供的异常类,不够我们使用,需要自定义一些异常类。格式:public class XXXException extends Exception | RuntimeException{ 添加一个空参数的构造方法; 添加一个带异常信息的构造方法;}notes:自定义异常类一般都是以Exception结尾,说明该类是一个异常类;自定义异常类,必须继承Exception或者RuntimeException。继承Exception:那么自定义原创 2021-01-20 16:49:04 · 53 阅读 · 0 评论 -
异常的处理_hehe.employment.5.2
5.5 throw关键字作用:可以使用throw关键字在指定的方法中抛出指定的异常。使用格式:throw new xxxException("异常产生的原因");notes:throw关键字必须写在方法的内部;throw关键字后边new的对象必须是Exception或者Exception的子类对象;throw关键字抛出指定的异常对象,我们就必须处理这个异常对象;throw关键字后边创建的是RuntimeException或者是RuntimeException的子类对象,我们可以不处理,默原创 2021-01-20 16:23:18 · 79 阅读 · 0 评论 -
异常_hehe.employment.5.1
5.1 异常的概述异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行。5.2 异常体系异常机制其实是帮助我们找到程序中的问题,异常的根类是 java.lang.Throwable ,其下有两个子类:java.lang.Error 与 java.l原创 2021-01-20 10:32:14 · 61 阅读 · 0 评论 -
Debug 追踪_hehe.employment.4.3
4.10 Debug 追踪使用方式:在行号的右边,鼠标左键单击,添加断点(每个方法的第一行,哪里有bug添加到哪里);右键,选择Debug执行程序=;程序就会停留在添加的第一个断点处。执行程序:F8逐行执行程序F7进入到方法中shift+F8跳出方法F9跳到下一个断点,如果没有下一个断点,那么程序结束ctrl+F2退出Debug模式,停止程序console切换到控制台...原创 2021-01-19 21:20:06 · 60 阅读 · 0 评论 -
jdk9对集合添加的优化_of 方法_hehe.employment.4.2
4.9 jdk9对集合添加的优化_of方法List接口,Set接口,Map接口:里边添加了一个静态的方法of,可以给集合一次性添加多个元素;static <E> list<E> of (E...elements)使用前提:当集合中存储的元素的个数已经确定了,不再改变时使用。notes:of方法只适用于List接口,Set接口,Map接口,不适用于接口的实现类;of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,否则会抛出异常;Set接口和M原创 2021-01-19 21:13:48 · 49 阅读 · 0 评论 -
Map 集合_hehe.employment.4.1
4.1 Map 集合概述java.util.Map<K,V>Map 集合的特点:Map 集合是一个双列集合,一个元素包含两个值(一个key,一个value);Map 集合中的元素,key 和 value 的数据类型可以相同,可以不同;Map 集合中的元素,key 是不允许重复的,value 是可以重复的;Map集合中的元素,key 和 value 是一一对应的。Collection 中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。Map 中原创 2021-01-19 20:41:02 · 56 阅读 · 0 评论 -
Collections 集合工具类_hehe.employment.3.4
java.utils.Collections 是集合工具类部分方法如下:public static boolean addAll(Collection c, T… elements):往集合中添加一些元素。public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。public static void sort(List list) :将集合中元素按照默认规则排序。public static void sort(List lis.原创 2021-01-19 10:58:36 · 81 阅读 · 0 评论 -
Set 接口_hehe.employment.3.3
3.5 HashSet 集合介绍java.util.HashSet集合 implements Set接口HashSet特点:不允许存储重复的元素;没有索引,没有带索引的方法,也不能使用不同的for循环遍历;是一个无序的集合,存储元素和取出元素的顺序有可能不一致;底层是一个哈希表结构(查询速度非常快)。示例:package com.xww.demo02;import java.util.HashSet;import java.util.Iterator;import java原创 2021-01-14 21:41:16 · 63 阅读 · 0 评论 -
List 的子类_hehe.employment.3.2
3.2 ArrayList 集合java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据、遍历数据,所以 ArrayList 是最常用的集合。许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡的。3.3 LinkedList 集合java.util.LinkedList 集合数据 存储的结构是链表结构。方便元素添加、删除的集合。LinkedList :是一个双向链表.Linke原创 2021-01-14 14:17:53 · 62 阅读 · 0 评论