
java
文章平均质量分 88
梅子丨朱
孤独是一个人的狂欢
展开
-
数据结构之java实现搜索二叉树以及树遍历
搜索二叉树概念介绍搜索二叉树是一种方便检索的二叉树数据结构,其特点是左节点以及左子树上的点<根节点<右节点以及右子树结点的值,那么构建的搜索二叉树就是有序树。其结构为:搜索二叉树遍历搜索二叉树和二叉树类似,同样又前序遍历,中序遍历和后序遍历,其通通可以用递归的方式实现。java实现如下(其他语言亦是异曲同工):public class TowSearchTree { public static TreeNode tree = null; public st原创 2020-06-28 23:41:55 · 358 阅读 · 0 评论 -
Java,python以及等等的浮点数丢失精度的问题
看,那是什么?public class sixTowTow { public static void main(String[] args) { System.out.println(0.1+0.2); }}输出:其实关于浮点数精度丢失的问题,不光是java存在,是因为计算机对于数字运算的时候都需要转换成二进制的方式,整数都能转换成二进制。例如:59 /2=25 ......125/2=14 ...... 114/2=7 ......07/2原创 2020-06-23 09:16:23 · 669 阅读 · 0 评论 -
java虚拟机(JVM)运行时数据内存区域分配及其原理说明
java跨平台java是跨平台运行的编程语言,因为java有JVM虚拟机作为java语言的一个解释平台解释成字节码文件,计算机都可识别和运行。java文件后缀名一般是.java,在运行的时候会被编译成.class文件。编译过程如图所示:JVM运行时数据区域JVM在运行java文件时会自动分配不同的内存来存储不同的数据。各自为营,提供不同的数据服务,同时也有自己生成,执行,销毁的生命周期。java提供多线程机制,线程共享则是多线程可以共同维护一份数据的区域,线程隔离则是线程之间互不相关的.原创 2020-06-16 13:30:00 · 539 阅读 · 0 评论 -
java自己动手之插入排序实现
人面不知何处去,桃花依旧笑春风。import java.util.Arrays;public class insertSort { public static void main(String[] args) { int[] arr = {50,32,54,89,7,4,5,2,45,45,564,456,21,5,644,7,9,7,654,4,1}; for(int i=1;i<arr.length;i++){//外层循环列表所有元素原创 2020-05-11 13:48:59 · 223 阅读 · 0 评论 -
Java自己动手之选择排序实现
天青色等烟雨,而我在等你。import java.util.Arrays;public class chooseSort { public static void main(String[] args) { int[] arr = {50,32,54,89,7,4,5,2,45,45,564,456,21,5,644,7,9,7,654,4,1}; int temp = 0; int flag = 0; for(int i=0原创 2020-05-08 17:41:54 · 227 阅读 · 0 评论 -
java自己动手之冒泡排序兼优化
我寄愁心与明月,随风直到夜郎西。import java.util.Arrays;public class Bubbling { public static void main(String[] args) { boolean flag = true; int a = 0; int[] arr = {50,32,54,89,7,4,1...原创 2020-05-08 15:48:44 · 214 阅读 · 0 评论 -
Java并发编程之volatile和synchronized关键字
并发相关知识点单核处理器支持多线程:CPU通过给线程分配时间片切换执行,因为时间片比较短,所以看起来像是线程在同时执行。上下文切换:记住上个线程任务执行状态的同时切换到另一个线程执行,可以执行另一个线程任务后回到当前线程的执行状态继续执行。死锁:多个任务执行在互相等待对方作占有的资源,陷入一种互相循环等待的死循环。防止死锁:尽量保证一个线程一个锁一个资源。给锁加上时间限制,超...原创 2020-04-10 15:48:10 · 354 阅读 · 0 评论 -
从原理和应用正确理解java中接口和抽象类的区别
任何事物出现必定是有它自己的作用,要是作用原理都一样,那就没有出现的必要了。情景一:一般在处理后端业务逻辑的时候,往往在相同部分的业务逻辑我们需要包装,比如说请求报文头部,固定参数。但是往往也会有变化的参数。比如:像这种我们通常采用抽象类加上抽象方法,有不变,一级变化1次,二级变化n次。怎么写呢?抽象类不变写一次固定头,空缺出一级变化抽象方法利用继承实现二级代码写一次,在空缺...原创 2019-12-20 16:14:46 · 262 阅读 · 2 评论 -
2019 java基础必会
1.java重载和重写的区别?java重载指的是多个同名函数并且可以有数量不等,类型不一样的数据参数存在,并且返回值也可以不同。是java多态的一种表现。java重写是针对继承关系,父类实现和子类存在差异的时候,子类可以重写父类的方法,也是一种多态的表现,不过重写的方法名和参数,返回值必须和父类一样。2.String 和 StringBuffer、StringBuilder...原创 2019-11-15 17:03:06 · 233 阅读 · 0 评论 -
java自动装箱拆箱
什么是自动装箱拆箱基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。 一般我们要创建一个类的对象实例的时候,我们会这样: Class a = new Class(parameter); 当我们创建一个Integer对象时,却可以这样: Integer i = 100; (注...转载 2019-11-14 16:50:50 · 141 阅读 · 0 评论 -
java中实现对象的深度克隆
1.什么是深度拷贝和浅拷贝 python中有深度拷贝(也可以叫深度克隆)和浅拷贝,同样在java中很多时候需要深度拷贝对象,所谓的深度拷贝对象指的就是对于对象的所用数据及其全部进行copy一份,变成两个完全不相关的对象,而浅拷贝不拷贝对象所用的数据资源等,虽是两个不同的参数标识符,但是用的是同一个数据对象,也就是用‘==’,这是浅拷贝。也就是C语言中形容的指针指向的物...原创 2018-08-03 10:08:25 · 6021 阅读 · 1 评论 -
JAVA多线程三种实现方式
JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。1、继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表...转载 2019-08-30 17:34:03 · 263 阅读 · 0 评论