
java基础
h294590501
这个作者很懒,什么都没留下…
展开
-
BeanUtils
BeanUtilsBeanUtils是Apache Commons组件的成员之一,主要用于简化JavaBean封装数据的操作。简化反射封装参数的步骤,给对象封装参数。好处: BeanUtils给对象封装参数的时候会进行类型自动转换。JavaBean//JavaBean就是一个类,但该类需要满足以下三个条件:1. 类//必须使用public修饰。2. 提供无参数的构造器。...原创 2018-06-19 22:39:29 · 10157 阅读 · 5 评论 -
增强for
增强for增强for概述是JDK1.5新特性专门用来遍历集合和数组的本质:迭代器,也会存在并发修改异常的问题 增强for格式for(数据类型 变量名: 数组名或集合名){ 使用变量即可,该变量就是元素 }好处:简化了数组和集合的遍历。弊端: 增强for的目标不能为null。如何解决呢? 对增强for的目标先进行不为null的判断,然后在使用。代码演示增强for循环遍历数组/** * 增...原创 2018-04-26 23:30:34 · 3606 阅读 · 0 评论 -
对象的哈希值
对象的哈希值就是一个十进制整数。是通过Object类的hashCode()方法获得:int hashCode(); 默认Object类的hashCode的方法返回的哈希值是该对象在内存中的地址值。哈希值是对象存储到哈希表的重要依据。哈希表的存储过程哈希表的存储过程(存取原理):每存入一个新的元素都要走以下五步(1)调用对象的hashCode()方法,获得要存储元素的哈希值。(2)将哈希值与表的长度...原创 2018-04-26 23:29:45 · 4880 阅读 · 1 评论 -
集合中的泛型
泛型泛型:是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。参数化类型,把类型当作参数一样的传递。集合中存在什么样的安全隐患集合默认可以存储任意类型的对象。当在存储String的集合中,存储一个Integer类型,调用String类型的特有方法就会报错,导致程序崩溃。集合中泛型的使用创建集合使用泛型指定集合只能存放的数据类型。(把运行时期的问题提前到了编译期间)遍历集合...原创 2018-04-26 23:28:57 · 344 阅读 · 0 评论 -
数据的存储结构
数据的存储结构栈先进后出 FILO First In Last Out队列先进先出 FIFO First In First Out数组查询快:直接根据索引获得对应位置的元素。增删慢:每次增删元素都需要创建新的数组,需要移动数组中元素。链表查询慢:查询元素需要从链表头或链表尾开始遍历查询。增删快:增删元素不需要移动元素的位置,只需要修改上一个元素记住下一个元素的地址值。查询元素的索引值决定了...原创 2018-04-26 23:26:34 · 532 阅读 · 0 评论 -
迭代器的概述和使用
迭代器的概述和使用什么是Iterator(迭代器)一个用来遍历集合的对象。 Iterator的好处屏蔽了众多集合的内部实现,对外提供统一的访问方式。所有的单列集合都可以使用迭代器遍历迭代器的执行过程Iterator<E> iterator();通过集合的方法获得迭代器对象:boolean hasNext() 判断当前指针指向位置是否有元素,如果有返回true,否则返回falseE ...原创 2018-04-26 23:25:34 · 434 阅读 · 0 评论 -
第三方工具CommonsIO使用
第三方工具CommonsIO使用使用步骤//在项目根目录下创建一个文件夹:lib //将第三方jar拷贝到lib目录下//选中jar—>右键—>Build Path —> Add to Build PathFilenameUtils工具类常用方法String getExtension(String path) 获取文件的扩展名String getName() ...原创 2018-05-04 22:50:42 · 331 阅读 · 0 评论 -
序列化流(对象流)
序列化流(对象流)对象的序列化概述使用流的技术将对象直接保存到文件中的过程则称为对象的序列化。实现对象序列化操作需要使用到的流:ObjectOutputStream对象的反序列化概述使用流的技术从文件中读取对象的过程则称为对象的反序列化。实现对象反序列化操作需要使用到的流:ObjectInputStreamObjectOutputStream类概述继承OutputStream,是一个字节流。Ob...原创 2018-05-04 22:49:30 · 2468 阅读 · 0 评论 -
动态代理
动态代理代理模式的分类静态代理动态代理*就是可以在运行时创建一个实现了一组给定接口的新类。代理模式的作用拦截对真实对象的直接访问,对真实对象的功能进行增强。动态代理开发步骤1.先明确要代理的功能(方法)有哪些?将要代理的功能定义在接口中被代理类要实现接口,重写接口中的所有方法。2.创建被代理对象(真实对象)通过Proxy类的静态方法创建代理对象 Proxy.newProxyInstance...原创 2018-05-10 22:48:00 · 566 阅读 · 0 评论 -
Java的比较器
Java的比较器java.lang.Comparable接口Comparable接口是一个给排序方法使用的接口, 这是一个自比较器接口。用于指定一个对象如何去比较大小。Comparable接口中的方法int compareTo(T obj) 比较当前对象与传入进来对象的大小参数:obj 表示要比较的对象返回值: *如果当前的对象大于obj,返回正整数。 *如果当前的对象等...原创 2018-05-10 22:47:03 · 4439 阅读 · 1 评论 -
类加载器
类加载器类的加载时机有哪些? * 创建该类或子类的对象会触发类加载。 * 访问类的静态成员变量时会触发类加载。 * 调用类的静态方法时会触发类加载。 * 使用java命名执行有main方法的类,也会触发类的加载 * 使用Class类的forName方法也可以强制触发类的加载。Class类的对象:在类加载的时候创建出来的,如果是使用反射技术,必须要先获得该Cla...原创 2018-05-10 22:45:28 · 160 阅读 · 0 评论 -
Junit单元测试
Junit单元测试什么是Junit是Java语言编写第三方单元测试框架。 什么是单元测试在Java中一个类就是一个单元。单元测试是开发者编写的一小段代码用来测试某个类中的某个方法的功能或业务逻辑是否正确。 Junit的作用可以帮助我们对类中的方法进行测试,最大限度避免出现bug,保证程序的稳定性和正确性。可以让一个方法独立运行,这个方法测试方法Junit的使用步骤编写业务类(Student...原创 2018-05-10 22:43:47 · 442 阅读 · 0 评论 -
set集合接口子类
set集合接口子类Set接口的特点无序:存取顺序不一致。无索引元素不可重复Set集合遍历方式增强for迭代器Set集合常用子类HashSetLinkedHashSet继承HashSet,能够保证存取顺序一致。HashSet的特点和使用HashSet的特点无序,无索引,元素不可重复底层结构:哈希表什么是哈希表数组和链表的结合体哈希表特点查询和增删都比较快HashSet集合这个集合的底层是哈希表结构。...原创 2018-04-25 23:58:17 · 216 阅读 · 0 评论 -
List的子类
List的子类List接口概述特点有序:存取顺序一致。有索引元素可重复List集合遍历方式普通for增强for迭代器List接口的常用子类ArrayListLinkedListVector(了解)List常用方法演示增删改查方法 /** List接口的常用方法 * boolean add(E e) * E remove(int index) ...原创 2018-04-25 23:57:24 · 190 阅读 · 0 评论 -
Collection单列集合
CollectionCollection:是集合的顶层接口,它的子体系有重复的,有唯一的,有有序的,有无序的。Collection接口使用所有单列集合的根接口,所有单列集合的父类public boolean add(E e) 添加元素boolean addAll(Collection c):添加一个集合的元素public boolean remove(Object obj) 删除元素ob...原创 2018-04-25 23:56:11 · 447 阅读 · 0 评论 -
打印流
打印流打印流概述 //为其他输出流添加了功能,使它们能够方便地打印各种数据值。打印流分类 //字节打印流:PrintStream:可以操作任意类型文件 //字符打印流:PrintWriter:只能操作文本文件打印流的成员方法 write(); print(); 打印数据不换行 println(); 打印输入,自动换行打印流的特点只有输出,没有输入。public static void m...原创 2018-05-03 12:45:05 · 142 阅读 · 0 评论 -
Collections集合工具类
Collections集合工具类Collections:是针对集合进行操作的工具类,都是静态方法。Collection和Collections的区别?Collection:是单列集合的顶层接口,有子接口List和Set。Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法方法public static <T> void sort(List<T> ...原创 2018-04-27 22:22:10 · 576 阅读 · 0 评论 -
Properties属性集合
Properties属性类Properties属性集合概述 * 是一个双列集合,实现了Map接口,继承Hashtable类。 Properties集合的特点 * 创建对象时不需要指定泛型 * 键和值都是字符串 * 可以和流技术相加使用 * 可以直接通过流将集合中的数据保存到文件中 * 可以直接从文件中读取数据到集合属性...原创 2018-05-06 21:22:51 · 713 阅读 · 0 评论 -
注解
注解注解(Annotation)相当于一种标记,在程序中加入注解就等于为程序打上某种标记,注解的作用:1.给程序带入参数2.取代一些属性文件文件标记可以加在包、类,属性、方法,方法的参数以及局部变量上定义。注解的应用场景1. 重写父类方法时。2. 运行一个无main的方法时,带有@Test的成员方法可以直接运行,无需main方法。3. 框架中的配置。现在框架都是基...原创 2018-06-19 22:38:03 · 221 阅读 · 0 评论 -
反射
反射反射是一种机制/功能,利用该机制/功能可以在程序运行过程中对类进行解剖并操作类中的构造方法,成员方法,成员属性。反射的应用场景1. 开发工具中写代码时的提示 开发工具之所能够把该对象的方法和属性展示出来就使用利用了反射机制对该对象所有类 进行了解剖获取到了类中的所有方法和属性信息,这是反射在 IDE 中的一个使用场景。 2. 各种框架的设计 Java 的三大框架,简...原创 2018-06-15 23:09:49 · 167 阅读 · 0 评论 -
JDBCTemplate
JDBCTemplateJDBC已经能够满足大部分用户最基本的需求,但是在使用JDBC时,必须自己来管理数据库资源如:获取PreparedStatement,设置SQL语句参数,关闭连接等步骤。JDBCTemplate就是Spring对JDBC的封装,目的是使JDBC更加易于使用。JDBCTemplate是Spring的一部分。 JDBCTemplate处理了资源的建立和释放。他帮...原创 2018-05-23 23:34:40 · 11504 阅读 · 4 评论 -
DRUID连接池
DRUID连接池Druid是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是目前最好的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。DRUID连接池使用的jar包: druid-1.0.9.jarDRUID...原创 2018-05-23 23:33:02 · 22900 阅读 · 3 评论 -
C3P0连接池
C3P0连接池C3P0是一个开源的连接池。Hibernate框架,默认推荐使用C3P0作为连接池实现。 C3P0的jar包: c3p0-0.9.1.2.jar常用的配置参数解释Connection getConnection()从连接池中取出一个连接。参数 说明initialPoolSize 初始连接数maxPoolSize 最大连接数checkoutTimeout 最大等待时间m...原创 2018-05-23 23:32:05 · 601 阅读 · 0 评论 -
连接池
连接池-- 没有连接池的现状JDBC访问数据库的步骤:创建数据库连接 →运行SQL语句→关闭连接 每次数据库访问执行这样重复的动作每次创建数据库连接的问题获取数据库连接需要消耗比较多的资源,而每次操作都要重新获取新的连接对象,执行一次操作就把连接关闭,而数据库创建连接通常需要消耗相对较多的资源,创建时间也较长。这样数据库连接对象的使用率低。 假设网站一天10万访问量,...原创 2018-05-23 23:31:04 · 192 阅读 · 0 评论 -
JDBC事务的处理
JDBC事务的处理准备数据CREATE TABLE account ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10), balance DOUBLE);-- 添加数据INSERT INTO account (NAME, balance) VALUES ('Jack', 1000), ('Ro...原创 2018-05-21 23:14:31 · 834 阅读 · 0 评论 -
JDBC
JDBCJava Data Base Connectivity (Java数据库连接) JDBC是Java访问数据库的 标准规范 JDBC的作用:JDBC是用于执行SQL语句的Java API(Java语言通过JDBC可以操作数据库)JDBC规范定义接口,具体的实现由各大数据库厂商来实现 JDBC是Java访问数据库的标准规范。真正怎么操作数据库还需要具体的实现类,也就是数...原创 2018-05-21 23:12:46 · 168 阅读 · 0 评论 -
单例设计模式
单例设计模式单例模式概述 * 该类在程序运行过程中只有一个对象。 单例类的特点 * 构造方法必须私有化 * 提供一个静态方法用于外界获得该类的对象。单例实现方式 * 懒汉式 * 当外界第一次访问该类的单例对象时,如果还没创建,则创建该单例对象。 * 线程不安全的,需要程序猿自己实现安全。 * 饿汉式 ...原创 2018-05-07 23:41:39 · 143 阅读 · 0 评论 -
使用Lock解决线程安全问题
使用Lock解决线程安全问题Lock接口Lock接口的概述 * Lock是JDK1.5新特性 * 专门用来实现线程安全的技术 Lock接口的常用实现类 * ReentrantLock:互斥锁 Lock接口的常用方法 void lock() 获取锁 void unlock() 释放锁注意事项 * 获取锁和释放锁的代码必须成...原创 2018-05-07 23:39:44 · 1156 阅读 · 0 评论 -
线程间通信
线程间通信线程等待与唤醒介绍线程等待与唤醒机制概述 * 又称为线程间通信。线程等待与唤醒机制相关方法 * void wait(); 等待,让当前正在执行的线程释放cpu的使用权,进入等待。 * void notify(); 唤醒,随机唤醒一个正在等待的线程,让线程进入就绪状态。 * void notifyAll(); 唤醒所有正在等待的线程,让线程进入就绪...原创 2018-05-07 23:38:51 · 1905 阅读 · 0 评论 -
线程安全
实现线程安全的方式:同步机制两个或两个以上的线程在同时操作一个共享资源时仍然能得到正确的结果,则称为线程安全。判断一个程序是否会有线程安全问题的标准 A:是否是多线程环境 B:是否有共享数据 C:是否有多条语句操作共享数据同步的特点:前提://多个线程解决问题的时候要注意://多个线程使用的是同一个锁对象同步的好处 //同步的出现解决了多线程的安全问题...原创 2018-05-07 23:37:44 · 2619 阅读 · 0 评论 -
线程池
线程池线程池什么是线程池 * 一个用来负责创建和管理线程的容器。为什么要使用线程池 * 避免频繁创建线程和销毁线程带来的系统开销。线程池的原理 * 线程复用。我们详细的解释一下为什么要使用线程池?在 java 中,如果每个请求到达就创建一个新线程,开销是相当大的。在实际使用中,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用...原创 2018-05-07 23:34:50 · 130 阅读 · 0 评论 -
多线程
多线程进程正在运行中的程序就是一个进程。确切的来说,当一个程序进入内存运行,即是一个或多个进程在运行,具有一定独立功能 线程线程是进程中的一个执行单元,执行路径。是程序使用CPU的最基本单位。负责当前进程中程序的执行, 程序的执行其实都是在抢CPU的资源,CPU的执行权。一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。线程...原创 2018-05-06 21:24:02 · 108 阅读 · 0 评论 -
转换流
转换流 为什么需要使用转换流 //FileReader和BufferedReader从文本文件中读取数据时使用码表默认是GBK码表,不能修改,//如果文本文件的编码不是GBK时,就不能使用GBK方式去读取,否则会出现乱码,//此时需要指定编码去读取文件的内容,只能使用转换流,只有转换流才能指定码表。转换流概述 本质就是字符流,只能操作文本文件。转换流的作用 字节流和字符流相互转...原创 2018-05-03 12:43:13 · 688 阅读 · 0 评论 -
编码表概述
编码表概述在计算机中无论任何数据的传输、存储、持久化,都是以二进制的形式体现的。那么当我存一个字符的时候,计算机需要持久化到硬盘,或者保存在内存中。这个时候保存在内存、硬盘的数据显然也是二进制的。那么当我需要从硬盘、内存中取出这些字符,再显示的时候,为什么二进制会变成了字符呢?这就是码表存在的意义。码表其实就是一个字符和其对应的二进制相互映射的一张表。这张表中规定了字符和二进制的映...原创 2018-05-02 23:36:47 · 1000 阅读 · 0 评论 -
封装
封装封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。怎么去强制要求不能直接使用成员变量呢? 针对这种情况,Java就提供了一个关键字 private private:是一个权限修饰符 private:私有的。可以修饰成员变量和成员方法。 注意:被private修饰的成员只能在本类中访问。/* 封装和private的应用: A:把成员变量用private修饰 B:提供对应的...原创 2018-04-16 22:38:38 · 142 阅读 · 0 评论 -
类与对象
类与对象类:是一组相关的属性和行为的集合。是一个抽象的概念。对象:是该类事物的具体表现形式。具体存在的个体。1:面向对象思想 面向对象是基于面向过程的编程思想。 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能2:面向对象的思想特点 A:是一种更符合我们思想习惯的思想 B:可以将复杂的事情简单化 C:将我们从执行者变成了指挥者面向对象: 我们怎么才能更符合面向对象...原创 2018-04-17 13:33:34 · 141 阅读 · 0 评论 -
匿名对象
匿名对象匿名对象:就是没有名字的对象。匿名对象的应用场景:A:调用方法,仅仅只调用一次的时候。 注意:调用多次的时候,不适合。 那么,这种匿名调用有什么好处吗? 有,匿名对象调用完毕就是垃圾。可以被垃圾回收器回收。B:匿名对象可以作为实际参数传递class Student { public void show() { System.out.println("我爱学习")...原创 2018-04-17 13:36:27 · 139 阅读 · 0 评论 -
多态
多态多态概念:同一个对象(事物),在不同时刻体现出来的不同状态。多态的前提:A:要有继承关系。 必须有子父类关系或类实现接口关系B:要有方法重写。原因:如果没有的话,在编译时期是过不去的 在编译时只知道他自己的方法 编译时不管他new的对象 当然这个时候是强制类型转换的 其实没有也是可以的,但是如果没有这个就没有意义。 动物 d = new 猫(); d.sh...原创 2018-04-17 22:08:38 · 160 阅读 · 0 评论 -
抽象类
抽象类抽象方法的概念* 被abstract修饰的没有方法体的方法就是抽象方法;抽象方法的格式* 修饰符 abstract 返回值类型 方法名(参数列表);抽象类的概述: 动物不应该定义为具体的东西,而且动物中的吃,睡等也不应该是具体的。 我们把一个不是具体的功能称为抽象的功能,而一个类中如果有抽象的功能,该类必须是抽象类。 被abstract修饰的类就是一个抽象类。抽象类的格式 ...原创 2018-04-18 22:39:40 · 182 阅读 · 0 评论 -
接口
接口. 接口的概念接口也是一种数据类型,比抽象类更加抽象的'类'。接口是功能的集合,它只描述功能所具备的方法,如何实现这些方法由实现类(子类)通过方法重写来完成。接口的特点:A:接口用关键字interface表示 interface 接口名 { // 抽象方法 // 默认方法:JDK1.8}B:类实现接口用implements表示 class ...原创 2018-04-18 22:42:44 · 418 阅读 · 0 评论