![](https://img-blog.csdnimg.cn/20210803172654484.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java学习
文章平均质量分 52
本专栏是关于Java的初高级学习blog,笔者是跟随尚硅谷宋老师的视频学习。
EdenGabriel
no why,just do.
展开
-
Windows10安装Java 11 并配置环境变量 及测试 并安装Intellij IDEA
文章目录Win10安装Java 11下载安装JDK 11配置环境变量及注意事项测试安装Intellij IDEA 2021.1.1Win10安装Java 11下载安装JDK 11JDK-11.0.11下载地址一路next即可,可根据个人爱好更换安装路径 。配置环境变量及注意事项电脑左下角搜索环境变量然后添加java环境变量,变量名任意取,变量值就是安装的jdk的路径接着就是把java环境变量添加到系统变量Path中,如下操作。当前操作时只需要关注1-5步安装完java之后发现,环境原创 2021-05-17 16:27:38 · 1636 阅读 · 1 评论 -
IntelliJ IDEA常用快捷键操作
关于IntelliJ IDEA的设置可参考尚硅谷JAVA视频的412 413sectionintellij idea快捷键https://www.hangge.com/blog/cache/detail_2659.htmlCtrl+ Shift+ Alt+Ctrl+Alt+T:调出surround with 可以快速进行try-catch等操作Ctrl+D: 复制当前行Ctrl+F12 搜索当前类的方法有哪些...原创 2021-05-24 09:56:50 · 165 阅读 · 0 评论 -
51. java11新特性
Java 11 新特性JEP – JDK Enhancement Proposal 特性增强提议一、新增了一系列字符串处理方法二、 Optional 加强三、局部变量类型推断升级四、 全新的HTTP 客户端API五、 更简化的编译运行程序六、废弃Nashorn引擎七、 ZGC八、其它新特性Unicode 10Deprecate the Pack200 Tools and API新的Epsilon垃圾收集器完全支持Linux容器(包括Docker)支持G1上的并行原创 2021-05-24 09:55:48 · 110 阅读 · 0 评论 -
50. java10新特性
Java 10 新特性一、 局部变量类型推断Lambda表达式 方法引用等不适用于局部变量类型推断。方法的返回类型和输入参数类型是根据外部决定内部的,而var实际上是需要进行推断的,也就是说需要根本方法体内的变量推断得出,与方法的结构定义违背。二、集合新增创建不可变集合的方法...原创 2021-05-24 09:55:37 · 66 阅读 · 0 评论 -
49. java9新特性
Java9 特性Java 9 中有哪些不得不说的新特性?模块化系统;jShell命令;多版本兼容jar包;接口的私有方法;钻石操作符的使用升级;语法改进: try语句;String存储结构变更;便利的集合特性: of();增强的Stream API;全新的HTTP客户端API;Deprecated的相关API;javadoc的HTML 5支持;Javascript引擎升级: Nashorn;Java的动态编译器yi. JDK 和 JRE 目录结构的改变二、 模块化系统: Jigsaw ➡ M原创 2021-05-23 11:56:50 · 139 阅读 · 0 评论 -
48. java8 新特性--Stream API / Optional类
java8 新特性 --Stream APIJava8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是 Stream API。Stream API ( java.util.stream) 把真正的函数式编程风格引入到Java中。这是目前为止对Java类库最好的补充,因为Stream API可以极大提供Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和原创 2021-05-23 11:56:39 · 157 阅读 · 0 评论 -
47. java8 新特性--Lambda表达式 / 方法引用
java8 新特性特点:速度更快代码更少(增加了新的语法: Lambda 表达式)强大的 Stream API便于并行最大化减少空指针异常: OptionalNashorn引擎,允许在JVM上运行JS应用一、Lambda表达式Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。(Lambda的本质就是函数式接口的实例,原创 2021-05-23 11:56:31 · 156 阅读 · 0 评论 -
46.动态代理
动态代理想一下明星和经纪人的例子,经纪人作为代理类,明星作为被代理类,代理类和被代理类之间共同实现相同的接口。静态代理举例package com.senior.reflect;/** * @author eden * @Description 静态代理举例 * 特点:代理类和被代理类在编译期间,就确定下来了。 * @create projectTest-com.senior.reflect:2021-05-14-19:23 * @since */int原创 2021-05-23 11:56:23 · 118 阅读 · 0 评论 -
45. 创建运行时类的对象-获取运行时类的所有属性及方法的完整结构-调用运行时类的指定属性/方法
创建运行时类的对象 //创建运行时类的对象 @Test public void test2() throws Exception { Class<Car> carClass = Car.class; //调用newInstance创建一个运行时类的对象,该方法内部实际上调用了运行时类的空参构造器 //这里如果把Car类的空参构造器屏蔽掉再运行,就会报NoSuchMethodException的错误; //其次原创 2021-05-23 11:56:12 · 173 阅读 · 0 评论 -
44. 反射机制
反射机制Java不是动态语言, 但Java可以称之为“准动态语言” 。 即Java有一定的动态性, 我们可以利用反射机制、 字节码操作获得类似动态语言的特性。Java的动态性让编程的时候更加灵活!Java反射机制提供的功能在运行时判断任意一个对象所属的类在运行时构造任意一个类的对象在运行时判断任意一个类所具有的成员变量和方法在运行时获取泛型信息在运行时调用任意一个对象的成员变量和方法在运行时处理注解生成动态代理反射相关的APIjava.lang.Class:代表一个类ja原创 2021-05-23 11:56:03 · 65 阅读 · 0 评论 -
43. URL编程
URL编程URL简单测试 @Test public void test(){ try { URL url = new URL("https://xueshu.baidu.com/"); System.out.println(url.getProtocol());//获取协议名 System.out.println(url.getHost());//获取URL对应的主机名 Sy原创 2021-05-23 11:55:54 · 81 阅读 · 0 评论 -
42.java网络编程基础-UDP网络通信
UDP网络通信类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议网络程序。UDP数据报通过数据报套接字 DatagramSocket 发送和接收, 系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。DatagramPacket 对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号。UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接。 如同发快递包裹一样。UD原创 2021-05-23 11:55:46 · 78 阅读 · 0 评论 -
41. java网络编程基础--TCP
java网络编程基础回顾计算机网络的相关知识通信需要IP地址和端口号,InetAddress类主要用来表示IP地址。可通过域名或者直接写入Ip地址的方式获得对应的ip。如果想获取本地服务器的相关数据,ip设置为127.0.0.1,对应着localhost。 @Test public void test() { try { InetAddress inetAddress = InetAddress.getByName("182.61.20原创 2021-05-23 11:55:35 · 69 阅读 · 0 评论 -
40. 字符编码
编码表:计算机只能识别二进制数据,早期由来是电信号。为了方便应用计算机,让它可以识别各个国家的文字。就将各个国家的文字用数字来表示并一一对应,形成一张表。这就是编码表。常见的编码表ASCII: 美国标准信息交换码。用一个字节的7位可以表示。ISO8859-1: 拉丁码表。欧洲码表。 用一个字节的8位表示。GB2312: 中国的中文编码表。最多两个字节编码所有字符GBK: 中国的中文编码表升级,融合了更多的中文文字符号。最多两个字节编码Unicode: 国际标准码, 融合了目前人类使用的所有字符原创 2021-05-23 11:55:27 · 153 阅读 · 0 评论 -
39. RandomAccessFile随机存取文件流
随机存取文件流RandomAccessFile类特点:既可以读也可以写RandomAccessFile 类支持 “随机访问” 的方式,程序可以直接跳到文件的任意地方来读、写文件。支持只访问文件的部分内容可以向已存在的文件后追加内容RandomAccessFile 对象包含一个记录指针,用以标示当前读写处的位置。RandomAccessFile 类对象可以自由移动记录指针:long getFilePointer(): 获取文件记录指针的当前位置void seek原创 2021-05-22 14:24:56 · 187 阅读 · 0 评论 -
38. 对象流
对象流package com.senior.iostream;import org.junit.Test;import java.io.*;/** * @author eden * @Description * @create projectTest-com.senior.iostream:2021-05-13-21:58 * @since 对象流机制:把Java内存中的对象转换为与平台无关的二进制数据,并保存在硬盘中,或者通过网络将这种 * 二进制流传输到另一个网络节点。当其他原创 2021-05-22 14:24:44 · 52 阅读 · 0 评论 -
37.IO流--转换流
转换流:处理流的一种转换流提供了在字节流和字符流之间的转换Java API提供了两个转换流:(属于字符流)InputStreamReader:将InputStream转换为ReaderOutputStreamWriter:将Writer转换为OutputStream字节流中的数据都是字符时,转成字符流操作更高效。很多时候我们使用转换流来处理文件乱码问题。实现编码和解码的功能。InputStreamReaderOutputStreamWriter//读入utf-8编原创 2021-05-22 14:24:35 · 80 阅读 · 0 评论 -
36. 缓冲流--读写文件
BufferedReader/BufferedWriterBufferedInputStream/BufferedOutputStream缓冲流–读写文件package com.senior.iostream;import org.junit.Test;import java.io.*;/** * @author eden * @Description * @create projectTest-com.senior.iostream:2021-05-13-18:07 * @s原创 2021-05-22 14:24:25 · 458 阅读 · 0 评论 -
35. IO流--处理字节流:图片/视频
一般的,对于文本文件(.txt .java .c/cpp .py …),使用字符流来处理对于非文本文件(图片,视频, mp3, .doc, .ppt …),使用字节流来处理IO流–处理字节流:图片/视频复制一张图片并重新命名public class FileByteStream { @Test public void test(){ FileInputStream fileInputStream = null; FileOutputStream fil原创 2021-05-22 14:24:06 · 198 阅读 · 0 评论 -
34. IO流--写出数据
IO流–写出数据从内存中写出数据到硬盘文件里1.输出操作,对应的file如果不存在,则会创建响应文件,并写入数据;如果文件存在,调用write方法,默认会覆盖源文件内容如果想在文件内容后追加内容,则可设置FileWriter(file,true) @Test public void test2() { FileWriter fileWriter = null; try { //1.提供file类的对象原创 2021-05-22 14:23:43 · 220 阅读 · 0 评论 -
33. IO流的分类及体系结构 / IO流读取数据
IO流I/O是Input/Output的缩写, I/O技术是非常实用的技术, 用于处理设备之间的数据传输。 如读/写文件,网络通讯等。Java程序中,对于数据的输入/输出操作以“流(stream)” 的方式进行。java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。输入input: 读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。输出output: 将程序(内存)数据输出到磁盘、光盘等存储设备中。读入data.txt文件并输出到控制台原创 2021-05-22 14:23:33 · 102 阅读 · 0 评论 -
32. IO流--File类的使用
IO流–File类的使用File file1 = new File("d:\\atguigu\\info.txt");File file2 = new File("d:" + File.separator + "atguigu" + File.separator + "info.txt");File file3 = new File("d:/atguigu");File类部分测试代码:下述demo并未涉及到对file文件的修改,对file文件内容的修改所涉及到的IO流操作见后续内容原创 2021-05-22 14:23:24 · 90 阅读 · 0 评论 -
31.泛型 / 通配符
泛型:类比于C++中的模板为什么要有泛型?集合中使用泛型,举例:自定义泛型结构:类、接口、方法自定义泛型类举例public class GenericTest { @Test public void test() { Order<String> stringOrder = new Order<String>("huawei",22131,"phone"); System.out.println(stringOrde原创 2021-05-22 14:23:12 · 140 阅读 · 1 评论 -
30.工具类Collections
工具类Collections用来操作集合的工具类Collections操作数组的工具类为ArraysCollection和Collections的区别?Collection是创建集合的一个接口,Collections存储单列数据的集合,比如list set;Collections是操作集合的一个工具类...原创 2021-05-22 14:23:02 · 70 阅读 · 0 评论 -
29. Map接口继承关系 / Map接口概述 / HashMap底层实现原理及相关知识 / Map常用方法 / TreeMap、Properties
Map接口继承关系Map接口概述Map与Collection并列存在。用于保存具有映射关系的数据:key-valueMap 中的 key 和 value 都可以是任何引用类型的数据Map 中的 key 用Set来存放, 不允许重复,即同一个 Map 对象所对应的类,须重写hashCode()和equals()方法常用String类作为Map的“键”key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到唯一的、确定的 valueMap接口的常用实现类: HashM原创 2021-05-21 10:12:13 · 636 阅读 · 0 评论 -
27.List接口--ArrayList\LinkedList\Vector
List接口List接口实现的常用方法测试package com.senior.collectionuse;import org.junit.Test;import java.util.*;/** * @author eden * @Description * @create projectTest-com.senior.collectionuse:2021-05-12-15:09 * @since */public class ListInterface { @原创 2021-05-21 10:11:51 · 80 阅读 · 0 评论 -
26. 集合collection接口 / Iterator迭代器接口 / foreach
重要结论:向Collection接口的实现类的对象中添加数据obj时,要求obj所在类重写equals()方法。(也就是说,ArrayList、Vector等容器中添加对象时,这个对象所实例化的类中要重写equals方法。)Iterator迭代器接口...原创 2021-05-21 10:11:41 · 68 阅读 · 0 评论 -
25. 集合概述
集合原创 2021-05-21 10:11:23 · 53 阅读 · 0 评论 -
24. 注解Annotation
注解Annotation文档相关注解示例一示例二package com.senior.classuse;/** * @author eden * @Description annotation JDK5.0新增功能 * @create projectTest-com.senior.classuse:2021-05-12-10:19 * @since */public class AnnotationClass { public static void main(Strin原创 2021-05-21 10:10:59 · 130 阅读 · 0 评论 -
23. 常用类--枚举类
枚举类(JDK5.0新增enum关键字定义枚举类)枚举类的对象只能是有有限个且是确定的。比如说星期类:星期一到星期日;性别类:男女当需要定义一组常量时,强烈建议使用枚举类自定义枚举类的步骤//1.私有化类的构造器,保证无法在类的外部创建对象;//2.类内部创建枚举类的实例,声明为private static final//3.对象若有实例变量,声明为private final,并在构造器中初始化class Season{ private final String SEASONNAM原创 2021-05-21 10:10:50 · 232 阅读 · 0 评论 -
22. Java比较器Comparable、Comparator
Java比较器Java实现对象排序的方式有两种:自然排序: java.lang.Comparable定制排序: java.util.Comparator对自定义的对象进行排序,在类中自定义排序规则。自定义类实现Comparable接口,在类中重写接口中compareTo的方法。重写规则和重写模板如下,实际开发中可以参考String中的compareTo方法。如果比较的是对象,参考下述demo的写法。package com.senior.classuse;import org.junit.T原创 2021-05-21 10:10:25 · 72 阅读 · 0 评论 -
21. 常用类--System、Math、BigInteger、BigDecimal
常用类System Math BigInteger BigDecimal类System这部分来自于尚硅谷Math类java.lang.Math提供了一系列静态方法用于科学计算。其方法的参数和返回值类型一般为double型。abs 绝对值acos,asin,atan,cos,sin,tan 三角函数sqrt 平方根pow(double a,doble b) a的b次幂log 自然对数exp e为底指数max(double a,double b)min(double a,dou原创 2021-05-21 10:10:15 · 134 阅读 · 0 评论 -
20. 格式化日期时间
格式化日期时间 /* * * java.time.format.DateTimeFormatter类:格式化与解析日期或时间 * */ @Test public void test2(){ DateTimeFormatter isoDateTime = DateTimeFormatter.ISO_DATE_TIME; System.out.println(isoDateTime); //常用这种方式原创 2021-05-21 10:09:31 · 208 阅读 · 0 评论 -
19. 瞬时Instant的使用
瞬时 Instant @Test public void test1(){ //由于时区问题回导致这里直接得到的时间不对 //得到的是本初子午线对应的标准时间 Instant instant = Instant.now(); System.out.println(instant);//2021-05-11T11:02:36.939417200Z //添加时间偏移量,获得本地时区对应的真实时间原创 2021-05-20 09:48:21 · 182 阅读 · 0 评论 -
18. 常用类--LocalDate、 LocalTime、 LocalDateTime的使用
新时间日期APIjava.time – 包含值对象的基础包java.time.chrono – 提供对不同的日历系统的访问java.time.format – 格式化和解析时间和日期java.time.temporal – 包括底层框架和扩展特性java.time.zone – 包含时区支持的类说明:大多数开发者只会用到基础包和format包,也可能会用到temporal包。因此,尽管有68个新的公开类型,大多数开发者,大概将只会用到其中的三分之一。LocalDate、 LocalTi...原创 2021-05-20 09:48:11 · 201 阅读 · 0 评论 -
17. 常用类--StringBuffer 和 StringBuilder的使用
String StringBuffer StringBuilder的异同:String:不可变的字符序列,底层使用final char[]存储StringBuffer:可变的字符序列;线程安全,效率低;底层使用char[]存储默认情况下扩容为原来容量的2倍+2.StringBuilder:可变的字符序列;线程不安全,效率高;底层使用char[]存储默认情况下扩容为原来容量的2倍+2.package com.senior.classuse;import org.junit.Test;原创 2021-05-20 09:47:43 · 72 阅读 · 0 评论 -
16. String与其他结构之间的转换
String与其他结构之间的转换复习string 与基本数据类型,包装类的转换 /* * String与char[]之间的转换 * String-->char[]:toCharArray * */ @Test public void test7() { String str = "abc123"; char[] chars = str.toCharArray(); for (int i = 0原创 2021-05-20 09:47:32 · 55 阅读 · 0 评论 -
15.常用类--String类的声明及常用方法
String对象的部分创建方式,具体可查看Java源代码String中的一些常用方法package com.senior.classuse;import org.junit.Test;import java.util.Locale;/** * String的相关操作 * * @author eden * @create projectTest:2021-05-11-13:54 */public class UseStringClass { /* * 1.Str原创 2021-05-20 09:47:06 · 635 阅读 · 0 评论 -
13.生产者消费者模型
package com.senior.multithread;/** * 生产者消费者问题 * * @author eden * @create projectTest:2021-05-11-9:39 */public class ProductorCustomerModel { public static void main(String[] args) { Task task = new Task(); Productor ptmp1 = new原创 2021-05-20 09:46:51 · 52 阅读 · 0 评论 -
11. 死锁的案例
死锁的案例demo来源于尚硅谷Java教学课程package com.atguigu.java;class A { public synchronized void foo(B b) { System.out.println("当前线程名: " + Thread.currentThread().getName() + " 进入了A实例的foo方法"); // ① try { Thread.sleep(200); } catch (InterruptedExceptio原创 2021-05-20 09:46:06 · 67 阅读 · 0 评论