![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础知识学习讲解
平时自己学习java基础的笔记
猫腻有只猫
这个作者很懒,什么都没留下…
展开
-
JSP、EL、JSTL--简述
JSP的概述什么是JSPJSP和Servlet都是由SUN公司提供的动态Web资源开发技术。JSP看起来像一个HTML,但和HTML不同的是,JSP中可以书写Java代码,可以通过Java代码展示动态的数据。 静态Web资源:任何人在任何条件下访问时,看到的都是相同的效果,这样的资源叫做静态Web资源。(html、css、js等) 动态Web资源:不同的人,在不同的条件下访问时,看到的都是不同的效果,这样的资源叫做动态Web资源。(Servlet、jsp、php、.NET等)原创 2021-06-29 10:29:28 · 162 阅读 · 1 评论 -
request和response简述
request和response介绍request是代表HTTP请求信息的对象,response是代表HTTP响应信息的对象。当浏览器发请求访问服务器中的某一个Servlet时,服务器将会调用Servlet中的service方法来处理请求。在调用service方法之前会创建出request和response对象。其中request对象中封装了浏览器发送给服务器的请求信息(请求行、请求头、请求实体等),response对象中将会封装服务器要发送给浏览器的响应信息(状态行、响应头、响应实体),在serv转载 2021-06-28 15:47:41 · 754 阅读 · 0 评论 -
查询数据库,通过返回的结果查询本地的变量类型_43
封装的类:由于表中的字段太多,只封装部分作为演示public class Dao { private Integer VL_ID; private String VL_V_SerialNumber; private String VL_PI_V_CardCode;}主题类:import java.lang.reflect.Field;import java.sql.*;import java.util.Scanner;public class 暴力反射获取数据库原创 2021-06-24 16:43:54 · 71 阅读 · 0 评论 -
JDBC连接数据库_42
什么是JDBC?JDBC(Java DataBase Connectivity) Java数据库连接其实就是利用Java语言/程序连接并访问数据库的一门技术之前我们可以通过CMD或者navicat等工具连接数据库但在企业开发中,更多的是通过程序(Java程序)连接并访问数据库,通过Java程序访问数据库,就需要用到JDBC这门技术。如何通过JDBC程序访问数据库?开发工具:idea ij 和 Navicat第一步:导入jar包--java的驱动包jar可以去官网自行下载(注意点是:j原创 2021-06-23 17:30:21 · 222 阅读 · 1 评论 -
内部类_41
概述可以将一个类的定义放在里另一个类的内部,这就是内部类。广义上我们将内部类分为四种:成员内部类、静态内部类、局部(方法)内部类、匿名内部类。特点1、 内部类可以直接访问外部类中的成员,包括私有成员2、 外部类要访问内部类的成员,必须要建立内部类的对象3、 在成员位置的内部类是成员内部类4、 在局部位置的内部类是局部内部类一. 为什么使用内部类?在《Think in java》中有这样一句话:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继转载 2021-06-23 13:36:45 · 58 阅读 · 0 评论 -
暴力反射_40
什么是暴力反射?指可以将程序中的私有的属性或者方法通过反射技术,暴力的获取到资源。需要使用的常见方法如下:暴力反射获取变量名并修改变量名类:class Hospital00007{ private String name="常熟第一人民医院"; private int num= 138; private void run(String name,int num){ System.out.println(name+"有:"+num+"人"); }原创 2021-06-22 17:28:03 · 264 阅读 · 0 评论 -
反射_39
概念Reflection(反射) 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,也有称作“自省”。反射非常强大,它甚至能直接操作程序的私有属性。我们前面学习都有一个概念,private的只能类内部访问,外部是不行的,但这个规定被反射赤裸裸的打破了。反射就像一面镜子,它可以在运行时获取一个类的所有信息,可以获取到任何定义的信息(包括成员变量,成员方法,构造器等),并且可以操纵类的字段、方法、构造器等部分。...转载 2021-06-22 16:14:28 · 74 阅读 · 0 评论 -
单列设计模式_38
单列设计模式概念单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。特点单例类只能原创 2021-06-22 10:43:33 · 111 阅读 · 0 评论 -
同步锁(synchronized)_37
同步锁概念:把有可能出现问题的代码包起来,一次只让一个线程执行。通过sychronized关键字实现同步。当多个对象操作共享数据时,可以使用同步锁解决线程安全问题。 synchronized(对象){ 需要同步的代码; }特点:前提1,同步需要两个或者两个以上的线程。前提2,多个线程间必须使用同一个锁。同步的缺点是会降低程序的执行效率, 为了保证线程安全,必须牺牲性能。可以修饰方法称为同步方法,使用的锁对象是this。可以修饰代码块称为同步代码块,锁对象可原创 2021-06-22 10:11:30 · 1864 阅读 · 0 评论 -
多线程创建03_36
实现Runnable接口标题概述如果自己的类已经extends另一个类,就无法多继承,此时,可以实现一个Runnable接口。常用方法void run() 使用实现接口 Runnable 的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的 run 方法。测试public class Test2 { public static void main(String[] args) { MyThread t = new MyThread ()原创 2021-06-22 09:40:46 · 48 阅读 · 0 评论 -
多线程创建02_35
多线程创建1:继承Thread概述:Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。Start()方法是一个native方法,它将通知底层操作系统,最终由操作系统启动一个新线程,操作系统将执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。模拟开启多个线程,每个线程调用run()方法常用方法原创 2021-06-22 09:36:04 · 55 阅读 · 0 评论 -
多线程01_34
进程概念:就是正在运行的程序。也就是代表了程序锁占用的内存区域。特点:独立性进程是系统中独立存在的实体,它可以拥有自己的独立的资源,每一个进程都拥有自己私有的地址空间。在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间。动态性进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合。在进程中加入了时间的概念,进程具有自己的生命周期和各种不同的状态,这些概念在程序中都是不具备的。并发性多个进程可以在单个处理器上并发执原创 2021-06-21 17:21:19 · 114 阅读 · 0 评论 -
Collections工具类_33
Collections工具类功能专门用来给Collection提供丰富的功能.类似数组里的工具类Arrays.常用方法addAll(Collection c, T... elements) 将所有指定元素添加到指定 collection 中。 copy(List<? super T> dest, List src) 将所有元素从一个列表复制到另一个列表。 max(Collection<? extends T> coll) min(Collection<?原创 2021-06-21 17:01:52 · 48 阅读 · 0 评论 -
Map接口与HashMap实现类_32
Map概述将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。HashMap类的实现则不保证顺序特点数据都是键值对,K V同时指定K不能重复,只能对应一个VHashMap是无序的常用方法 void clear() 从此映射中移除所有映射关系(可选操作)。 boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。 boolean containsV原创 2021-06-21 16:38:02 · 121 阅读 · 0 评论 -
Set(HashSet 和 TreeSet)_31
Set接口概述不包含重复元素的集合数据无序,因为set集合没有下标常用来给数据做去重处理此类允许使用 null 元素。特点HashSet:底层是哈希表,包装了HashMap,相当于向HashSet中存入数据时,会把数据作为K,存入内部的HashMap中。当然K仍然不许重复。TreeSet:底层就是TreeMap,也是红黑树的形式,便于查找数据。HashMap实现中,当哈希值相同的对象,会在同一个hash值的位置存储不同属性的数据。常用方法boolean add(E e):添加元原创 2021-06-21 13:50:37 · 73 阅读 · 1 评论 -
Collection简述及List下的(LinkedList和ArrayList)_30
概述Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。集合的继承结构图Collection接口List 接口: // 数据有序,可以重复Arraylist 子类 :LinkedList 子类:Set 接口: // 数据无序,不可以存在重复值HashSet子类TreeS原创 2021-06-21 10:42:16 · 189 阅读 · 1 评论 -
编码转换流_29
编码转换流专门用来把 字节流 转成 字符流。是一个字节和字符流的转换桥梁。InputStreamReader – 把 字节读取流转成 字符读取流,继承自Reader。创建对象InputStreamReader(InputStream in)InputStreamReader(InputStream in, String charsetName)OutputStreamWriter – 把 字节写出流转成 字符写出流,继承自Writer。创建对象Outpu原创 2021-06-18 15:32:53 · 81 阅读 · 0 评论 -
序列化与反序列化_28
序列化 / 反序列化:常用于多台服务器之间进行java对象的数据传递Java 序列化就是指将对象转换为字节序列的过程,而反序列化则是只将字节序列转换成目标对象的过程。序列化:是指把 程序中准备好的 java对象 永久的保存在磁盘中,这个过程其实是一个out动作。ObjectOutputStream:* 通过在流中使用文件可以实现对象的持久存储。创建对象:* ObjectOutputStream(OutputStream out)常用方法:* void writeObject(O原创 2021-06-18 14:50:15 · 80 阅读 · 1 评论 -
java中文件或文件夹的复制(IO流的使用)
package test;import java.io.*;import java.util.Arrays;public class 批量读取写入文件夹 { public static void main(String[] args) { String from = "D:\\苏州九龙医院"; String to = "F:\\hospital\\Test_XXXXX"; copyFloder(from,to); //复制原创 2021-06-17 16:50:36 · 119 阅读 · 0 评论 -
Java中的IO流详细讲解(个人理解)_27
一、IO流的作用传输数据的通道二、分类按数据类型去分类:字节流和字符流按传输的方向去分类原创 2021-06-08 09:14:34 · 111 阅读 · 0 评论 -
BigDecimal_BigInteger_26
import java.math.BigDecimal;import java.util.Scanner;/** * 1.BigDecimal常用来做浮点数运算不精确的解决方案.可以把以前的'-','+','*','/'的运算, * 优化成两个对象间的运算 * 2.创建对象 * BigDecimal(double val) -- 有坑,别用 * BigDecimal(String val) -- 建议使用这个 */public class BigDecimal_BigIntege原创 2021-06-07 15:14:07 · 50 阅读 · 0 评论 -
日期类Data__工具SimpleDateFormat_25
import java.text.SimpleDateFormat;import java.util.Date;/** * 类 Date 表示特定的瞬间,精确到毫秒。 * SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 ->文本)、解析(文本 ->日期)和规范化。 * SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的 模式 */public class 日期类Data__工具Simple原创 2021-06-07 15:01:18 · 65 阅读 · 0 评论 -
StringBuffer和StringBuilder的区别(String)_24
String、StringBuffer和StringBuilder的区别StringString类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。String a="abc";a="123";如上图所示:如果再次给a赋值,不是在原有的基础上赋值,而是重新创建了一个新的实例对象,并且实例对象指向123。等待被调用,如果没有被调用就等待被垃圾回收。StringBuffer表示一个可变序列的字符串,当一个StringBuffer被创原创 2021-06-07 14:38:33 · 73 阅读 · 1 评论 -
StringBuilder/StringBuffer拼接字符串效率_23
StringBuilder/StringBuffer1.是final的类,不可以被继承(public final class StringBuilder)2.底层仍然像String一样,维护了一个char[] ,只不过值可以随时被修改(char[] value)3.两个工具类,专门用来优化字符串的拼接操作4.创建对象-------StringBuilder() --构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符/** * StringBuilder/StringBuffer原创 2021-06-07 10:57:54 · 214 阅读 · 0 评论 -
String_22
String1.String是最终的类,不能被继承( public final class String)2.String 底层维护了一个final的char[]的数组,一旦创建,不可以修改(private final char value[ ])3.创建对象String (char[] value) //分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。4.String的常用方法:import java.util.Arrays;/** * Strig 是最终的类,原创 2021-06-07 10:20:28 · 120 阅读 · 0 评论 -
Java设计模式--单例设计模式_21
一、单列模式定义:单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。二、单例模式特点:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。单例模式保证了全局对象的唯一性,比如系统启动读取配置文件就需要单例保证配置的一致性。三、线程安全问题四、单例模式的选择五、实现单例模式的方式饿汉式单例:class Single{ //1.私有化构造方法,不让外界直接new private Single(){}原创 2021-06-03 10:33:17 · 52 阅读 · 0 评论 -
总结:方法的重写与重载的区别_20
方法的重写与重载的区别1、方法的重写(overiding)java的三大特性之一就是继承,在Java类里,子类可以继承父类,即:子类具备父类所有的特征,它继承了父类的所有的方法和变量。与此同时,子类可以重新定义父类的特征,即:子类修改父类的方法和变量,增大其功能。重写父类方法的过程即为方法的重写。在重写的过程中,子类的方法与父类有相同的返回值类型,方法名,参数的个数及类型都一致。如果发生重写,在调用的时候,肯定是调用子类中被重写过的方法,如果需要调用父类中的方法怎么办?-----super。原创 2021-06-03 09:43:54 · 190 阅读 · 1 评论 -
总结:类--接口--抽象类之间的关系与区别_19
1.类和类的关系:继承 extends / 单继承 / 单根继承– 继承的意义:为了提高代码的复用性,减少了代码的编写提高开发效率。– 方法重写的意义:在不修改父类源码的前提下,在子类中重写业务,从此使用的就是重写后的功能。– 要求子类的方法声明和父类一样,只要改方法体。– 有了继承有了重写就产生了多态,多态的意义:为了统一程序的调用标准,标准就是父类。– 多态 也就是向上转型/向上造型。– 向下造型的意义:很少用,相当于想要使用子类的特殊功能,还不如直接创建子类对象简单。– class A原创 2021-06-02 17:36:42 · 217 阅读 · 0 评论 -
接口_18
/** * 接口突破了java的单继承的局限性.接口可以多继承 可以多实现.如下: * 类可以实现多个接口 * 接口可以继承多个接口 * 类可以继承其他类的同时实现多个接口 */public class 接口_16 { public static void main(String[] args) { }}class impl implements 接口_16.Interface01, 接口_16.Interface02 { //类可以实现多个接口 @Overrid原创 2021-06-02 17:20:29 · 52 阅读 · 0 评论 -
接口_17
接口的特点:1、 接口中都是抽象方法2、 通过interface关键字创建接口3、 通过implements让子类来实现4、 可以理解成,接口是一个特殊的抽象类5、 接口突破了java的单继承的局限性6、 接口和类之间可以多实现,接口和接口之间可以多继承7、 接口是对外暴露的规则,是一套开发规范8、 接口提高了程序的功能扩展,降低了耦合性接口的用法:a.接口里没有构造方法b.接口里没有变量,都是 常量,会在变量后面加上public static finalc.接口里都是抽象方法,而且原创 2021-06-02 16:56:03 · 56 阅读 · 0 评论 -
抽象类_16
概念Java中可以定义没有方法体的方法,该方法由其子类来具体的实现。该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类。抽象类可以理解为是一个只有方法声明没有方法体的特殊类。特点1、 通过java关键字abstract实现2、 可以修饰方法或者类3、 抽象类中可以没有抽象方法(由子类去实现)4、 如果类中有抽象方法,那该类必须定义为一个抽象类5、 子类继承了抽象类以后,要么还是一个抽象类,要么就把所有抽象方法都重写6、 多用于多态中7、 抽象类不可以被实例原创 2021-06-03 08:34:32 · 74 阅读 · 0 评论 -
静态变量与实例变量_15
静态变量和实例变量的区别1.语法上静态变量:变量前加static 实例变量:不需要加2.程序运行时,实例变量属于某个对象的属性,必须是创建了对象后,实例变量才会被分配到空间.静态变量不属于实例变量,之前就是说过随着类的加载而加载,所以称之为类变量.只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间.静态变量就可以使用了.总结:实例变量必须创建对象后使用,静态变量直接使用类名来引用...原创 2021-05-27 16:16:42 · 76 阅读 · 0 评论 -
多态的使用_14
/** * 成员变量:使用的是父类的 * 成员方法:使用多态后,由于存在重写所以对象调用的是子类的方法,但是对象也可以调用父类中没有被子类重写的函数 * 静态成员:随着对象而存在,谁调用的就返回谁的 * 多态的使用准则:编译看左边,执行看右边 */public class 多态的使用_12 { static class fu { int num = 1; static int count = 11; int b =0; pu原创 2021-05-27 15:46:56 · 43 阅读 · 0 评论 -
多态demo_13
/** * 多态: * 多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。 * 好处是可以把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,统一调用标准。 * 特点: * 多态的前提是继承 * 要有方法的重写 * 父类引用指向子类对象,如:Animal a = new Dog(); -- 小到大,向上转型 * 多态中,编译看左边,运行看右边 */public class 多态demo01_11 {原创 2021-05-27 14:09:33 · 109 阅读 · 0 评论 -
java中的关键字--static\final_12
static修饰成员变量和成员方法随着类的加载而加载,优先于对象加载全局唯一,全局共享可以直接被类名调用静态只能调用静态,非静态的可以调用静态也可以调用非静态的static不能和this或者super公用,因为在有static时不一定有对象final可以修饰类\方法\成员变量最初的初衷是因为java出现继承后子类可以更改父类的功能,当父类功能不允许被子类改变时可以用final关键字修饰父类特点:被final修饰的类,不能被继承被final修饰的方法,不能被重写被final修饰的变量原创 2021-05-27 13:40:21 · 58 阅读 · 0 评论 -
(this 和 super 重载和重写)的区别_11
标题 this 和 super 的区别1.this代表本来对象的引用,super代表父类对象的引用2.this用于区分局部变量和成员变量3.super用于区分本类变量和父类的变量4.this.成员变量 / this.成员方法 / this.(参数)代表调用本类中的内容5.super.成员变量 / super.成员方法 / super(参数) 代表调用父类中的内容重写与重载的区别1.重载:是指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或参数类型不能完全相同原创 2021-05-27 10:55:26 · 95 阅读 · 0 评论 -
继承中构造方法的使用_10
/** * 继承中的构造方法: * 子类在创建对象的时候,默认会访问父类的无参构造方法,在创建对象的同时会执行父类的无参构造 * 在构造方法的第一行都有一条默认的语句:super() * 在子类中可以用super调用父类的构造函数 * */public class 继承中构造方法的使用 { static class Fu { public Fu() { System.out.println("我是父类的方法01"); }原创 2021-05-27 10:39:04 · 44 阅读 · 0 评论 -
继承_super_方法的重写_09
/** * 继承:面向对象的显著特性 * 1.子类继承父类的所有的属性和方法 * 2.子类可以对父类中的方法和属性进行重写,重新去定义,也可以去增加新的父类没有的功能,但不能选择性的继承,继承就是全部 * 3.提高复用性 * * 方法的重写: * 子类继承父类的方法,并将父类的方法进行重写,调用子类的方法时就执行子类重写后的方法 * * super: * super关键字可以使用父类中所有的内容,代表父类的一个引用对象 * super的使用必须出现在调用位置的第一行 */publi原创 2021-05-26 16:33:58 · 71 阅读 · 0 评论 -
局部变量和成员变量_this_08
/** * 局部变量:存在于栈内存里,当方法执行完成,让出内存.指函数里的变量 * 成员变量:存在于堆内存里,和类一起创建,属于类里的变量 * 如下: * 局部变量名和成员变量名不一致时,局部变量直接赋值给成员变量 * 局部变量名和成员变量名一致时,局部变量赋值给成员变量时,需要this.成员变量 去接收 */public class 局部变量和成员变量_this { static class Hospital{ String hospital ;原创 2021-05-26 15:36:46 · 86 阅读 · 0 评论 -
静态代码块_构造代码块和局部代码块_07
/** * 构造代码块 * 1.在类里方法外 * 2.优先于构造方法加载 * 3.用于提取构造方法中的共性部分 * * 局部代码块 * 1.在函数里 * 2.通常用于控制变量的作用范围,出了()失效 * 3.变量的范围越小越好,成员变量会有线程问题 * 4.执行顺序:按序执行 * * 总结: * 俩者之间的关系:构造代码块永远是最优先执行,局部代码块按顺序执行 */public class 构造代码块和局部代码块 { static class student{原创 2021-05-26 15:36:16 · 70 阅读 · 0 评论