![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java学习
文章平均质量分 56
花落文心
java开发,学习中...
展开
-
jvm 使用 jvisualvm 进行远程监控配置的启动参数
【代码】jvm 使用 jvisualvm 进行远程监控配置的启动参数。原创 2023-07-30 11:24:58 · 255 阅读 · 0 评论 -
java关于方法引用的补充(::)
补充关于方法引用System.out.println()这是一个很普通的打印方法,我们日常使用,用来单行打印一些参数内容。System.out::println通过::可以看出,使用了方法引用,java8的新特性。查看System.out的代码public final static PrintStream out = null;查看printStream类的代码public void println() { newLine();}所以,调用流程应该是System类 ->原创 2021-02-24 18:02:10 · 68 阅读 · 1 评论 -
java关于JDBC
关于JDBC什么是 JDBCJDBC是一种用于执行 sql 语句的 java api。可以为多种关系型数据库提供同一访问,它由一组用 java 语言编写的类和接口组成。JDBC 提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。关于数据库驱动我们安装好数据库后,我们的应用程序也不能直接连接使用数据库,必须要使用相应的数据库驱动程序。其实就是数据库厂商的 JDBC 接口实现。在java中,这个驱动是 mysql-connector-java-8.0.16.jar,原创 2021-02-24 11:24:40 · 127 阅读 · 0 评论 -
java8 Stream
Java8 StreamJava8 Api 添加了一个新的抽象,称为流Stream,可以让你以声明的方式处理数据Stream 使用一种类似用 SQL语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。这种风格将要处理的元素集合看做流,流在管道中传输,并且可以在管道的节点上进行处理,如筛选、排序、聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。[外链原创 2021-02-23 15:15:43 · 72 阅读 · 0 评论 -
java8 新特性 方法引用(::)
java8 新特性2方法引用我们用Lambda表达式来实现匿名方法,但有些时候我们使用Lambda表达式仅仅是调用一些已经存在的方法,处理调用动作外,没有其他动作。这种情况下我们更倾向于通过方法名来调用它,而Lambda表达式可以帮我们实现这一要求。它使得Lambda在调用那些已经拥有方法名的方法的代码更加方便简洁。方法引用可以理解为Lambda表达式的另一种表现形式。方法的引用使用一对冒号::理解方法引用的根本,是对Lambda 表达式的进一步简化和省略。方法引用的分类静态方法引用 类原创 2021-02-22 15:33:44 · 75 阅读 · 0 评论 -
java8 新特性 Lambda
java8 新特性主要方面Lambda 表达式:Lambda允许把函数作为一个方法的参数(函数作为参数传递到方法中)方法引用:提供了非常有用的语法,可以直接引用已有java类或对象(实例)的方法或构造器。与 Lambda联合使用,方法引用可以使语言的构造更加紧凑简洁,减少冗余代码。默认方法:默认方法就是一个在接口里有了一个实现的方法。Date Time Api:加强对日期和时间的处理Optional类:该类已经是java8类库中的一部分,主要解决空指针异常。关于 Lambda 表达式L原创 2021-02-22 15:33:00 · 60 阅读 · 0 评论 -
java 多线程编程
java 多线程编程概念java 给多线程提供了内置的支持。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但是多线程使用了更小的资源开销。关于进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,知道所有的非守护线程都结束运行后才能结束。多线程可以满足程序高效率运行充分利用cpu的目的。一个线程的生命周期新建:使用 new关键字和原创 2021-02-20 15:41:22 · 92 阅读 · 0 评论 -
java 简单理解 BIO、NIO、AIO编程
简单理解 BIO、NIO、AIO编程同步与异步同步和异步是针对应用程序与内核的交互而言的。同步指的是用户进程触发 IO操作并等待或者轮询去查看 IO操作是否就绪,而异步是指用户进程触发 IO操作以后便开始做自己的事情,而当 IO操作已经完成的时候会得到 IO完成的通知。简而言之,同步会专注执行这一操作,而异步则只关注开头和结果,中间交由系统完成,不在关注。阻塞与非阻塞阻塞和非阻塞是针对进程在访问数据的时候,根据 IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作方法的实现方式,原创 2021-02-19 22:01:45 · 88 阅读 · 0 评论 -
java 网络编程
java 网络编程概念网络编程是指编写运行在多个设备的程序,这些设备通过网络连接起来。java.net包中的api类和接口,提供了低层次的通信细节,可以直接调用。其中提供了两种常见的网络协议的支持:TCP通信:这是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP层是位于IP层上、应用层下的中间层。通常用于互联网协议,被称为 TCP/IP 。UDP通信:一个无连接的协议。提供了应用程序之间要发送数据的数据报。由于缺乏可靠性,所有应用程序通常必须容许一些丢失、错误、重复的数据包。一般用原创 2021-02-19 16:07:11 · 105 阅读 · 0 评论 -
java 关于文档注释
关于文档注释java中的文档注释,除了可以在日常开发中方便查看具体功能外,也可以通过工具抽取,生成具体文档,集中整理。标签列表标签描述@author作者@deprecated指明一个过期的类或成员{@docRoot}指明当前文档根目录的路径@exception标志一个类抛出的异常{@inheritDoc}从直接父类继承的注释{@link}插入一个到另一个主题的链接{@linkplain}插入一个到另一个主题的链接,但是该链接显示原创 2021-02-16 11:05:38 · 105 阅读 · 0 评论 -
java mysql 数据库连接
mysql 数据库连接这里主要是使用 JDBC 连接mysql 数据库驱动包下载地址:http://dev.mysql.com/downloads/connector/j/请注意驱动包的版本要与mysql的版本一致。在mysql8.0以上的版本,数据库连接会存在不同。使用需要将我们下载的 mysql 驱动包导入到项目中,且mysql已开启。加载驱动和连接数据库方式如下:Class.forName("com.mysql.cj.jdbc.Driver");conn = DriverMana原创 2021-02-16 10:36:23 · 63 阅读 · 0 评论 -
java序列化
java序列化java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。将序列化对象写入文件后,可以从文件中读取出来,并且对它进行反序列化,也就是说,对象的类型信息、对象的数据,还有对象中数据类型可以用来在内存中新建对象。整个过程都是jvm独立的,在一个平台中序列化的对象可以在另一个平台反序列化恢复该对象。类 ObjectInputStream 和 ObjectOutputStream 是高层次的数原创 2021-02-15 21:25:30 · 53 阅读 · 0 评论 -
java 泛型
泛型概念泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型方法我们可以声明一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译时适当的处理每一个方法调用。规则:所有泛型方法声明都有一个类型参数声明部分(尖括号隔开),该类型参数声明部分在方法返回类型之前。每个类型参数声明部分包含一个或多个类型参数,参数间逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指原创 2021-02-15 20:29:14 · 49 阅读 · 0 评论 -
java Object类
Object类##概念Object类是所有类的父类,也就是说java的所有类都继承了Object,子类可以使用Object的所有方法。Object类位于 java.lang 包中,编译时自动导入。方法列表方法描述protected Object clone()创建并返回一个对象的拷贝boolean equals(Object obj)比较两个对象是否相等Class<?> getClass()获取对象的运行时对象的类protected vo原创 2021-02-15 12:59:34 · 50 阅读 · 0 评论 -
java Iterator 迭代器
Iterator 迭代器java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。Iterator 是 java 迭代器最简单的实现,ListIterator 是 Collection Api中的接口,它扩展了 Iterator接口。相关操作迭代器的基本操作包括 next、hasNext、remove调用 it.next() 返回迭代器的下一个元素,并更新迭代器的状态调用 it.hasNext() 用于检测集原创 2021-02-15 12:42:58 · 43 阅读 · 0 评论 -
java HashSet
HashSet基于 HashMap 来实现,是一个不允许有重复元素的集合。允许有null值。HashSet是无序的,不会记录插入顺序。HashSet不是线程安全的,如果多线程尝试同时修改HashSet,最终结果是不确定的,必须在多线程访问时显式同步对 HashSet 的并发访问。HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。创建HashSet<String> hs = new HashSet<String>();添加元素hs.add原创 2021-02-14 13:41:57 · 192 阅读 · 2 评论 -
java HashMap
HashMapHashMap 是一个散列表,它存储的内容为键值对映射。它实现了Map接口,根据键的HashCode值来存储数据,具有很快的访问速度,最多允许一条数据的键为 null,不支持线程同步。HashMap是无序的,即不会记录插入顺序。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vmsD1Klk-1613276579289)(HashMap.png)]HashMap 的 value 值不做强制要求。HashMap 中的元素实际上是对象,一些常见的基础类原创 2021-02-14 12:23:29 · 96 阅读 · 0 评论 -
java LinkedList
LinkedList概念链表是一个常见的基础数据类型,是一种线性表,但并不会按线性的顺序存储数据,而是在每一个节点存储下一个节点的地址。java 中,LinkedList类似于 ArrayList,是一种常用的数据容器。与ArrayList相比,LinkedList增加和删除元素的效率更高,但是查找和修改元素内容的效率较低。适用范围适用 ArrayList频繁访问元素中的某一个元素只需要在列表末尾进行添加和删除元素操作。适用 LinkedList只需要通过循环迭代来访问列表中的某原创 2021-02-14 11:36:10 · 79 阅读 · 0 评论 -
java ArrayList
ArrayListArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它没有长度大小的限制。我们可以随意增加或删除元素。ArrayList 继承了 AbstractList,并实现了List接口。ArrayList 类位于 java.util 包内。import java.util.ArrayList;ArrayList<E> objectName = new ArrayList<>(); // 初始化添加元素使用add()方法,添加元素到Arr原创 2021-02-14 10:50:19 · 80 阅读 · 0 评论 -
java集合框架
集合框架框架结构概念接口:是代表集合的抽象数据类型。如 Collection、List、Set、Map等。之所以定义多个接口,是为了以不同的方式操作集合对象。实现(类):是集合接口的具体实现。从本质上讲,他们是可重复使用的数据结构,如 ArrayList、LinkedList、HashSet、HashMap。算法:是实现集合接口的对象里的方法执行的一些有用的结算。如 搜索和排序。这些方法被称为多态,因为相同的方法可以在相似的接口上有不同的实现。除了集合,框架也定义了几个Map接口和类,Ma原创 2021-02-13 22:22:30 · 47 阅读 · 0 评论 -
java包(package)
关于包(package)作用把功能相似或相关的类或接口组织在同一个包中,方便查找使用包也限定访问权限,拥有包访问权限的类才能访问某个包中的类。如同文件夹一样,包也可以采用树形结构的存储方法。java 使用包这种机制是为了防止命名冲突,访问控制,提供搜索和定位类、接口、枚举、注释等。import 关键字为了能够使用某一个包中的成员,我们需要在 java 程序中明确导入该包。该语句应该位于package语句之前,所有类的定义之前,可以有多条。import java.io.*;packag原创 2021-02-09 16:31:37 · 75 阅读 · 0 评论 -
java枚举(enum)
枚举(enum)枚举是一种特殊的类,一般表示一组常量,比如一年的四季,一个的12个月,一周的七天等。java枚举使用关键字 enum 来定义,各个常量使用逗号,来分隔实例enum Color{ RED,GREEN,BLUE;}public class Test{ public static void main(String[] args){ Color c1 = Color.RED; System.out.print(c1); }}每个枚举都是通过 Class 在内部实原创 2021-02-08 17:42:01 · 115 阅读 · 0 评论 -
java接口
java接口接口在java中是一个抽象类型,是抽象方法的集合。通常使用 interface声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。值的注意的是接口并不是类,编写接口的方式与类很相似,但他们是不同的概念。接口包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。接口不能被实例化,但是可以被实现。一个实现接口的类,必须实现接口中描述的所有方法,否则就必须声明为抽象类。另外在java中,接口类型可以用来声明一个变量,他们可以成为一个空指针,或被绑定在一个以此接原创 2021-02-08 16:15:10 · 813 阅读 · 0 评论 -
java抽象类
抽象类在面向对象中,并不是所有类都是用来描绘对象的,如果一类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类不能实例化对象,但类的其他功能他都有。因为不能实例化对象,所以抽象类必须被继承才能使用。在java中 抽象类表示一种继承关系。一个类可以继承一个抽象类,而一个类却可以实现多个接口。抽象类在java中,使用 abstract class来定义抽象类。public abstract class Employee{ private String name; priva原创 2021-02-08 15:33:41 · 130 阅读 · 0 评论 -
java重写与重载
重写与重载重写(Override)重写是子类对父类允许访问的方法的实现过程进行重新编写,返回值和参数不能变,即外壳不变,核心重写。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如,父类方法抛出异常为 IOException异常,则重写方法不能抛出 Exception异常这种父类异常。方法的重写规则参数列表与被重写方法的参数列表必须相同返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类。访问权限不能比父类中被重写的方法的访问权限更低。例如:父类方法被原创 2021-02-07 14:19:08 · 80 阅读 · 0 评论 -
java面向对象的三个特性(封装、继承、多态)
面向对象的三个特性(封装、继承、多态)封装封装是指一种将抽象性函数式接口的实现细节包装、隐藏起来的方法。封装可以防止该类的代码和数据被外部定义的代码随机访问到。要访问该类的代码和数据必须要通过严格的接口控制。封装主要功能在于我们能修改自己的实现代码,而不是修改那些我们调用的程序片段。适当的封装可以让程序代码更容易理解和维护,提高了程序代码的安全性。优点:良好的封装能够减少耦合类内部的结构可以自由修改隐藏实现细节和信息可以精细操作成员变量实现封装的步骤修改属性的可见性来限制对属原创 2021-02-07 12:08:25 · 114 阅读 · 0 评论 -
java字符文件流
字符文件流java.io 包几乎包含了所有操作输入、输出需要的类。读取控制台输入BufferedReader br = new BufferedReader(new InputStreamReader(System.in));从控制台读取多字符输入从BufferedReader对象读取一个字符要使用 read() 方法。int read() throws IOException每次调用 read 方法,它从输入流读取一个字符并作为 整型返回,结束时返回-1.从控制台读取字符串使用Buf原创 2021-02-04 18:08:25 · 780 阅读 · 0 评论 -
java学习笔记 day17
正则表达式正则表达式定义了字符串的模式。可以用来搜索、编辑或处理文本。正则表达式并不限于某一种语言,但是在每种语言中都存在细微差别。按需要点击java 正则表达式原创 2021-02-04 16:57:58 · 65 阅读 · 0 评论 -
java日期时间
日期时间获取当前时间日期Date date = new Date();System.out.print(date.toString());使用 SimpleDateFormat 格式化日期Date date = new Date();SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");System.out.print(ft.format(date));日期和时间的格式化编码字母描述示例原创 2021-02-04 16:51:55 · 126 阅读 · 0 评论 -
java异常
异常异常的分类检查性异常:在编译时出现的异常运行时异常:在编译时没有问题,但是在运行时出现了的异常错误:错误不是异常,而是脱离程序员控制的问题,如栈溢出。Exception 类的层次java内置异常类java定义了一些异常类在 java.lang 标准包中。如ArithmeticException、ArrayIndexOutOfBoundsException等等。异常方法下面是 Throwable 类的主要方法方法描述String getMessage()返回原创 2021-02-02 21:12:32 · 66 阅读 · 0 评论 -
java Scanner 类
Scanner 类我们可以通过 Scanner 类来获取用户输入。初始化Scanner sc = new Scanner(System.in);next() 与 nextLine()next()使用Scanner scan = new Scanner(System.in);String str1 = scan.next();System.out.println("输入的数据为:" + str1);scan.close();nextLine()使用Scanner scan = new原创 2021-02-02 18:54:19 · 56 阅读 · 0 评论 -
java方法
方法方法的命名规则第一个单词小写字母开头,其他单词首字母大写,不使用连接符下划线可能出现在 Junit测试方法名称中用以分隔名称的逻辑组件。语法修饰符 返回值类型 方法名( 参数类型 参数名 ){ // 方法体 return 返回值;}方法调用根据是否有返回值分为2种。int larger = max(30,40);System.out.println("hello");传参在调用一个方法时,如果该方法在声明时存在参数,那么在调用时,就要将参数传入进去,并且传参的顺原创 2021-02-02 18:29:26 · 95 阅读 · 1 评论 -
java数组
数组声明数组变量dataType[] arrayName;int[] id;创建数组dataType[] arrayName = new dataType[arraySize];int[] num = new num[10];int[] array = {1,2,3,4};通过数组下标访问数组内成员,从0开始。数组处理可以使用for循环对数组进行遍历,通过length属性控制次数。 for(int i=0;i<array.length;i++){ // 代码原创 2021-02-02 17:59:58 · 48 阅读 · 0 评论 -
java StringBuffer 和 StringBuilder 类
StringBuffer 和 StringBuilder 类当对字符串进行操作时,需要使用StringBuffer和StringBuilder类。这两个类的对象能够进行多次修改,且不会产生新对象。在使用 StringBuffer 时,每次都会对StringBuffer对象本身进行操作,而不是生成新的对象,所以在需要对字符串进行修改时,推荐使用StringBuffer。StringBuffer sb = new StringBuffer("hello");StringBuilder与Stri原创 2021-02-01 17:07:46 · 89 阅读 · 0 评论 -
java String类
String类字符串的创建String s1 = "hello";String s2 = s1; // 相同引用直接赋值的字符串存放在公共池String s3 = new String("hello");new 创建的字符串对象存放在堆上。需要注意的是,String对象的值是不可变的。如果要对字符串做很多修改,要使用 StringBuffer & StringBuilder 类。字符串的长度int num = str.length();// 返回int类型的字符串长度值。原创 2021-01-30 19:05:13 · 44 阅读 · 0 评论 -
java Character类
Character类用于对单个字符进行操作,在对象中包装了一个基础类型 char 的值在将一个char类型的参数传给一个需要Character类型参数的方法时,编译器会自动将char类型参数转为Character对象,称为装箱,反过来称为拆箱。转义序列常用的有:\'、\n、\"、\\方法列表方法描述isLetter()是否是一个字母isDigit()是否是一个数字字符isWhitespace()是否是一个空白字符isUpperCase()是否原创 2021-01-30 18:08:39 · 46 阅读 · 0 评论 -
java Number & Math 类
Number & Math 类包装类在需要使用数字时,通常使用内置数据类型,但是在实际开发过程中,我们经常碰到需要使用对象的情况。为此,java为每个内置数据类型提供了对应的包装类。所有包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类Number的子类。包装类基础数据类型IntegerintBooleanbooleanBytebyteShortshortLonglongCharacte原创 2021-01-30 17:58:51 · 79 阅读 · 0 评论 -
java分支语句
分支语句ifif(表达式){ 代码}在表达式为true时,执行代码,否则跳过if(表达式) 单行代码if…elseif(表达式){ 代码1}else{ 代码2}表达式为true,执行代码1,为false,跳转到else,执行代码2if…else if … elseif(条件){ 代码}else if(条件){ 代码}else{ 代码}从上而下依次判断,当条件满足时,执行对应代码块,并结束if语句,如果没有条件为true时,执行else代码块的代码。if嵌原创 2021-01-29 18:13:29 · 76 阅读 · 0 评论 -
java循环结构
循环结构while循环while(条件){ 代码}当条件为 ture时执行代码do…while循环do{ 代码}while(条件)先执行代码,然后判断条件,如果为true,则循环执行,否则结束。for循环for(初始化 ; 布尔表达式 ; 更新){ 代码}当布尔表达式为 false时,结束循环。增强for循环for(声明语句 : 表达式){ 代码}示例public class Test { public static void main(String原创 2021-01-29 18:00:16 · 78 阅读 · 0 评论 -
java运算符
运算符算术运算符+、 -、 *、 /、 %、 ++、 --关系运算符==、!=、>、<、>=、<=位运算符&:二进制与,同1为1,否则为0| :二进制或,同0位0,否则为1^:二进制位相同,则为0,否则为1~:取反,二进制位翻转,0变1,1变0<<:左移>>:右移>>>:右移补零,向右移动,空位补零逻辑运算&&、||、!在进行与运算时,如果第一个为 false,则不会原创 2021-01-29 17:30:09 · 47 阅读 · 1 评论