![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 85
AI_drag0n
这个作者很懒,什么都没留下…
展开
-
排序算法(六):归并排序算法及其优化分析
1.归并排序算法将两个有序数列合并成一个有序数列称为归并......归并排序算法:将无序数组不断的等分成两份,直到分割成单位元素之后,再利用归并的思想,从下往上不断合并成有序数组的过程。主要分为两种:自底向上的归并排序和自上向下的归并排序。注意:归并排序过程中,需要开辟一个相同大小的临时空间来辅助归并排序的进行。对于两个有序数组是怎么合并到一起的呢?我们来看下面的过程:原始数组...原创 2019-04-03 23:18:11 · 453 阅读 · 0 评论 -
JAVA常用类(十一):File类
目录File类:构造方法:成员方法:过滤器的使用:高级获取遍历文件:递归遍历文件的操作:File类:文件和目录(文件夹)路径名的抽象表示形式。 ---------- 仅仅是一个路径的表示,不代码具体的事物一定是存在的。( IO流的基础 )文件:本质上存储二进制码。.txt表示以文本来翻译,后缀名表示选择哪种解析方式。构造方法:public File(S...原创 2018-12-18 19:39:55 · 177 阅读 · 0 评论 -
JAVA常用特性:反射机制
反射:反射的本质就是通过一段字符串得到一个类的字节码文件,随后可以进行属性,方法等的操作。需要依赖Class工具类,反射可以用来解耦合;反射可以用来进行功能的拓展。配置文件的读取:1.通过类加载器2.通过创建文件夹的方式 ................. ?129.如何获取一个类的字节码对象得到字节码对象clazz的方式有三种:1).对象名.getC...原创 2020-01-30 18:50:31 · 191 阅读 · 0 评论 -
JAVA常用类(二):String类、StringBuffer类和StringBuilder类的使用
String类、StringBuffer类和StringBuilder类StringBuffer类与StringBuilder类:1. StringBuilder类是线程不安全的(效率高);StringBuffer类是线程安全的(效率较低);2. StringBuffer类与StringBuilder类内的方法时一样的,作用一样,但线程效果不一样。String类与StringBu...原创 2019-04-10 23:19:07 · 292 阅读 · 0 评论 -
JAVA常用特性:异常处理
目录异常:异常的处理方式: 异常的常用方法:自定义异常:throw的用法异常的注意事项:异常:将程序的出现的问题封装了类,就形成了异常类。Throwable抽象类是异常类的根类:Error类和Exception类是Throwable抽象类的子类。Throwable抽象类: Error:(程序出现的错误,不能使用程序处理,一般无需程序员关注)...原创 2018-12-17 20:41:51 · 207 阅读 · 0 评论 -
JAVA常用类(十):Collections类(与Arrays类对比)
目录Collections类常用成员方法:比较器的使用:源码分析:Collections类Collection和Collections区别: Collection: 是单列集合的根接口 Collections: 集合的工具类集合转数组:集合对象.toArray() -------------返回一个Object[ ]数组...原创 2018-12-17 19:36:09 · 351 阅读 · 0 评论 -
JAVA常用类(一):Object类相关方法的说明
API的概念:API:Application Programming Interface,应用程序编程接口。本质是:程序的说明书是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。比如:手机上的语音识别/面部识别都是使用已经定义好的API来进行识别的。Java API:Java提供给我们使用的类,这些类将...原创 2019-04-10 23:17:27 · 241 阅读 · 0 评论 -
JAVA多线程:Thread类与Runnable类
目录基础概念:JAVA中的多线程:Thread类:Runnable接口:线程池:线程的安全问题:锁与死锁:定时器与定时任务:基础概念:线程:Thread,进程中的一个执行路径/执行单元。进程:process,一个程序或软件的运行。本质是程序在内存中分配的空间,但一个软件可能有多个进程。eg:进程中至少有一个线程,同时可以有多个线程,即多线程程序。...原创 2018-12-21 21:13:29 · 361 阅读 · 0 评论 -
JAVA常用特性:泛型基础
目录泛型:泛型在类/接口中的使用:泛型方法的定义:泛型通配符的使用:泛型:早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题。泛型可以修饰类、接口、以及泛型方法。泛型类型必须是引用类型泛型在类/接口中的使用:public class GenericDemo01 {...原创 2018-12-17 12:26:59 · 327 阅读 · 0 评论 -
排序算法(五):快速排序及其优化分析
1.快速排序算法快速排序算法:基于分治策略,通过 分类 + 递归 的方式对数组进行快速排序,一般选择每一部分的第一个元素作为基准元素。快速排序之所以快速,是因为相对于冒泡排序中对相邻元素进行比较,快速排序是设置基准值,通过跳跃式的交换将小于基准值和大于基准值的元素分成两部分,然后递归的重复该过程,直到排序结束。注:快速排序的算法有很多,我一直不求甚解。最后发现 挖坑 + 递归 的方式是比...原创 2019-04-02 20:32:16 · 510 阅读 · 0 评论 -
排序算法(四):希尔排序及其优化分析
目录1.希尔排序2.时间复杂度分析3.空间复杂度分析1.希尔排序希尔排序(Shell Sort):是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序。希尔排序是不稳定的算法,它满足稳定算法的定义。对于相同的两个数,可能由于分在不同的组中而导致它们的顺序发生变化。算法稳定性 -- 假设在数列中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面;并...原创 2019-03-27 15:27:57 · 647 阅读 · 0 评论 -
排序算法(一):选择排序算法及其优化分析
目录1.选择排序算法:2.选择排序的优化分析3.时间复杂度分析:3.1优化前3.2优化后4.空间复杂度分析:1.选择排序算法:选择排序是不稳定的算法:选择排序是给每个位置选择当前元素最小的,比如给第一个位置选择最小的,在剩余元素里面给第二个元素选择第二小的,依次类推,直到第n-1个元素,第n个元素不用选择了,因为只剩下它一个最大的元素了。那么,在一趟选择,如果一个元...原创 2018-12-12 13:15:26 · 413 阅读 · 0 评论 -
排序算法(二):冒泡排序算法及其优化分析
目录1.冒泡排序算法:2.算法优化分析:2.1优化外层循环2.2优化内层循环2.3同时优化内层和外层循环3.时间复杂度分析:3.1优化前3.2优化后4.空间复杂度分析:1.冒泡排序算法:原理:以N个元素数组的升序为例。相邻元素两两比较,大的往后放,第一轮完毕,最大值出现在了最大索引处,即数组最右侧。每一轮都从头开始执行,总共执行 N-1 轮。代码书写...原创 2018-12-12 13:37:28 · 638 阅读 · 2 评论 -
排序算法(三):直接插入排序算法及其优化分析
目录1.直接插入排序:2.算法优化分析:3.时间复杂度分析:4.空间复杂度分析:1.直接插入排序:插入排序:就是将一个元素插入到一个排好序的有序数组中。具体怎么理解呢?对于一个包含N个数组的元素,他会从 [0,1] 区间开始插入排序,即将 1 插入到数组 {2} 的合适位置;接着从 [0,2] 区间开始排序,即将 4 插入到数组 {1,2}的合适位置。依次类推,总共执行...原创 2019-03-27 12:43:10 · 714 阅读 · 0 评论 -
数据结构(一):前言
数据结构处理的问题是:数据如何在计算机中进行组织和存储,使得我们可以高效的获取数据或者修改数据数据结构 + 算法 = 程序不同的应用 ---选择 --> 合适的数据结构8种常见的数据结构:数组 栈 队列 链表 图 树 前缀树/字典树 哈希表更多内容来自:https://baijiahao.baidu.com/s?id=1609911567564...原创 2019-04-03 23:20:18 · 152 阅读 · 0 评论 -
JAVA中jar包的导入与导出
目录jar的导入:jar的导出:jar包的运行命令:jar包分为两种:可执行jar包,Runnable jar.只包含一个类;普通jar包,JAR file.可以包含多个类文件.jar的导入:手动导入:1.jar包的下载;2.在项目的一级目录下建立名为lib的普通文件夹(与src文件夹同级),将jar包拷贝进lib文件夹中,右键 | build path;3....原创 2019-01-05 19:49:47 · 1492 阅读 · 2 评论 -
JAVA面向对象:多态案例的实现
多态性:定义:某一个事物,在不同环境下表现出来的不同状态。多态的三种形式:普通类的多态、抽象类的多态、接口的多态。 ------------------------------类是根源的抽象,接口是功能的扩展。使用前提:1. 有继承关系 2. 方法的重写 3. 父类的引用指向子类的对象(向上转型)优点:提...原创 2019-04-10 23:17:47 · 367 阅读 · 0 评论 -
JAVA面向对象:继承案例的实现
继承的相关概念:继承:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承这个新定义的类即可。java通过extends关键字可以实现类与类的继承: class 子类名 extends 父类名{ ... }优点:1.提高了代码的复用性; 2.提高了代码的维护性; ...原创 2018-12-08 12:28:30 · 506 阅读 · 0 评论 -
JAVA基本语法:引用数据类型的使用——数组
数组:数组:是存储多个变量(元素)的集合/容器,但是多个变量的数据类型要一致。注意事项:数组中变量的数据类型要一致; 数组本身是引用数据类型,但是既可以保存基本数据类型,也可以保存引用数据类型。 数组的长度一旦给定无法改变。 -----------> 解决方案:动态数组类(重新开辟内存) 一维数组只有第一次定义的时候可以简写,重新赋值的时候不能简写。 静态初始化中数组长...原创 2018-12-01 22:46:24 · 964 阅读 · 0 评论 -
JAVA基本语法:流程控制结构
流程控制结构:顺序结构:按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。总的来说:写在前面的先执行,写在后面的后执行选择结构:又称分支结构,选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果包括true、false,所以产生选择,按照不同的选择执行不同的代码。包括:if 语句、switch语句。循环结构:循环语句可以在满足循环条件的情况下,反复执...原创 2018-12-01 22:17:26 · 217 阅读 · 0 评论 -
JAVA基本语法:使用JAVA进行位运算
位运算:直接对二进制的补码进行运算。Java除了具备高级语言的特点外,也支持位运算操作。在计算机中,有符号数有3种表示方法:原码、反码和补码。计算机的运算都是采用二进制补码进行的。注:有符号数指二进制的最高位是符号位,其余位置表示数值;无符号数指所有位置表示数值。原码:二进制定点表示法,即最高位为符号位,0表示正,1表示负,其余位表示数值的大小;反码:正数的反码与其原码相同;...原创 2018-11-28 22:12:00 · 187 阅读 · 0 评论 -
JAVA基础知识:java中的内存模型
内存模型:栈(stack):存储局部变量,方法的执行区 ----------------------- 存放在栈内存中的变量是没有初始值的。栈:先进后出结构;堆(heap):实例化(new)的对象(变量)------------------- 存储在堆内存中的元素是有初始值的;堆:完全二叉树结构; 基本数据类型:初始值就是默认值; ...原创 2020-03-14 21:09:49 · 170 阅读 · 0 评论 -
JAVA基础知识:JAVA的进制间的转换方法
进制:又名进位制,是人们规定的一种进位方法。比如二进制就是逢二进一;位(bit):就是代表二进制数据个中的每一个0或1,bit是计算机中的最小单位。计算机基本存储单位是字节(byte),包含8个二进制位,即1 byte = 8 bit。以下是整数数据类型所占用的内存空间: --->整数默认为int类型Java针对整数常量提供了4种进制表现形式:二进制:由0,1组成,以0b开头...原创 2018-11-28 22:12:31 · 389 阅读 · 0 评论 -
JAVA基础知识:JAVA的基本组成,以及环境变量的配置
JAVA语言包含哪些部分:JRE(Java Runtime Environment,java运行环境):JVM+类库。JDK(Java Development Kit,java开发工具包):JRE+JAVA的开发工具。Java平台版本:标准版Java SE:桌面级开发,但应用很少。是其它两者的基础。缩小版Java ME:用于智能冰箱等嵌入式系统的开发,但目前智能冰箱多采用安卓系...原创 2018-11-27 10:42:23 · 196 阅读 · 0 评论 -
JAVA常用类:Scanner类的使用
Scanner类的使用方法:1. 导包: import 全类名(包名+类名) 这句话要放到class的上面import java.util.Scanner; 也可以写成 import java.util.*;2. 创建Scanner的对象 Scanner 对象名(变量名) = new Scann...原创 2018-11-30 09:58:15 · 226 阅读 · 0 评论 -
JAVA基本语法:关键字、标识符以及常量变量的知识整理
关键字:概念: 被java语言赋予特定含义的单词特点: 所有的字母都是小写的,在一些高级开发工具中,会有特殊颜色的显示保留字: 目前版本中还不是关键字,但是有可能在后续版本中升级为关键字 goto const注意事项:在一些其他资料中,可能会把关键字称之为保留字标识符:标识符: 给类,接口,方法,变量起名字的字符序列组成规则...原创 2018-11-30 09:19:23 · 362 阅读 · 0 评论 -
JAVA面向对象:封装性案例的实现
封装特性:封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。优点:隐藏实现细节,提供公共的访问方式; 提高了代码的复用性; 提高了安全性。封装原则:将不需要对外提供的内容都隐藏起来; 把属性隐藏,提供公共方法对其访问。封装步骤:1.成员变量私有化; ...原创 2019-04-10 23:18:07 · 673 阅读 · 0 评论 -
JAVA基本语法:数据类型
java使用两种数据类型,对现实世界进行分类:JAVA是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间:JAVA中,整数的默认类型是int;小数的默认类型是double1.基本数据类型:(四类八种) 整数类:byte short int long(存在四种整数类型的原因:根据内存的不同,合理分配内存空间) --------- 默认值...原创 2018-11-28 22:46:28 · 325 阅读 · 0 评论 -
JAVA编程练习:java输出九九乘法表
生成左侧对齐的九九乘法表:因为依次递增的数字包括乘数和被乘数两种,因此只要设置两层循环即可:对于左对齐正挂三角形来说:算式的乘数表示所在的行数,可以作为外层循环;而算式的被乘数每次从1递增到它所在的最大行数,可以设置为内层循环。如下所示:1*1=1;1*2=2;2*2=4;1*3=3;2*3=6;3*3=9;1*4=4;2*4=8;3*4=12;4*4=16;1*5=5;2*...原创 2018-11-25 22:58:36 · 1195 阅读 · 0 评论 -
JAVA编程练习:使用JAVA输出“*”组成的不同三角形
使用 * 打印一个三角形,如图所示:**********--------------------------------------------------------------------public class Excerise { public static void main(String[] args){ for(int i=1;i<5;i...原创 2018-11-25 22:29:39 · 3575 阅读 · 0 评论 -
JAVA面向对象:面向对象的相关基础知识
面向对象(OO.object-oriented):定义:把现实中的事物抽象成由一系列属性和行为组成的结构体,每个结构体都有属于自己的功能,在软件开发的过程中,通过对不同功能的结构体进行组合,完成整个软件功能。且结构体可复用。简单说:面向对象是对现实世界的一种抽象模仿。相关语言:object-C(IOS开发)、java(单继承)、C++(多继承)、scala。另外C语言是面向过程的语言。...原创 2019-04-10 23:15:59 · 170 阅读 · 0 评论 -
JAVA常用类(三):Arrays类(与Collection类对比)
目录Arrays类:成员方法:源码分析:Arrays类:Arrays 类是 java 针对数组进行操作的工具类,提供了排序、排序等功能。 ------------------ java.util 包相比集合专门存储对象,数组既可以存储基本数据类型,也可以存储引用数据类型。成员方法:public static <T> List<T> asLi...原创 2018-12-12 19:26:16 · 231 阅读 · 0 评论 -
JAVA常用特性:静态代理与动态代理
目录代理:JDBC静态代理:JDBC动态代理:CGLIB字节码增强:代理:简单来说,代理就是原有业务不变的情况下,将一些额外的需求(方法的功能增强)交给别人来做。具体方式有两种:一种是静态代理(装饰者模式),一种是动态代理。JDBC静态代理的原理:是通过纵向继承的方式,经过进一步的方法重写得到功能的增强。但由于类的单继承局限性,使得通过直接继承父类的方式来进行代理增强的...原创 2018-12-29 19:44:49 · 236 阅读 · 0 评论 -
JAVA中JDK8新特性:
目录1.lambda表达式:2.stream的用法:3.DateApi类:4.接口新特性:1.lambda表达式:java中的函数式接口都可以使用lambda表达式来表示,所谓函数式接口(Functional Interface)是指包含一个方法的抽象接口(SAM)。格式:lambda表达式实际上就是代码块的传递的实现(parameters) -> expre...原创 2019-04-10 23:16:21 · 205 阅读 · 0 评论 -
JAVA编程基础知识:单元测试、断点调试以及反编译工具
目录1.单元调试:JunitText2.断点调试:Debug3.反编译工具1.单元调试:JunitText单元测试的使用背景: 我们现在要想执行一个方法,只能从main方法中开始,有一定的弊端: 必须要创建对象才能调用非静态的方法。使用junittest 工具类可以不通过main方法让我们的程序直接执行。单元测试的使用步骤:(高版本的eclip...原创 2020-03-14 21:08:42 · 240 阅读 · 0 评论 -
JAVA面向对象:javabean的书写规范
javabean:一个普通类。即描述事物的类,里面不包含任何的业务逻辑,只是作为载体用来存储数据的。javabean别名:vo、pojo、entity、model、dto...书写规范:1.成员变量私有化;2.为私有属性提供公共的访问方法:getter/setter方法3.提供无参构造方法;4.提供有参构造方法。public class ProductDemo{...原创 2018-12-07 15:17:50 · 1442 阅读 · 0 评论 -
JAVA面向对象:相关基础知识(带包编译--权限修饰符--内部类)
目录1.带包编译2.权限修饰符3.内部类1.带包编译解决使用notepad++ 等文本编辑器编写的java类中如果需要 package 的解决方案:手动式:手动建包,.java文件放在包外,.class文件放在包内 自动式:javac –d空格.空格文件名.java java 包名.类名建包:package ...原创 2018-12-09 14:11:11 · 171 阅读 · 0 评论 -
JAVA基本语法:形参与实参的区别与联系
形参:定义方法时方法参数列表上的变量实参:调用方法时传进去的具体值1.引用数据类型作为参数,形参的改变会影响实参的值(String类与包装类除外)引用数据类型作为参数 --------- 参数值保存在堆内存空间中,而栈内存中的对象则保存参数值在堆内存空间中的地址值原理分析:1.程序执行时,main方法首先进入栈内存空间;2.实例化数组对象后,在堆内存中开辟一个整型数组空...原创 2018-12-07 14:47:19 · 661 阅读 · 0 评论 -
JAVA基本语法:static关键字与final关键字的区别与联系
static 关键字:使用范围:static 关键字可以用来修饰变量和方法用法:被static修饰的变量和方法就变成了静态变量和静态的方法。静态变量/方法在类加载的时候加载到方法区的static区,先 于对象的存在,被所有的对象所共享,可以使用类名调用,也可以使用对象调用,推荐使用类名调用。注:静态的方法中只能调用外部用static修饰的变量和方法。如果非要...原创 2018-12-07 15:48:32 · 319 阅读 · 0 评论 -
JAVA常用类:Random类的使用以及工具类的创建方法
Random类使用:Random类主要用于创建随机数,和Scanner类都位于java.util包中,使用时需要导包。1.创建对象Random 对象名 = new Random();2.赋值——随机数对象名.nextInt(m); --------------随机数范围:[0,m),不写则表示0-无穷。import java.util.Random;public ...原创 2018-12-03 23:20:13 · 512 阅读 · 0 评论