JAVA学习笔记
文章平均质量分 91
主要为学习中国大学mooc《Java核心技术》基础、进阶,高级的学习笔记。
CSU-Benjamin
一个计科男生的学习记录
展开
-
json读写——java
JSON解析:如图1.去掉最外面的{}:JSONObject jsonObject = new JSONObject(str);//可以理解为去掉最外层的{}2.取出books数组:JSONArray books = jsonObject.getJSONArray("books");3.再取出数组中的每一个object,并且转化为JSONObject形式。for (Ob...原创 2020-01-30 20:30:04 · 290 阅读 · 0 评论 -
数组与列表的随记——JAVA
目录一、数组1.无需索引的遍历2.数组初始化定义二、列表一、数组1.无需索引的遍历//d为一维数组for(int e : d) { System.out.println(e); }//a为二维数组for(int[] items : a) { for(int item : items) { System.out.print(...原创 2020-01-13 15:20:46 · 127 阅读 · 0 评论 -
java运行管理
一、java开发和运行过程编写:用编写工具,编写.java文件 编译:采用javac.exe工具对.java文件进行编译,产生.class文件 运行:采用java.exe加载.class文件运行。运行过程详解:加载:首先通过ClassLoader进行加载, 存储:加载之后放入JVM Memory中来, 执行:执行机获取memory中的东西,获取字节码指令,然后翻译为本地方法执...原创 2020-02-27 14:33:27 · 255 阅读 · 0 评论 -
JVM虚拟机详解——java
一、虚拟机简介逻辑上,可看作一台虚拟的计算机,实际上,,一个软件,能够执行一系列虚拟的计算指令。可分为系统虚拟机和软件虚拟机。系统虚拟机:对物理计算机的仿真,如VMWare软件虚拟机:专门为单个计算程序而设计的,如JVM二、Java内存分类java自动内存管理,程序员只需要申请使用,系统会检查无用的对象并回收内存,系统统一管理内存,内存使用相对高效,但也会出现异常。...原创 2020-02-26 15:52:53 · 231 阅读 · 0 评论 -
类加载器——Java
一、四级类加载器简介启动类加载器(Bootstrap):主要加载系统类扩展类加载器(Extension),加载jre/lib/ext应用类加载器(APP):加载ClassPath中的类用户自定义加载器(Plugin),程序自定义二、双亲委托机制双亲委托机制,即当类被记载器加载时,首先会判断其是否已经被加载,若无则给父加载器加载,若再无则当前加载器加载。目的时为了让核心类...原创 2020-02-25 20:30:21 · 174 阅读 · 0 评论 -
java模块化编程的理解即学习笔记
一、java模块化概述1.jar为什么引入模块化,因为jdk8以前开发模式都是jar:简介:缺点:2.java模块化系统2.1模块化的三个原则:强封装性:一个模块必须能够对其他模块隐藏其部分代码 定义好良好的接口:模块必须向其他模块公开定义良好且稳定的接口 显式依赖:明确一个模块需要哪些模块的支持才能完成工作。2.2java9引入新的模块化系统Jig...原创 2020-02-14 19:33:43 · 3071 阅读 · 2 评论 -
Stream——Java
目录一、流的概述二、流的创建三、流的转换四、Optional类型五、流的计算结果六、流的应用一、流的概述定义:特点:pipelining:很多流的操作也是返回一个流Internal Iteration:流操作自动进行迭代,用户感知不到循环遍历。工作流程:流的创建 流转换为其他流的中间操作,可以包括多个步骤(惰性步骤) 流的计算结果。这...原创 2020-02-13 17:03:59 · 299 阅读 · 0 评论 -
Lambda表达式——java
目录一、Lambda表达式二、函数式接口三、方法引用四、Lambda表达式应用一、Lambda表达式传递方法/代码块(函数式程序语言设计),java8支持此项功能,通过java的Lambda表达式实现。通常表示一个匿名函数 Lambda表达可以当作参数,传递给其他高级函数.Lambda表达式定义:类似于匿名方法,一个没有名字的方法 参数,箭头,1/多...原创 2020-02-09 19:31:22 · 314 阅读 · 0 评论 -
嵌套类——java
目录一、嵌套类基础二、静态嵌套类:三、普通内部类:四、局部内部类五、匿名内部类:六、嵌套类对比:七、嵌套类的应用场景一、嵌套类基础嵌套类:一个类定义在别的类得内部。如://文件名B.java//A类在B类中定义,嵌套public class B { class A { }}静态嵌套类:即类前有static修饰符非静态嵌套类:又...原创 2020-02-08 22:40:32 · 286 阅读 · 0 评论 -
注解——Java
目录一、注解二、自带注解:三、自定义注解四、元注解五、注解的解析六、Runtime注解实现本质七、注解的应用一、注解注解:位于源代码中,使用其他工作进行处理的标签;注解用来修饰程序元素,但不会对修饰的对象有直接的影响;只有通过某种配套的工作才会对注解信息进行访问和处理。千万不要把注解和注释弄混淆!!!注解的主要用途:提供信息给编译器和IDE工具...原创 2020-02-08 18:39:28 · 141 阅读 · 0 评论 -
代理——java
目录一、代理模式和静态代理二、动态代理三、AOP编程一、代理模式和静态代理代理:为目标对象提供(包装)了一个代理,这个代理可以控制对目标对象的访问。静态代理:代理对象持有目标对象的句柄; 所有调用目标对象的方法,都调用代理对象的方法; 对每个方法,需要静态编码(理解简单,但代码繁琐)(所以当方法过多时最好使用动态代理) 一般代理对象和目标对象引用同一个接口...原创 2020-02-07 17:24:22 · 209 阅读 · 0 评论 -
反射学习笔记——java
目录一、常见/反射方法创建对象1.1静态编译1.2克隆方法1.3序列化方法1.4反射方法二、反射的关键类2.1获取Class和设定类型标识信息2.2关键类2.2.1获取变量2.2.2获取方法2.2.3获取构造方法2.2.4获取父类和父接口三、反射应用3.1数据库连接3.2动态扩充数组3.3动态执行方法3.4json数据转变为对象...原创 2020-02-06 16:06:48 · 365 阅读 · 0 评论 -
语法糖——JAVA
目录一、for-each二、枚举三、不定项参数四、静态导入五、自动装箱与拆箱六、多异常并列七、数值赋值优化八、接口方法九、try-with-resource十、resource-bundle文件加载十一、var类型十二、switch语法糖定义:为了让事务更加容易读和理解的程序语言被成为语法糖。一、for-eachfor语句:for(...原创 2020-02-05 19:54:59 · 423 阅读 · 0 评论 -
数据库编程——java
目录一、SQL常见语句:二、构建数据库操作步骤:三、SQL中字符串拼接四、事务处理五、数据库类型六、数据库连接池一、SQL常见语句:建表:create table t1(a int ,b varchar(20))); 插入:insert into t1(a,b) values(1,'abc'); 选择:select a from t1; 条件选择:select...原创 2020-02-02 20:29:41 · 192 阅读 · 0 评论 -
邮件编程——Java
一、提前准备:1.1准备第三方库依赖javax.mail <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api --> <dependency> <groupId>com.sun.mail</groupId> <artifactI...原创 2020-02-01 22:30:42 · 466 阅读 · 0 评论 -
BIO,NIO,AIO网络编程——java
一、BIO阻塞输入输出,传统得tcp和udp编程形式,服务端为每一个客户端之间建立专线连接。前面得信息处理会影响后面得信息处理。二、NIO非阻塞输入输出。一个线程同时管理多个连接,减少线程多的压力,不是真的异步操作。Selector:多路选择器 Channel:通道 Buffer:缓冲区服务端方法:1.建立服务端通道并且在制定端口等待连接...原创 2020-02-01 21:54:07 · 147 阅读 · 0 评论 -
高级文件操作之图片操作、统计图、验证码、一/二维码、docx、表格、pdf文件的操作
因为几乎用到的都是工具类,且不常用,所以就不做分析,用时查即可。目录1.图片操作2.验证码生成3.统计图生成:4.一/二维码的生成与解析4.1一维码4.2二维码4.3补充barcode4j解析一/二维码5.docx文件操作6.表格文件操作7.pdf文件操作1.图片操作package basic;import java.awt.Rectang...原创 2020-02-01 20:27:59 · 532 阅读 · 0 评论 -
TCP、UDP、HTTP网络编程——JAVA
目录一、TCP二、UDP三、HTTP编程四、补充httpClient类一、TCP面向链接的传输协议,可无差错的数据传输,双向字节流的传递服务端:1.首先定义接受信息的端口,并且进入阻塞状态,等待消息到来。ServerSocket ss=new ServerSocket(8001); //驻守在8001端口 Socket s=ss.a...原创 2020-02-01 19:56:59 · 351 阅读 · 0 评论 -
多线程之并发编程、线程安全数据结构——JAVA
一、Thread/Runnable/Thread组管理线程的集合,树形结构,大线程组可以包括小线程组,可以通过enumerate方法遍历组内进程执行操作,但是还是存在管理效率低,高度耦合,无法重用线程的缺点。1.创建线程组:ThreadGroup threadGroup = new ThreadGroup("Searcher");2.将线程绑定到线程组中方法(此处需注意线程用Runna...原创 2020-01-31 20:14:03 · 483 阅读 · 0 评论 -
XML解析
一、dom方法文档对象模型,方法擅长小规模的读和写处理方式是将整个的xml作为一个树结构的方法是读入内存来操作和解析,解析大量数据文件时会遇到内存泄漏及程序崩溃的风险。dom写方法:1.先通过此方法创建一个document节点DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); ...原创 2020-01-30 20:06:41 · 477 阅读 · 0 评论 -
字符编码,国际化编程、高级字符串
一、字符编码:文件的写入读出使用的编码必须统一否则会出现乱码。new OutputStreamWriter(fos, charset);new InputStreamReader(fos, charset); 编码方式charset保持一致。二、国际化编程一般是使用java.util.ResourceBundle用于加载语言_国家语言包java.util.Locale定...原创 2020-01-30 17:03:06 · 208 阅读 · 0 评论 -
多线程——JAVA
一、线程简介:一个程序可以包括多个子任务,可串/并行,每一个子任务可以称为一个线程,如果一个子任务阻塞,程序会将cpu调度另一个子任务进行工作,这样cpu就可以保留在本程序中,而不是像进程如果被阻塞cpu被调度到别的程序(进程)去。线程可以共享数据,线程通讯更加高效,线程更加轻量、容易切换,多个线程更加容易管理。二、线程构造1.线程继续Thread类,并且实现run方法。示例12....原创 2020-01-23 23:59:39 · 214 阅读 · 0 评论 -
使用native2ascii命令将汉字转化为Unicod的\uxxxx形式教程
打开记事本输入相关文字并且保存使用cmd命令转化 用windows+r 输入cmd打开命令框,转换工作目录至该文件的目录输入命令 native2ascii 文件 新文件名转换成功...原创 2020-01-15 23:26:02 · 305 阅读 · 1 评论 -
文件读写——JAVA
目录一、普通文件读文件:写文件:二、二进制文件读文件:写文件:三、压缩文件压缩文件:压缩文件夹:解压缩文件:解压缩文件夹:四、代码举例普通文件二进制文件压缩文件一、普通文件读文件:FileInputStream fis= new FileInputStream(路径);//节点类InputStreamReader isr=...原创 2020-01-15 22:55:48 · 384 阅读 · 0 评论 -
Properties——JAVA
Properties:同步,文件形式,数据量小,不常用举例:所见即所得import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;imp...原创 2020-01-15 20:13:01 · 166 阅读 · 0 评论 -
抽象类abstract、接口interface、静态static、final,单例模式,常量解读——JAVA
目录一、抽象类和接口二、static、final,单例模式,常量2.1static2.2单例模式:2.3final2.4常量三、private\default\protected\public一、抽象类和接口抽象类:一个类暂时由方法未实现,需要被定义未抽象类。类的继承:一个类仅仅只能继承一个类,抽象类也可以被其他类唯一继承。继承抽象类的类必须实现抽象类...原创 2020-01-15 19:30:17 · 680 阅读 · 0 评论 -
自定义对象中sort函数的使用——JAVA
方法一:在自定义对象中使用comparable接口,并且定义compareTo()方法。返回1 <返回-1 =返回0(若需要反序则>返回-1 <返回1 =返回0)方法二:新建Comparator类,在该类中实现compare()方法返回1 <返回-1 =返回0(若需要反序则>返回-1 <返回1 =返回0)然后再sort函数中调用Comparat...原创 2020-01-13 17:27:31 · 431 阅读 · 0 评论 -
Arrays方法和Collections方法的运用随记——JAVA
目录一、Arrays方法二、Collections一、Arrays方法补充:批量拷贝copyOfRang(a,b,c)拷贝数组a中b~c个元素注意:查找binarySearch()是调用二分查找方法,需要数组是有序的import java.util.Arrays;import java.util.Random;public class ArraysTest...原创 2020-01-13 17:18:10 · 239 阅读 · 0 评论 -
Hashtable,HashMap,Properties比较随记
Hashtable:同步,慢。数据量小HashMap:不支持同步,快,数据量大Properties:同步,文件形式,数据量小,不常用LInkedHashMap:基于双向链表的维持插入顺序的HashMapTreeMap:基于红黑树的Map,可以根据key的自然排需或者compareTo方法进行排序输出。常见方法:Hashtable也是无序的。import jav...原创 2020-01-13 15:56:00 · 217 阅读 · 0 评论 -
HashSet,LInkedHashSet,TreeSet比较与解读——JAVA
目录HashSet,LInkedHashSet,TreeSet比较与解读1.基本性质比较2.判定元素是否相同方法比较3.常见函数一、HashSet基本函数运用举例二、LinkedHashSet三、TreeSetHashSet,LInkedHashSet,TreeSet比较与解读1.基本性质比较HashSet:基于散列函数得集合,无序,可容纳null元素...原创 2020-01-13 14:46:19 · 353 阅读 · 0 评论 -
数字、字符串、时间、格式化类常用函数解读——JAVA
目录一、数字类1.1超大数浮点数1.2超大数整数1.3随机数:1.4格式化输出1.5浮点数和双精度二、字符串2.1String2.2正则表达式的简单说明:2.3可变字符串StringBuffer/StringBuilder三、时间类3.1Calendar四、格式化类4.1数字格式化DecimalFormat4.2字符串格式化...原创 2020-01-12 21:07:13 · 342 阅读 · 0 评论 -
常量、常量池——JAVA
一、常量常量的定义:不能修改的变量public final static 类型 名字 =赋值;(常量名字应该大写)特殊的常量:接口内定义的变量默认是常量。二、常量池public class A { public static void main(String[] args) { Integer n1 =128; Integer n2 =128; System....原创 2020-01-12 15:39:51 · 188 阅读 · 0 评论 -
jar文件的导出和导入
一、导出文件-导出导出-java-java文件自己选择所要导出的类和存储的位置成功二、导入文件-导入报错开始导入选中项目右键-属性添加外部jar包点击应用—关闭,报错解除...原创 2020-01-12 16:33:22 · 160 阅读 · 0 评论 -
不可变对象(Immutable Object)String类解读——JAVA
目录不可变对象(Immutable Object)字符串修改字符串的修改方法比较:不可变对象(Immutable Object)作用:一旦创建,这个对象的(状态/值)不能被更改了其内在成员变量的值就不能修改了。含有:String BigInteger BIgDecimal等等,后用String做例子详细说明。自己创建不可变对象的方法:字符串修改...原创 2020-01-12 16:07:14 · 346 阅读 · 0 评论