![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 93
包含JavaEE和JavaSe
SaMorri
学习树洞
展开
-
Java之NIO、主从Reactor
1. NIO 基本介绍① Java NIO 全称java non-blocking IO,是同步非阻塞的② NIO有三大核心部分: Channel(通道),Buffer(缓冲区), Selector(选择器)③ NIO是面向缓冲区编程的。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络④ Java NIO 的非阻塞模式,使一个线程从某通道发送请求或者读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都原创 2021-07-26 17:57:14 · 301 阅读 · 0 评论 -
进程间通信
进程间通信(Interprocess Communication, IPC):管道、FIFO、消息队列、信号量、共享存储、套接字1. 管道1.1 创建:#include <unistd.h> int pipe(int fd[2]);// 返回值:若成功,返回0,若出错,返回-1.// 函数调用成功返回r/w两个文件描述符。无需open,但需手动close。// 规定:fd[0] → r; fd[1] → w,就像0对应标准输入,1对应标准输出一样// 向管道文件读写数据其实是原创 2021-07-01 18:19:12 · 147 阅读 · 0 评论 -
为什么 BigDecimal 的 add 结果为 0
先看个例子: // 输出结果为 0 public void testBigDecimal() { BigDecimal decimal = BigDecimal.ZERO; String x = "5"; for (int i = 0; i < 3; i++) { decimal.add(new BigDecimal(x)); } System.out.println(decima原创 2020-12-16 15:35:51 · 3650 阅读 · 0 评论 -
Java——java8新特性(Lambda、函数式接口、方法引用、Stream API、Optional类)
1. Lambda1.1 概述① Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。② Lambda 表达式:->”操作符被称为箭头操作符。它将 Lambda 分为两个部分:左侧: 指定了 Lambda 表达式需要的形参列表;其的参数类型可以省略(类型推断);如果lambda形参列表只有一个参数,其一对()也可以省略右侧: 指定了 Lambda 体, 是抽象方法的实现逻辑,也即Lamb原创 2020-09-20 20:42:29 · 356 阅读 · 0 评论 -
Java——网络编程(TCP/IP三次握手、TCP编程、UDP编程)
1. 概述①网络编程的目的:直接或间接地通过网络协议与其它计算机实现数据交换,进行通讯②网络编程中有两个主要的问题:如何准确地定位网络的主机、定位主机上的特定的应用找到主机后如何可靠高效地进行数据传输2. 网络通信要素............原创 2020-08-14 10:55:06 · 357 阅读 · 0 评论 -
Java——I/O流(File类、节点流、缓冲流、转换流、对象流)
1. File类的使用1.1 概述java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用 输入/输出流。想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。File对象可以作为参数传递给流的构造器创建File类的实例//相对路径,相对于当前moduleF原创 2020-08-12 20:41:36 · 190 阅读 · 0 评论 -
Java——位运算符、逻辑运算符
1. 位运算符&、|、^运算的细节:2. 逻辑运算符其中,判断 &、|、^是位运算符还是逻辑运算符,依据是运算对象是int型还是boolean型。原创 2020-08-06 14:06:04 · 136 阅读 · 0 评论 -
IDEA、eclpise的快捷键
IDEA快速修复:ALT+ENTEREclipse:快速修复:CTRL+1(包括快速补全局部变量)内容辅助:Alt+/注释(java文件):CTRL+L注释(xml文件):CTRL + SHIFT + /原创 2020-06-01 16:23:38 · 114 阅读 · 0 评论 -
==操作符与equals方法的比较
== 运算符:可以使用在基本数据类型变量和引用数据类型变量中若比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)若比较的是引用数据类型变量:比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体补充: == 符号使用时,必须保证符号左右两边的变量类型一致。equals( )方法:是一个方法,而非运算符只能适用于引用数据类型根据Object类中equals()的定义,说明Object类中定义的equals()和==的作用是相同的:比较两个对象的地址值是原创 2020-06-04 11:07:57 · 165 阅读 · 0 评论 -
Java——注解 (Annotation)的理解
1. 概述从 JDK 5.0 开始, Java 增加了对元数据(MetaData) 的支持, 即Annotation(注解)Annotation 其实就是代码里的特殊标记, 这些标记可以在编译,类加载,运行时被读取,,并执行相应的处理。通过使用Annotation, 程序员 可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证 或者进行部署Annotation 可以像修饰符一样被使用,可用于修饰包、类、 构造器、方法,、成员变量、参原创 2020-06-18 10:50:52 · 255 阅读 · 0 评论 -
java——变量分类(局部变量、成员变量)
按被声明的位置划分变量的类型局部变量:方法和语句块内定义的的变量。(在定义局部变量时,必须对其进行初始化。)成员变量:方法外部,类的内部定义的变量。(成员变量可以是java语言中任何一种数据类型(包括基本类型和引用类型))类由成员变量和成员方法构成。而成员变量又分为实例变量和类变量(被static修饰的变量)。...原创 2020-06-11 20:11:05 · 166 阅读 · 0 评论 -
Java——面向对象复习(static、final、代码块、抽象类、接口)
1. static使用范围:在Java类中,可用static修饰属性、方法、代码块、内部类被修饰后的成员具备以下特点:随着类的加载而加载优先于对象存在修饰的成员,被所有对象所共享访问权限允许时,可不创建对象,直接被类调用类只会加载一次,静态变量在内存中也只会存在一份——存在方法区的静态域中。...原创 2020-06-12 21:52:16 · 202 阅读 · 0 评论 -
Java——集合框架Map(HashMap、LinkedHashMap、TreeMap、Collections等)
概述Map的实现类的结构Map:双列数据,存储key-value对的数据;key——无序的、不可重复的;value——无序的、可重复的;一个键值对:key-value构成了一个无序的、不可重复的Entry对象。value所在的类要重写equals()HashMap:作为Map的主要实现类;线程不安全的,效率高;存储null的key和value;key所在的类要重写equals()和hashCode()LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历原因:在原有的原创 2020-06-14 19:37:29 · 181 阅读 · 0 评论 -
Java——常用类:比较器(Comparable、Comparator)、System
比较器Java中的对象,正常情况下,只能进行比较:== 或 != 。不能使用 > 或 < 的但在实际开发场景中,常常需要对多个对象进行排序(例如淘宝的商品排序)。言外之意,就需要比较对象的大小。解决方法:使用两个接口中的任何一个:Comparable 或 ComparatorComparable接口Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称 为类的自然排序Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称 为类的自然排原创 2020-06-10 15:15:52 · 644 阅读 · 0 评论 -
Java——对方法参数的值传递机制的理解
Java的实参值如何传入方法呢? Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本 (复制品)传入方法内,而参数本身不受影响。形参是基本数据类型:将实参基本数据类型变量的“数据值”传递给形参形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参...原创 2020-06-10 11:39:12 · 132 阅读 · 0 评论 -
Java——反射机制的理解(运行时类、ClassLoader、动态代理)
概述(1)Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期 借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内 部属性及方法(2)加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可 以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射动态语言 vs 静态语言(1)动态语言是一类在运行时可以改变其结构原创 2020-06-12 23:23:15 · 840 阅读 · 0 评论 -
java多线程——生产者/消费者问题的实现
生产者/消费者问题生产者(Productor)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品;店员一次只能持有固定数量的产品(比如:20);如果生产者试图生产更多的产品,店员会叫生产者停一下;如果店中有空位放产品了,再通知生产者继续生产;如果店中没有产品了,店员会告诉消费者等一下;如果店中有产品了,再通知消费者来取走产品。这里可能出现两个问题:生产者比消费者快时,消费者会漏掉一些数据没有取到。消费者比生产者快时,消费者会取相同的数据。class Clerk {原创 2020-06-07 19:03:27 · 377 阅读 · 0 评论 -
Java——集合框架Collection(List、Set)
1. 集合框架概述(1)集合、数组都是对多个数据进行存储操作的结构,简称Java容器,它可以动态地把多个对象的引用放入容器中。注:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt、.jpg、.avi,数据库中)(2) 数组在存储多个数据方面的特点:一旦初始化以后,其长度就确定了。数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。例如:String[ ] arr;int[ ] arr1;Object[ ] arr2;(3)数组在存储多个数据方面的缺原创 2020-06-10 20:11:29 · 310 阅读 · 0 评论 -
Java——面向对象 之 成员内部类、局部内部类
内部类概念当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内 部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使 用内部类在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类。内部类的分类:成员内部类(静态、非静态)、局部内部类(方法内、代码块内、构造器内)、匿名内部类成员内部类:(1)一方面,作为外部类的成员:调用外部类的结构可以被static修饰可以被4种不同的权限修饰(public、protected、default、原创 2020-06-05 16:20:57 · 104 阅读 · 0 评论 -
Java四种 创建线程方式
1. 概念(1)程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。(2)进程(process)是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期如:运行中的QQ,运行中的MP3播放器程序是静态的,进程是动态的进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域(3)线程(thread),进程可进一步细化为线程,是一个程序内部的一条执行路径。若一个进程同一时间并行执原创 2020-06-06 19:57:01 · 330 阅读 · 0 评论 -
java——String类(String、 StringBuffer、StringBuilder)
String类1. 概述String类:代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作 为此类的实例实现。String是一个final类,代表不可变的字符序列(声明为final char[ ] value),它们的值在创建之后不能更改。字符串是常量,用双引号引起来表示。String对象的字符内容是存储在一个字符数组value[]中的。String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小原创 2020-06-10 11:34:42 · 303 阅读 · 0 评论 -
java中的基本数据类型存放位置
基本数据类型是放在栈中还是放在堆中,取决于基本类型声明的位置。一. 在方法中声明的变量,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束,这就局部变量只能在方法中有效的原因在方法中声明的变量可以是基本类型的变量,也可以是引用类型的变量。当声明是基本类型的变量的时,其变量名及值(变量名及值是两个概念)是放在方法栈中当声明的是引用变量时,所声明的变量(该变量实际上转载 2020-06-03 16:44:33 · 579 阅读 · 0 评论 -
Java中数组(Array)
1. 数组(Array)数组是在内存中存储相同数据类型的连续的空间声明一个数组就是在内存空间中划出一串连续的空间数组名代表的是连续空间的首地址,通过首地址可以依次访问数组所有元素数组的使用: 数组长度一旦声明,不可改变不可追加。...原创 2020-06-03 18:33:11 · 316 阅读 · 0 评论 -
java基本类型、引用类型、包装类及与String的转换
java基本类型与引用类型基本数据类型:java中一共分为8种基本数据类型:byte、short、int、long、float、double、char、boolean。其中byte、short、int、long是整型。float、double是浮点型,char是字符型,boolean是布尔型。引用类型:java为每种基本类型都提供了对应的封装类型,分别为:Byte、Short、Integer、Long、Float、Double、Character、Boolean。引用类型是一种对象类型,原创 2020-06-03 16:09:00 · 313 阅读 · 0 评论