05 2020 档案
摘要:题: try { try { System.out.println("A"); throw new Exception("1"); }catch (Exception e){ System.out.println("B"); throw new Exception("2"); }finally {
阅读全文
摘要:浮点类型float, double的数据不适合在计算或者比较中使用,因为会丢失精度。如果需要精确数字计算,需要使用 BigDecimal 类。 注意:主要理由:由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很多数字无法精确表示(例如0.1),其结果只能是接近
阅读全文
摘要:本文基本与百度百科的解析一致:https://baike.baidu.com/item/SSM/18801167?fr=aladdin 这里的解析通俗易懂,很适合从spring基本框架向ssm进一步学习。 简介 SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBa
阅读全文
摘要:项目代码:https://github.com/guocanzhen/jQueryAjaxJavaWeb 数据库: 注: 1、在使用Http的URL访问html页面时,需要导入themeleaf 2、ajax使用需导入jQuery脚本 https://jquery.com/download/ 生产版
阅读全文
摘要:springboot项目默认是不允许直接访问templates下的文件的,是受保护的。 如果要访问templates下的文件,推荐使用thymeleaf。 注:使用thymeleaf这一点要牢牢记住! 如何使用: 1、pom依赖 <!--thymeleaf 模板依赖--> <dependency>
阅读全文
摘要:简介: AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。 AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器
阅读全文
摘要:反射 反射是一种功能强大且复杂的机制。它主要是动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。 也就是说当我们的程序在运行时,需要动态的加载一些类,这些类可能之前用不到所以不用加载到jvm,而是在运行时根据需要才加载,这样的好处对于服务
阅读全文
摘要:此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException。 大致上的方法与Collections工具类都类似。 Array.copyOf方法 c
阅读全文
摘要:collections 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。如果为此类的方法所提供的 co
阅读全文
摘要:对象的序列化与反序列化 序列化为将对象的信息存储到文件中,反序列化为将文件存储的对象信息读取出来。 ObjectOutputStream(对象序列化) ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStre
阅读全文
摘要:Properties 介绍 Properties 是在java.util包中,该类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。 一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二
阅读全文
摘要:TreeMap 简介 是一个有序的key-value集合,它是通过红黑树实现的。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。2.是继承了AbstractMap,也是以key-value集合存储。实现了NavigableMap接
阅读全文
摘要:HashSet原理 该类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。 对于 HashSet 而言,HashSet 继承自AbstractSet,它是基于 HashMap 实现的,HashSet 底层使用 HashMap 来保存所有元素。
阅读全文
摘要:HashMap HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。 该类实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。 散列表(Hash table,也叫哈希表) 是根据关键码值(Key
阅读全文
摘要:ArrayList/Vector/LinkedList原理总结 ArrayList: 1、实现原理,采用了动态对象数组实现,默认构造函数创建了一个空的对象数组2、第一次添加元素,扩展了10个位置的容量。3、扩充算法,原来数组的大小+原来数组大小的一半4、不适合进行删除或插入操作5、为了防止数组动态扩
阅读全文
摘要:为什么要用LinkedList? 我们在现实开发中我们都是会大量使用到数组以及动态的ArrayList类。然而,数组和数组列表都有一个重大的缺陷。 这就是从数组的中间位置删除一个元素要付出很大的代价,其原因是数组中处于被删除元素之后的所有元素都要向数组的前端移动。在数组中间的位置上插入一个元素也是如
阅读全文
摘要:Java 中的ArrayList ArrayList是基于动态数组实现的,数组具有按索引查找的特性,所以访问很快,适合经常查询的数据。其实就是对数组的操作。首先分析一下ArrayList的几个常用方法。 1. add(E e) :将指定的元素添加到此列表的尾部。 2. indexOf(Object
阅读全文
摘要:Map接口的常用实现类 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。 从概念上而言,您可以将 List 看作是具有数值键的 Map。 而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联
阅读全文
摘要:Set集合接口 如果是实现了 Set 接口的集合类,具备的特点:无序,不可重复 添加元素 的顺序与元素出来的顺序是不一致的。注重独一无二的性质,该体系集合可以知道某物是否已经存在于集合中,不会存储重复的元素。 hashSet HashSet 底层是使用了哈希表来支持的,特点: 存取速度快。 往Has
阅读全文
摘要:List接口的常用实现类 一个 List 是一个元素有序的、可以重复、可以为 null 的集合(有时候我们也叫它“序列”)。 ArrayList 最常用的List接口实现类,底层使用可变长度的动态数组实现。ArrayList有一个初始容量(capacity = 10),当元素数量大于初始容量时进行扩
阅读全文
摘要:集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。在面向对象的语言,接口通常形成一个层次。 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构。 算法:是实现集合接口的对象里的方法执行的
阅读全文
摘要:Scanner介绍 一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。 Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。 以上为api里面的,意思是:这个类最实用的地方表现在获取控制台输
阅读全文
摘要:字符流的缓冲区 缓冲区的出现,提高了对数据的读写效率,对应的类:BufferedWriter,BufferedReader 缓冲区要结合流才可以使用,缓冲区是在流的基础上对流的功能进行增强 BufferedWriter 将文本写入到字符输出流中,缓冲字符,以便提供对单个字符、数组和字符串的有效写入。
阅读全文
摘要:FileInputStream 该流用于从文件读取数据,它的对象可以用关键字 new 来创建。有多种构造方法可用来创建对象,主要是读取字节的。 可以使用字符串类型的文件名来创建一个输入流对象来读取文件。 InputStream f = new FileInputStream("C:/java/1.t
阅读全文
摘要:Java 流(Stream)、文件(File)和IO Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 Java.io包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一
阅读全文
摘要:StringBuffer和 StringBuilder 类 当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类;和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
阅读全文
摘要:数据类型包装类 Java 语言是一个面向对象的语言,但是 Java 中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆
阅读全文
摘要:Java 接口 接口(英文:Interface),就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了规范和具体实现的分离。 在JAVA编程语言中就是一个抽象类型,是抽象方法的集合,接口通常以 interface 来声明。一个类通过继承接口的方式,从而来继承接口的
阅读全文
摘要:抽象类的基本概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。 由于抽
阅读全文
摘要:Java 多态 在 java 程序设计中,对象变量是多态的,多态是同一个行为具有多个不同表现形式或形态的能力。 也是 OOP (Object Oriented Programming)中的一个重要特性,主要是用来实现动态联编的,换句话说,就是程序的最终状态只有在执行过程中才被决定而非在编译期间就决定
阅读全文
摘要:Java 封装 在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。也就是说我要看电视,只需要按一下开关和换台就可以了。 有必要了解电视机内部的结构吗?有必要碰碰显像管吗? 封装的优点 良好的封装能够减少耦合。 类内部的结构可以自由修改。 可以对成员变量进行更精
阅读全文
摘要:非访问修饰符 为了实现一些其他的功能,Java 也提供了许多非访问修饰符。 static 修饰符,用来修饰类方法和类变量。 final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。 abstract 修饰符,用来创
阅读全文
摘要:Java 修饰符 Java 语言提供了很多修饰符,主要分为以下两类:访问修饰符,非访问修饰符;修饰符用来定义类、方法或者变量,通常放在语句的最前端。 访问控制修饰符 Java 中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。 default (即缺
阅读全文
摘要:继承的概念 继承是 java 面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 如图 动物类下有一个食肉类和一个食草类 食肉类下有一个狮子类和一个老虎类 食草类
阅读全文
摘要:this关键字 普通方法中,this总是指向调用该方法的对象。 构造方法中,this总是指向正要初始化的对象。 总结,其实this主要要三种用法:1、表示对当前对象的引用! 2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名时进行区分!其实这是第一种用法的特例,比较常用,所以拿出来强
阅读全文
摘要:面向对象支持以下基本概念: 多态,继承,封装,抽象,类,对象,实例,方法,重载 对象:对象是类的一个实例,有状态和行为。 类:类是一个模板,它描述一类对象的行为和状态。 Java中的对象 对比现实对象和软件对象,它们之间十分相似。软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。在软
阅读全文
摘要:引言 面向对象,将跟对象有关的功能都封装在其内面向对象三大特征:封装(例:bean),继承,多态找对象,创建对象,使用对象,并维护对象之间的关系。 类:对现实中事物的描述对象:就是实实在在,存在的事物映射到 java 中,描述就是 class 定义的类具体对象就是对应java在堆内存中new建立的实
阅读全文
摘要:递归定义 递归的一个简单定义:当函数直接或者间接调用自己时,则发生了递归。 递归的基本思想就是“自己调用自己”,一个使用递归技术的方法会直接或间接的调用自己递归构造包括两个部分: 定义递归头。什么时候不调用自身方法,如果没有头,将陷入死循环递归体。什么时候需要调用自身方法。 其实递归算法很简单,简单
阅读全文
摘要:重载(overloading) 是在一个类里面(或者子类),方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造方法)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。 Java编译器根据方法签名判断哪个方法应该被调用。 方法重载可以让程序更清晰易读。执行密
阅读全文
摘要:Java 数组 Java 语言中提供的数组是用来存储固定大小的同类型元素。 你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,....,number99。 现在将为大家介绍 Java 数组的声明、创建和初始化,并给出其对应的代码
阅读全文
摘要:for循环的流程图 【注意】for循环在执行条件测试后,先执行程序部分,再执行跟表达式。 Java 增强 for 循环(foreach) Java5 引入了一种主要用于数组的增强型 for 循环。Java 增强 for 循环语法格式如下: 以数组为例: 声明语句:声明新的局部变量,该变量的类型必须和
阅读全文
摘要:switch 语句 switch 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。语法switch 语法格式如下: switch 语句有如下规则: switch 语句中的变量类型可以是:byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符
阅读全文
摘要:if...else if...else 语句if 语句后面可以跟 elseif…else 语句,这种语句可以检测到多种可能的情况。 使用 if,else if,else 语句的时候,需要注意下面几点: if 语句至少有 1 个 else 语句,else 语句在所有的 elseif 语句之后。 if
阅读全文
摘要:1.实用快捷键: Ctrl+/ 或 Ctrl+Shift+/注释(// 或者/*…*/ ) Ctrl+D 复制行 Ctrl+X 删除行 快速修复 alt+enter`` (modify/cast) 代码提示 alt+/ ctr+G 定位某一行 Shift+F6 重构-重命名 Ctrl+R 替换文本
阅读全文
摘要:算术运算符 算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。 自增自减运算符 自增(++)自减(--)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,而自增自减运算符是一个操作数。 关系运算符 下表为 Java 支持的关系运算符 位运算符
阅读全文
摘要:自动类型转换 总结一句话就是:容量小的数据类型可以自动转换为容量大的数据类型。 下面看一张表 最小的 byte,最大容量为 double。 强制转换 — (显示转换) int a = 200; byte b = (byte) a; 我们来看看一个实例来对比下 以上图中显示没有强转就会报出一个错误。那
阅读全文
摘要:变量(variable) 我们通过变量来操纵存储空间中的数据,变量就是指这个存储空间!空间位置是确定的,但是里面放置什么值不确定! Java是一种强类型语言,每个变量都必须声明其类型。 Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。 变量在使用前必须对其声明, 只有在变量
阅读全文
摘要:String是一个特殊的包装类数据。 String 即可以用 String str= new String("abc");的形式来创建,也可以用String str ="abc";的形式来创建。String str = "abc"创建对象的过程: 1 首先在常量池中查找是否存在内容为”abc“的字符
阅读全文
摘要:Java是一种强类型语言,每个变量都必须声明其类型。 1) Java的数据类型分为两大类:基本类型和引用类型 整数型(byte,short,int,long) 大家来看一个图: 1) 举例一个byte其它以此类推:byte 是一个字节保存的,有8个位,即8个0、1。8 位的第一个位是符号位, 也就是
阅读全文
摘要:标识符即是对象的一种身份标识。 标识符使用标识符时,需要遵守几条规则 1) 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。譬如:111stu 就是不合法。 2) 标识符不能是 Java关键字和保留字(保留字即Java预留的关键字,以后
阅读全文
摘要:Java Runtime Environment (JRE) 包含: Java虚拟机(JVM)、库函数、运行 Java 应用程序和 Applet 所必须文件 。 Java 2 SDK (Development Kit)包含:JRE的超集,包含编译器和调试器等用于程序开发的文件 。 Java运行环境的
阅读全文