Java基础
本栏目记录Java的基础学习
字符传送门
这是一个魔幻的世界,这是一个神秘的世界
展开
-
优化数据库的操作
数据库连接池-Interface DataSouce概念: 实质时一个容器(集合),存放数据库连接的容器。 当系统初始化后,容器被创建,容器会申请一些连接对象,当用户来访问数据库的时候,从容器中获取链接对象,用户访问完之后,会将链接对象归还给容器。好处: 节约资源; 用户访问高效;实现: 标准接口:Datasouce javax.sql下的 方法: 获取链接 getConnection() 归还链接Connection。close()如链接对象是从链接池中获取的,则直接归还原创 2021-01-22 14:09:41 · 64 阅读 · 0 评论 -
注解
注解什么是注解:也叫元数据,一种代码级别的说明。 它是JDK1.5以后引入的一个特性,与类、接口、枚举在同一个层次。 它可以声明在包、类、字段、方法、局部变量、参数列表等前面,用来对这些元素进行说明、注释。有哪些注解: JDK中预定义的一些注解 自定义的注解注解有什么用:1.编写文档:生成文档doc/** * @since 1.5 * @author husuting * @version 1.0 */public class Demo1 { /** * 计算原创 2021-01-20 11:40:19 · 55 阅读 · 0 评论 -
反射---框架设计的灵魂
框架半成品的软件,在框架的基础上进行编程,能够简化编程过程。反射反射机制,将类的各个组成部分封装为其他类的对象Java代码在计算机中主要经历三个阶段: 1.代码编译阶段---class.forname(全名) 编写代码 通过Javac将Java文件变成class文件,字节码文件,字节码文件, 是将类按不同的属性和方法进行封装,封装在字节码文件中。 2.动态加载阶段---类名.class 动态加载的过程,是将字节码文件通过class类按不同的方法和属性进行对象式封装 即不同类型的原创 2021-01-19 15:54:56 · 60 阅读 · 0 评论 -
Junit单元测试
Junit单元测试测试分类:1.黑盒测试 不需要写代码 不需要关注代码的运行 只需要输入参数,看程序的运行结果2.白盒测试 需要写代码 需要关注代码的具体的执行流程3.Junit单元测试---白盒测试 1.定义一个测试类 测试类名 被测试的类Test 包名 2.定义一个测试方法 可独立运行 方法名:testAdd 返回值:void 参数列表:空参 3.给方法加注解 @Test 4.导入测试环境依赖 5.判定结果 红色为异常---绿色为测试成功 6.一般原创 2021-01-19 11:49:21 · 128 阅读 · 0 评论 -
IOC控制反转---DI依赖注入详解
一个问题面向过程------ 想象一个过程----当我们的计算机技术还没有这么发达的时候,所有的代码,就是建立在面向过程的。这种代码模式带来一个重要的问题,大项目的程序在写的过程中,会有相当的代码量是冗余重复的。不仅仅耗时耗力,一不小心就可能让我们的整个工程出现坍塌事故。面向对象------ 我们在写代码的过程中,发现很多的代码实例都是重复的,他们仅仅需要一个参数实例化,这样一样的代码就能起到不一样的作用,面向对象的编程出现了,一切皆可对象化,对象的实例化就是参数转移的过程。一个问题?---原创 2021-01-04 12:24:58 · 106 阅读 · 0 评论 -
序列化和反序列化
序列化和反序列化Java序列化是指将对象转化为字节序列的过程。Java反序列化是指将字节序列转换为对象的过程。为什么序列化写入硬盘,减少内存压力。进行数据的传输。进程通信间的数据传输。如何实现序列化ObjectOutputStream对象输出流----WriteObject();ObjectInputStream对象输入流------ReadObject();实现serialziable接口---进行序列化的接口 实现该接口 即可将该类进行序列化 transient---用来忽略不原创 2021-01-03 12:08:54 · 63 阅读 · 0 评论 -
对线程的认识(一)
线程我们知道进程是CPU的最小计算单元线程是CPU的最小执行单元在这个过程中,线程的执行权,可以理解为CPU将信息流的阀门为谁开启。线程就是计算机中带标记的信息流的路径,当CPU将阀门向谁打开时,谁就输送带标记的信息流。线程的目的也是进行信息流的输送。提高信息流的输送效率。线程的实质—让代码可以不按顺序执行—需要CPU计算的过程中可以单独执行不同的代码—线程即对需要执行的代码进行标记。线程有自己的编号,不同的编号有不同的作用。单线程单线程 代码的执行顺序不变 多线程 代码的执行顺序取决于执原创 2021-01-03 00:27:52 · 109 阅读 · 0 评论 -
IO流浅析一
IO流—是模型也是工具万物皆字节---万物信息流皆是字节的规则排列---破解信息流的排列规则---进行信息的传递和重排列。完成了信息的传输。IO流---进行信息传输的基本操作工具。IO流实现了数据从硬件到信息的传输---硬盘内存到文件信息的互相传输。管道模型理解IO流前我们先来讨论一下管道运输流模型。 管道---运输的渠道 管道连接的源---设备 管道运输过程中的分流、存储---风险控制/效率设备IO流可以理解为信息世界的管道系统。不同的设备硬件、内存、文件等理解为源。缓冲区等就是信息世原创 2020-12-31 16:27:48 · 72 阅读 · 0 评论 -
Java学习笔记(21)——网络编程(套接字)、TCP、UDP、简易聊天程序
网络编程(套接字)跟网络相关的操作实质都是数据传输。通过IO流在网络上实现数据传输。 网络模型---物理层---数据链路层---网络层---传输层(TCP/UDP)---会话层---表示层---应用层IP地址---确定主机在网络世界中的位置。 分类 IPV4 四位0-255来组成 IPV6四位16进制的数端口---用于和计算机外界进行数据交互的媒介。端口号---端口的标记 0-65535来表示。域名---域名可以和IP地址进行一一映射。IP和端口package com.hst.n原创 2020-12-28 16:46:18 · 174 阅读 · 2 评论 -
Java学习笔记(20)——通信和线程、单例设计者模式、装饰设计者模式、同步和异步、同步方法锁、同步代码锁、线程的优先级、生产消费者模型
计算机网络把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大,功能强的网络系统,从而使得众多的计算机可以方便地互相传递消息,共享硬件,软件和数据信息等资源网络编程的目的直接或间接的通过网络协议与其他计算机实现数据交换,进行通讯。两个主要的问题如何准确的定位网络上一台或多台主机,定位主机上的特定的应用 通信的双方地址 IP 端口号 一定的规则(网络通信协议)找到主机后如何高效的进行数据传输 网络通信协议 TCP / IP通信要素一 IP地址和端口号IP地址原创 2020-12-28 12:40:05 · 144 阅读 · 0 评论 -
Java学习笔记(19)——集合collection
集合collection可以存储多个数据,而且长度可以改变的容器。 Collection<E>是集合的顶级接口。 <E>---泛型 用于指定我们集合中元素的类型 由于泛型的指定集合中元素类型只能是引用数据类型 集合只能存储对象//创建集合 Collection collection = new ArrayList(); //添加元素 collection.add("苹果"); collection.add("西瓜"); collection.原创 2020-12-26 14:25:39 · 101 阅读 · 1 评论 -
Java练习笔记(1)——整数为什么会溢出&判断整数溢出异常的方法
整数为什么会溢出1. 计算机中的整数如何存储? 我们知道计算机中的符号化是根据ASCALL码来映射的。而计算机中的符合映射的基础是0和1. 即,符合在计算机中有对应的01序列。而0和1的序列组合的基础是二进制,因此,当我们想存 储整数在计算机内存中时,一般是将10进制的整数转换为二进制的01序列进行存储的。2.整型数据类型和二进制的关系是什么? 该问题将让我们对整型的存储有所了解。 首先,我们知道整型数据类型有4个字节组成,一个字节是8个比特,一个比特即为一个01序列中的位, 那么我们知道整原创 2020-12-15 21:59:12 · 1029 阅读 · 0 评论 -
Java练习笔记(5)——实现链表
超类Object Object 该类的对象可以存储任何类型的变量,包括基本数据类型和引用数据类型。当我们定义它的对象数组后,就可以将不同类型的值都传入到该数组,形成一个可以包含万物的数据结构。但问题是,超类的数组对象在我们想要拿出来使用时,如何给值赋予原来的数据类型?答案是没有答案的。 我们要如何解决这个问题?既然超类可以存储很多的值,那么当我们对值的存储进行一个限制的时候,能否实现呢?数据存储 我们定义两个类A,B A:用来存储我们每次输入的数据 B:用来对新数据和旧数据进行操作,实原创 2020-12-08 22:10:16 · 74 阅读 · 1 评论 -
Java练习笔记(2)——递归
递归在本方法中调用本方法进行的操作称为递归。递归的实质是变量作用范围的不断迭代还跳动。在一个方法中,当变量一直不断迭代而没有暂停时,该方法将一直递归。递归的两个重要难点是递归的停止条件和递归的变量作用变化。理解这两个点,那么递归将能实现大多数的图形美!下面用递归实现立体效果和平面效果的图:代码如下public void draw1(Graphics dra,int x,int y,int w,int h,int l) { if(l<2) { return; } Rect原创 2020-12-07 16:16:21 · 54 阅读 · 0 评论 -
Java练习笔记(4)——用数组实现简单数据结构
需要做的准备首先需要搞搞清楚以下问题:1.如何判断数组中有空值?因为我们在创建数组的时候,数组的每个位置都有自己的默认值,因此一般的遍历是否为null的操作不能判断为空。如何解决呢?(1)我们可以在数组中多加一个空间,用来判断数组的存储情况,如数组的第一个值a[0]用来存储数组的存储情况,当数组中的值填充一个时,a[0]加一,否则减一。(2)在对数组进行初始化时,将数组中的每个元素都赋值为一样的值如0,则判断0的位置就可以得到数组的使用情况。再判断数组是否为空。2.如何判断数组为空?可以参加下原创 2020-12-06 11:56:38 · 108 阅读 · 0 评论 -
Java练习笔记(7)——实现常用的排序算法
排序算法主要有以下6种:原创 2020-11-24 11:23:51 · 52 阅读 · 0 评论 -
Java学习笔记(19)——异常
异常Java中用于发现问题、反馈问题以及解决问题的一套机制。 Throwable---异常的顶级父类 子类 Error(错误---合理的应用程序 一般是由外界环境或者需求导致,通过改变环境或优化需求来改变) Exception(异常---合理的应用程序,可以处理也可以不处理)---抛出异常---捕获异常 分类 ArithmeticException算术异常 ArrayIndexOutOfBoundsException数组下标越界异常 NullPointerExcepti原创 2020-12-19 11:39:25 · 70 阅读 · 1 评论 -
Java学习笔记(18)——数学类、时间
数学类//数学类 //math //提供了大量的基本的数学运算 最终类 //三角函数 正弦值 向上向下取整ceil floor //四舍五入 round //产生随机数 random大于等于0 小于1 //加一个数 和乘一个数 可以将区间进行定义 //根据伪随机算法得到的 //BigDecimal //用于提供小数的精确运算保证参数是字符串形式 //BigInteger //用于超大数之间的运算时间Date类...原创 2020-12-19 10:49:38 · 47 阅读 · 1 评论 -
Java学习笔记(18)——包装类
包装类 基本数据类型操作起来很繁杂,Java为了提高操作基本类型数据的效率,提供了基本类型对应的类。只要创建出这些类的对象,就能够堆基本数据类型进行更加便携、方便的操作。byte Byteshort Shortint Integerlong Longfloat Floatdouble Doublechar Characterboolean Boolean注意: 1.八大包装类除了int和char以外都是首字母大写 2.见注释 3.原创 2020-12-18 23:00:33 · 73 阅读 · 2 评论 -
Java学习笔记(17)——正则表达式
正则表达式 根据指定的语法格式内容判断是否存在匹配的信息。正则表达式有丰富的语法格式,匹配效率很高。用特殊的语法格式匹配字符串指定的信息再进行操作。原创 2020-12-18 22:26:07 · 80 阅读 · 1 评论 -
Java学习笔记(16)——String、string中的方法
String最终类,没有子类;Java中的所有的字符串直接量都是string类的对象。 string类的对象都是常量,字符串都是常量,值创建后不能被改变, 因为字符串底层都是依赖于不可改变的字符数组来实现的,创建之后不能改变。 如果string类的对象的内容一致时,则会共享一个常量池里的引用。 如果等号右边的值都是直接常量,编译时进行优化,即将最终结果进行存储。//字符串创建对象的形式 String str1 = "ab"; String str2 = new String("ab")原创 2020-12-16 23:14:35 · 126 阅读 · 1 评论 -
Java学习笔记(15)——API、Object类
APIApplication Programing Interfaces 应用程序接口程序员说明书,利用程序生成的注释集合。学会使用API。提供一系列的接口与接口下的类。Object类1.所有类的父类,根类。2.由于Java是单继承和多重继承的集合,因此object可以认为是第一个类。即所有类的父类。本身没有父类。3.我们创建的所有的类,会在底层默认继承了Object类。4.属性和方法 作为所有类的父类,子类的对象可以调用父类的方法和属性。 API中没有写明修饰符的方法名称,默认为pu原创 2020-12-16 18:21:39 · 102 阅读 · 0 评论 -
Java学习笔记(14)——匿名内部类、Lambda、包
匿名内部类实现接口/继承类,用于重写构造方法,方法参数是接口类型/抽象类类型,只能传入实现类对象,子类对象。只使用一次。public static void main(String[] args) { Cola c = new Cola() {//匿名内部类重写接口方法 public int sum(int x,int y) {//匿名内部类的对象只能用一次 return x+y; } }; }}interface Cola{ //求和 public int原创 2020-12-16 15:54:54 · 111 阅读 · 0 评论 -
Java学习笔记(13)——abstract(抽象)、interface(接口)、接口和类的关系、内部类
abstractabstract 修饰方法 抽象方法 格式 : public abstract 返回值类型 方法名([可选参数列表]); //抽象方法不能有方法体 //抽象方法必须在抽象类中 抽象类 格式: abstract class 类名{ } 注意: 如果类中含有抽象方法,则要求该类也是抽象类; 抽象类可以不含有抽象方法。 抽象类的子类(1)如果也是抽象类,则不用重写父类的方法(2)如果是具体类,则需要重写父类的所有方法。...原创 2020-12-15 10:39:43 · 108 阅读 · 1 评论 -
Java学习笔记(12)——final(最终)
final用final修饰引用、方法、类; final修饰引用——常量<常量名全部大写>,其修饰的值也不能再被改变。常量变量不可发生变化的值。 final修饰方法——不可以重写。可以重载。可以重载。 final修饰的类——不可以被继承。静态常量 static final 同时具备static与final的特性,类加载的时候使用,不可改变。...原创 2020-12-14 10:56:19 · 56 阅读 · 0 评论 -
Java学习笔记(11)——static静态修饰符
static关键字,用来修饰属性,方法,类,代码块方法区中有静态常量池,首先加载,核心内库再将static类加载进去.方法区中有静态区,将main方法加载到静态区,在静态区存储,静态static关键字修饰的变量只有一个地址,不管创建多少对象,不同对象保存的地址都是同一个,因此新创建的对象会覆盖上面的对象。类加载后不会移除,直到整个程序运行到结果。静态变量是随着类加载被加载到方法区的静态区当中,直到类被移除才会释放。static修饰变量时的使用环境 1.如果每个对象的特征点不一样不适合 2.原创 2020-12-14 00:08:54 · 89 阅读 · 0 评论 -
Java学习笔记(10)——this、构造代码块、局部代码、匿名对象、面向对象的特征
this除了静态方法和静态变量其他的都需要通过对象来访问。this指代的是当前的对象,灵活的表现方式。this可以为对象属性赋值。可以调用当前类的其他方法。原创 2020-12-13 13:23:32 · 62 阅读 · 0 评论 -
Java学习笔记(9)——方法重写、重载、面向对象、面向过程
方法重载、重写方法重载——在同一个类中,方法名相同,方法的参数不一样。方法重写——在继承父类的过程中,子类的方法和父类的方法一样。面向对象面向过程更关注过程,关注的是功能实现过程中的每一步。面向对象更关注对象,找到一个具备需求功能的对象,通过使用对象身上的所有的功能就可以完成整个过程。面向对象的优势: 1.接近人类思考问题的方式。 2.面对大型复杂项目,更利于模块化开发和人员的分工合作。 3.面向工程比面向对象更有效率,更直接。创建对象Classname name1; //创建一原创 2020-12-11 23:57:25 · 95 阅读 · 0 评论 -
Java学习笔记(8)——方法、return、形参和实参、方法的递归
方法在代码中为了实现重复利用同一段代码和逻辑而存在的功能。每个方法都有自己运行的一个栈空间。格式: 修饰符 返回值类型 方法名(参数列表){ 方法体; return 返回值; }returnreturn后面的方法不再执行,编译器遇到return后就会停止执行。return常常用在递归迭代中,用于停止运行函数。形式参数和实际参数形式参数是指方法在定义过程中参数列表中的变量。实际参数是指在使用方法的过程中传入的参数。在方法调用时,实际参数的值被复制给形式参数,因此实参在进原创 2020-12-11 18:11:37 · 196 阅读 · 0 评论 -
Java学习笔记(7)——数组的复制和扩容
数组复制数组的复制可以有三种方法1.暴力复制,即直接通过for循环来对数组进行复制,将本数组的值遍历传给新的数组2.System.arraycopy(a,b,c,d,e) 其中有五个参数 a,原数组 b,从原数组哪里开始复制 c,新数组 d,新数组哪里开始传入 e,新数组哪里开始结束3.Arrays.copyOf(a,b) a,表示原数组 b,表示将原数组的多少个元素复制过来数组扩容数组的扩容是指增加数组的容量,存放更多的元素一般数组的扩容,思路就是创建新的容量更大的数组,将旧的原创 2020-12-08 17:42:41 · 195 阅读 · 0 评论 -
Java学习笔记(6)——Java内存、查找数组元素
Java内存Java内存分为 堆内存 栈内存 方法区 || 本地方法栈 寄存器||(不常用) 栈内存: 变量开辟空间时常在该空间,变量使用完开辟的空间后会被释放。 声明变量的过程是在栈内存中申请空间。 变量不会被默认赋初始值。 栈内存是用来存储整体数据的地方,比如数组只存储它的地址。一般情况下考虑整体声明的变量都是栈内存。 堆内存: 对象存储在堆内存中。 new关键字处理的变量都存储在堆内存中。 数组在进行声明时,左边的部分将地址存储在栈内存中, 右边的部分将数组类型的原创 2020-12-08 17:08:14 · 130 阅读 · 0 评论 -
Java学习笔记(5)——for、while、dowhile、if、elseif、else、switch...case
forfor(int i=a;i<b;i++){//a为循环开始时已知的值,b为比a大的值//判断过程,当i为a 时 i是不是小于b,如果小于b,则执行括号里面的语句,否则i++,再判断是不是小于b,依次往复}whilewhile(执行条件){ //当执行条件为真时,执行括号中的语句,否则直接进入后面的语句 //while语句是先判断后执行}do{}while();do{ 执行内容//该程序语句是不管三七二十一,先干了再说}while(判断条件);//注意要用分号结束原创 2020-12-08 11:01:16 · 170 阅读 · 0 评论 -
Java学习笔记(4)—— 数据类型、变量的作用域、数据类型的转换、运算符
数据类型基本数据类型 四类八种:字节byte 整型short int long 浮点型float double 字符型char 布尔型boolean int 类型 4字节 32位 byte类型 1字节 8位 布尔型 1字节 8位 字符型 两字节 16位 字节中——>0正数1负数 字符型char类型 两个字节 使用单引号输入 可存转义字符 当将数字整型数字存入整型时 输出的是码表中的对应的字母。char的底层是int的运算。 布尔型boolean 一个字节 两个值 t原创 2020-12-07 23:46:49 · 114 阅读 · 2 评论