
Java基础学习笔记
Java基础学习笔记,记录一些学习的知识点。
蝴蝶不愿意
这个平台把我写的一些文章私自改成VIP,我不在这里写了,换成GitHub了。
展开
-
AOP进阶-连接点
在环绕通知当中我们是可以获取到目标方法运行的返回值的,因为我们会调用原始方法执行。如果是前置通知,我们是拿不到目标方法运行的返回值的,因为前置通知它是在原始方法运行之前运行的。原创 2025-02-21 01:38:17 · 296 阅读 · 0 评论 -
AOP进阶-切入点表达式-@annotation
自定义注解·测试。原创 2025-02-21 01:00:41 · 311 阅读 · 0 评论 -
AOP进阶-切入点表达式
方法的返回值是void,方法的形参也是一个 Integer类型的参数。这个mapper接口当中的delete方法可以和切入点表达式匹配,所以这个通知方法运行了两次。一次是在service的delete方法运行之前运行的,另外一次是在mapper接口的delete方法运行之前运行的。我们在运行单元测试方法的时候,调用的是deptService当中的delete这个方法,在运行这个实现类当中的delete方法时又调用。因为一旦将包名.类名直接省略了,这个表达式匹配的范围过大,就会影响匹配的效率。原创 2025-02-20 22:38:39 · 197 阅读 · 0 评论 -
AOP进阶-通知顺序
after是在原始方法运行之后的通知,它的运行顺序是4,3,2。这个和切面类的类名有关系,在原始方法运行之前运行的这些通知,类名排名越靠前越先执行。而在原始方法运行之后的这些通知,类名排名越靠前越后执行。假如我想让4这个切面类当中的前置通知先执行,然后让5的前置通知执行,最后让3的前置通知执行。1.不同的切面类当中,默认情况下,通知的执行顺序是与切面类的类名字母排序有关。MyAspect切面类,切面类里面的连接点方法是一样的,只是输出的内容不同。默认的情况下,通知的执行顺序是与切面类的类名排序有关系。原创 2025-02-20 18:54:42 · 200 阅读 · 0 评论 -
AOP进阶-通知类型
在定义通知方法之后,我们上面加上了不同通知类型对应的注解。而每一个注解里面,我们都需要指定这个切入点表达式,这些切入点表达式都是一摸一样的,此时代码当中就存在了大量的重复性代码,就是这个切入点表达式重复了。假如说此时切入点表达式需要变动,就需要将所有的切入点表达式一个一个来改动。在Java当中如果存在重复性的逻辑想复用可以通过抽取。@Pointcut():声明切入点表达式的注解。如果想在其他的切面类当中来引用访问修饰符需要改成。原创 2025-02-20 17:25:54 · 253 阅读 · 0 评论 -
AOP基础-核心概念
在这个代理对象当中就会对目标对象当中的原始方法进行功能的增强,增强的逻辑就是我们定义的通知。首先在方法运行开始之前,先记录方法运行的开始时间,然后接下来再来调用原始的方法执行,对于下面的实例图来说原始的方法就是list()方法,那接下来在代理对象当中,就会来执行原始的list()方法当中的逻辑。最终在程序运行的时候,在注入的时候就不再注入的是这个目标对象,而注入的是这个代理对象。最终在调用list()方法的时候,其实调用的就是代理对象当中的list()方法,而这个list()方法已经进行了功能的增强。原创 2025-02-19 03:41:11 · 237 阅读 · 0 评论 -
AOP基础-快速入门
如果我们是基于AOP面向方法进行编程,此时就可以在不改动这些原始方法的基础上,来针对原始的方法进行编程,这个编程可以是对原始方法功能的增强,也可以是改变原始方法的功能。我们就可以在这个方法开始运行之前,来记录这个方法开始运行的开始时间,然后在方法结束运行的时候, 再来记录这个方法运行的结束时间,中间就来运行原始的业务方法,这里的原始业务方法指的是需要统计执行耗时的业务方法。在里面通过一个表达式来指定当前这些共性的功能我应该加在哪些方法上。来指定当前这一部分共性的逻辑我要作用在哪些方法上,原创 2025-02-19 03:11:59 · 265 阅读 · 0 评论 -
Java基础学习笔记-接口
接口是用来被类实现的(implement),实现接口的类称为实现类,实现类可以理解成所谓的子类。>接口之间可以通过extends实现继承关系,一个接口可以继承多个接口,但是接口不能继承类。4.一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写该方法即可。3.一个类继承了父类,同时有实现了接口,父类中和接口中有同名方法,默认用父类的。5.一个接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承。>实现接口的类必须实现接口中定义的所有抽象方法。原创 2025-02-10 18:51:41 · 362 阅读 · 0 评论 -
Java基础学习笔记-抽象类和抽象方法
当一个类被定义为抽象类时,它可以包含各种类型的成员,包括属性、方法等,其中方法有可以分为普通方法和抽象方法。继承抽象类的特征和注意事项:一个类如果继承了抽象类,那么这个类必须重写抽象类的全部抽象方法,否则这个类也必须定义成抽象类。·抽象方法只能定义在抽象类中。但是抽象类中可以包括抽象方法,也可以包含普通方法,还可以包含普通类包含的一切成员。如果继承的类是抽象类,不一定要实现抽象父类的所有抽象方法。如果继承的类是普通类,一定要实现抽象父类的所有抽象方法。抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。原创 2025-02-10 17:37:01 · 413 阅读 · 0 评论 -
Java基础学习笔记-枚举
枚举类都是继承了枚举类型:java.lang.Enumn。枚举的构造器都是私有的,枚举对外不能创建对象。枚举的作用:是为了左信息的标志和信息的分类。枚举类的第一行默认都是罗列枚举对象的名称的。第一行都是罗列枚举类实例的名称。枚举是Java中的一种特殊类型。枚举都是最终类,不可以被继承。修饰符 enum 枚举名称{枚举类相当于是多例模式。原创 2025-02-10 17:04:28 · 127 阅读 · 0 评论 -
Java基础学习笔记-多态
而在程序设计的术语中,它意味着一个特定类型的变量可以引用不同类型的对象,并且能自动地调用引用的对象的方法,也就是根据作用到的不同对象类型,响应不同的操作。>将一个指向子类对象的父类引用赋给一个子类的引用,即将父类类型转换为子类类型,称为向下转型,此时必须进行强制类型转换。定义方法的时候,使用父类型作为参数,该方法就可以接收这父类的一切子类对象,体现出多态的扩展性与便利。判断关键字左边的变量指向的对象的真实类型,是否是右边类型或者是其子类类型,是则返回true,反之。原创 2025-02-09 23:13:50 · 465 阅读 · 0 评论 -
Java基础学习笔记-包与权限修饰符
可以修饰成员变量,方法,构造器,内部类,不同权限修饰符修饰的成员能够被访问的范围将受到限制。导包 相同包下的类可以直接访问,不同包下的类必须导包,才可以使用!如果这个类中使用不同包下的相同的类名,此时默认只能导入一个类的包,另一个类要使用全名访问。·如果该成员只希望本类,同一个包下的其他类和子类访问,使用protected修饰。包是用来分门别类的管理不同类的,类似于文件夹,建包利于程序的管理和维护。·如果该成员只希望本类访问,使用private修饰。·权限修饰符:是用来控制一个成员能够被访问的范围。原创 2025-02-08 23:48:04 · 137 阅读 · 0 评论 -
Java基础学习笔记-super关键字与final关键字
(1)如果子类的构造方法中没有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。·子类通过this(...)去调用本类的其他构造器,本类其他构造器会通过super去手动调用父类的构造器,最终还是会调用父类构造器的。(2)如果子类的构造方法中通过super显式地调用了父类的有参构造方法,那么将执行父类相应的构造方法,而不是执行父类的无参构造方法。子类中所有的构造器默认都会先访问父类中无参的构造器,再执行自己的构造器。原创 2025-02-08 23:31:56 · 352 阅读 · 0 评论 -
Java基础学习笔记-方法重写
在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类这个方法是重写的方法。>重写涉及的是子类和父类之间的同名方法,要求方法名相同、参数列表相同、返回值类型相同。(继承)重写:子类对父类方法进行重写,要求方法名、参数列表、返回类型全部一致。>重写方法的返回值类型必须和被重写方法的返回值类型相同或是其子类。·重写的方法名称、参数列表必须与被重写方法的名称和参数列表一致。>重写方法和被重写方法必须具有相同的参数列表。>重写方法和被重写方法必须具有相同的方法名。>重写方法不能缩小被重写方法的访问权限。原创 2025-02-08 20:29:19 · 217 阅读 · 0 评论 -
Java基础学习笔记-继承
Java中所有类,要么直接继承了Object,要么默认继承了Object,要么间接继承了Object,Object是祖宗类。继承的设计规范:子类们相同(共性属性,共性方法)放在父类中定义,子类独有的属性和行为应该定义在子类自己里面。1.在现有类(父亲)的基础上创建一个新的类(子类),子类继承父类一部分的属性和方法(私有成员不能被继承)。继承是面向对象的三大特性之一,继承可以解决编程中代码冗余的问题,是实现代码重用的重要手段之一。1.子类可以继承父类的属性和行为,但是子类不能继承父类的构造器,原创 2025-02-08 18:17:37 · 294 阅读 · 0 评论 -
Java基础学习笔记-Java的参数传递机制
对于引用数据类型,赋值是把原对象的引用(可以理解为内存地址)传递给另一个引用。对于数组而言,当用一个数组名直接给另外一个数组名赋值时,相当于传递了一个引用,此时,这两个引用指向同一个数组,也就是指向同以内存空间。对于基本数据类型,不同的变量会分配不同的存储空间,并且存储空间中存储的是该变量的值。赋值操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。在传数实参给方法的形参的时候,并不是传输实参变量本身,而是传输实参变量中存储的值,这就是值传递。·引用类型的参数传输存储的地址值。原创 2025-02-08 00:10:13 · 228 阅读 · 0 评论 -
Java基础学习笔记-static关键字
Java中,一般情况调用类的成员都需要先创建类的对象,然后通过对象进行调用。使用static关键字可以实现通过类名加“.”直接调用类的成员,不需要创建类的对象。由于工具里面都是静态方法,直接用类名即可访问,因此,工具类无需创建对象,建议将工具类的构造器进行私有。用static修饰的属性称为静态变量或者类变量,没有使用static修饰的属性称为实例变量。用static修饰的方法称为静态方法或者类方法,不用static修饰的方法称为实例方法。·实例方法可以访问静态的成员,也可以访问实例的成员。原创 2025-02-07 23:57:16 · 273 阅读 · 0 评论 -
Java基础学习笔记-封装
封装反映了事物的相对独立性,有效避免了外部错误对此对象的影响,并且能对对象使用由于大意产生的错误操作起到预防作用。特征的含义:所谓特征指的是已经称为Java设计代码的基本特点,即使毫无意义,通常也要满足这样的设计要求来编写程序。为每一个成员变量提供配套public修饰的getter、setter()方法暴露其取值和赋值。>Java中封装的实质就是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而是通过。封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。有参构造器是可写可不写的。原创 2025-02-07 17:30:32 · 278 阅读 · 0 评论 -
Java基础学习笔记-成员方法
方法重载其实是对原有方法的一种升级,可以根据参数的不同,采用不同的实现方法,而且不需要编写多个名称,简化了类调用方法的代码。成员变量的作用域是在整个类内部都是可见的,所有成员方法都可以使用它,如果访问权限允许,还可以在类外部使用成员变量。方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数类型或参数个数。在不同的方法中,可以有同名的局部变量。类中的属性,也就是直接在类中定义的变量称为成员变量,它定义在方法的外部。局部变量的作用域仅限于定义它的方法,在该方法外无法访问它。原创 2025-02-07 16:42:20 · 280 阅读 · 0 评论 -
Java基础学习笔记-构造方法
2.用this来调用成员方法:this.成员方法,this可省略。当我们没有定义构造方法的时候,系统会自动创建一个无参的构造方法。c.在构造方法中调用构造方法必须放在第一行,并且只能出现一次。2.格式:[访问修饰符] 方法名称([参数列表]){ }当我们定义以后,系统不会自动创建一个无参的构造方法。(即使连void也不行)。b.不能在两个构造方法中互相调用。this([参数1,参数2])1.实例化时自动调用:初始化。1.用this来调用属性。b.方法名与类名一致。a.只能在构造方法中。原创 2025-02-06 23:54:52 · 110 阅读 · 0 评论 -
Java基础学习笔记-创建和使用对象
对象数组:数组的元素是对象。对象数组的数据类型就是具体的类名,对象数组存储的就是这个类的对象,每个数组元素就是一个对象,当根据下标找到某个元素时,可以按照对象的使用方法来使用该元素。类是一类事物的集合和抽象,代表这类事物共有的属性和行为。一个对象称为类的一个实例,是类一次实例化的结果。在Java中,要引用对象的属性和方法,需要使用“.”。类对象可以调用类中的成员,如属性和方法等。对象名.方法名() //引用对象的方法。>右边的类名()称为类的构造方法。>左边的类名为对象的数据类型。原创 2025-02-06 23:40:34 · 102 阅读 · 0 评论 -
Java基础学习笔记-面向对象的基本概念
返回类型可以是void,在定义方法时,返回类型为void时表明没有返回值,方法体中不必使用“teturn”关键字返回具体数据,但是可以使用“return”关键字退出方法。方法的返回类型为void(无返回值),方法内则不能使用return返回数据,如果方法的返回类型写了具体类型,方法内部则必须使用return返回对应类型的数据。>当需要在方法执行的时候为方法传递参数时才需要参数列表,如果不需要传递参数就可以省略,不过小括号不可以省略,传递多个参数时,以半角的逗号进行分隔。对象执行操作的行为称为类的方法。原创 2025-02-06 23:24:39 · 454 阅读 · 0 评论 -
Java基础学习笔记-数组
boolean类型数组元素的默认值是false、String类型数组元素的默认值是null。4.布尔类型数组的元素默认值都是false----------boolean。5.引用类型数组的元素默认值都是null----------String。3.浮点型数组的元素默认值都是0.0----------double。数组的最大索引-数组名.length-1//前提元素个数大于0。2.字符数组的元素默认值都是0----------char。1.整型数组的元素默认值都是0----------int。原创 2025-02-06 18:13:41 · 455 阅读 · 0 评论 -
Java基础学习笔记-跳转语句
在while和do-while循环中,continue执行完毕后,程序将直接判断循环条件,如果为true,则继续下一次循环;Java语言支持3种类型的跳转语句:break语句、continue语句、return语句。continue语句的作用是强制循环提前返回,也就是让循环跳过本次循环中的剩余代码,然后开始下一次循环。break语句在循环中的作用是终止当前循环,在switch语句中的作用是终止switch。return语句的作用是结束当前方法的执行并退出返回到调用该方法的语句处。2.continue语句。原创 2025-02-05 22:28:39 · 216 阅读 · 0 评论 -
Java基础学习笔记-循环结构
其中while循环称为外层循环,for循环称为内层循环,因为是两层嵌套,所以称为二重循环。3)for循环:先执行变量初始化部分,再判断循环条件,然后执行循环体,最后进行循环变量的计算。(4)循环语句执行完毕后执行表达式3,改变循环变量的值,再次执行表达式2,如果结果为真,继续执行。2)do-while循环:先执行循环体,再判断循环条件,循环体至少执行一次。·功能上是完全一样的,for能解决的,while也能解决,反之亦然。(1)首先对循环条件的结果进行判断,如果结果为真,则执行循环语句。原创 2025-02-05 22:12:50 · 455 阅读 · 0 评论 -
Java基础学习笔记-顺序结构、选择结构
JDK1.7后,switch后的表达式可以是int、short、byte、char、枚举类型、String类型的表达式,不支持double、float、long。1.表达式类型只能是byte、short、int、char、JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。嵌套if控制语句可以通过外层语句和内层语句的协作,来增强程序的灵活性。1.在上述3种if控制语句中,条件表达式的值必须是布尔类型,这是Java语言与C、C++语言的不同之处。原创 2025-02-05 19:51:21 · 1028 阅读 · 0 评论 -
Java基础学习笔记-常用运算符
运算符就是告诉程序执行特定的运算操作的符号。Java提供了6类运算符,分别是赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符和条件运算符。### 1.赋值运算符赋值运算符“=”用于给变量指定变量值,并可以和算术运算符结合,组成复合赋值运算符。复合赋值运算符主要包括“+=” “-=” “*=” “/=” “%=”。int i = 5;int j = 15;i = i + j;//可以替换为i += j;分析:推荐使用复合赋值运算符,将“i = i + j”换为"i += j",此写法便于程原创 2025-02-05 00:11:22 · 378 阅读 · 0 评论 -
Java基础学习笔记-强制类型转换
不同基本数据类型之间进行运算时需要进行类型转换。除布尔类型外,所有基本数据类型进行运算时都要考虑类型转换,主要应用在算术运算时和赋值运算时。int类型强制转换为byte时,int的低位第一字节的数据00000011在强制类型转换中会丢失。不同类型的操作数,首先自动转换为表达式中最高级别的数据类型然后进行运算,运算的结果是最高级别的数据类型,简称低级别自动转换为高级别。将高级别的类型赋值给低级别类型时,必须进行强制类型转换。将低级别的类型赋值给高级别类型时将进行自动类型转换。存储位数越多,类型的级别越高。原创 2025-02-04 18:09:06 · 164 阅读 · 0 评论 -
Java基础学习笔记-标识符、变量、常量、关键字
Java自己保留的一些单词,作为特殊功能的,例如:public、class、byte、short、int、long、double...我们不能用来作为类名或者变量名称、否则报错。数据类型:强制限制盒子中存储数据的形式,例如:int(整数类型)、double(小数类型)。2.变量的有效范围是从定义开始到"}"截止,且同一个范围内部不能定义2个同名的变量。在Java中,标识符用来为程序中的常量、变量、方法、类、接口和包命名。2.标识符的首字母以字母、下划线、或美元符号开头,不能以数字开头。原创 2025-02-04 17:56:51 · 559 阅读 · 0 评论 -
Java学习前提了解
计算机最小的组成单元是:使用8个进制位一组,来保存数据,我们称之为一个字节(byte,简称B)。注意:随便写一个整数字面量默认是int类型的,132223244244虽然没有超过long的范围,但是它超过了本身int类型的表示范围。字符串 黑马,hello "黑马" ,"hello" 程序中必须使用双引号,内容可有可无。数据在计算机底层采用二进制:使用0、1,按照逢2进1的规则来表示数据的存储。我们的程序只需要开发一次,就可以在各种安装了JVM的系统平台上运行。原创 2025-02-04 17:50:48 · 295 阅读 · 0 评论