黑马Java
小白冲冲冲123
这个作者很懒,什么都没留下…
展开
-
Java 面向对象进阶 18 JDK8、9开始新增的方法;接口的应用;适配器设计模式;内部类(黑马)
如果实现了多个接口,多个接口存在相同名字的默认方法,子类就必须对该方法进行重写:(因为如果不重写的话,就不知道调用的是哪个接口的show方法)子类把从父类继承下来的虚方法表里面的方法进行覆盖了,这才叫重写,但是私有的,最终的,静态的是不会添加到虚方法表中,所以不叫重写。2. 实现事件监听器:内部类可以实现事件监听器接口,在外部类中注册监听器对象,当特定的事件发生时,内部类的方法会被调用。4. 实现迭代器:内部类可以作为外部类的成员,实现迭代器接口,可以用于遍历外部类中的数据结构。原创 2024-02-25 10:56:14 · 551 阅读 · 0 评论 -
Java 面向对象进阶 17 接口案例(黑马)
推荐使用第一种,因为第一种的接口较少;原创 2024-02-23 11:16:56 · 371 阅读 · 0 评论 -
Java 面向对象进阶 16 接口的细节:成员特点和接口的各种关系(黑马)
接口的成员变量默认是public static final的,因此可以直接通过接口名访问和使用。这样做的好处是,在实现该接口的类中,无需再次声明和初始化这些成员变量,可以直接使用。Java中接口中成员变量默认修饰符是public static final的原因是为了确保接口的成员变量都是公共的、静态的和不可修改的。- static修饰符使得接口的成员变量可以在没有实例化接口的情况下直接访问。- final修饰符确保了接口的成员变量是不可修改的,即常量。原创 2024-02-22 22:07:44 · 450 阅读 · 0 评论 -
Java 面向对象进阶 15 接口(黑马)
【代码】Java 面向对象进阶 15 接口(黑马)原创 2024-02-22 20:46:54 · 367 阅读 · 0 评论 -
Java 面向对象进阶 14 抽象类和抽象方法(黑马)
有两种选择:1、重写所有抽象方法;2、子类也是抽象类(推荐第一种)可以有构造方法:(作用:在创建子类对象时,给属性进行赋值的)原创 2024-02-22 20:05:19 · 348 阅读 · 0 评论 -
Java 面向对象进阶 13 包,final,权限修饰符,代码块(黑马)
但是不够灵活,因为可能有的不需要这个方法,但是仍会执行构造代码块里面的内容,可以使用以下两种方法代替构造代码块;将switch,case循环里面的1,2,3,4,5改为常量,增加可读性。3、执行机制:我们在创造类对象的时候时候会先执行构造代码块,再执行构造方法。如果当前方法表示的是一种规则,不希望被改变,那么就使用final去修饰。3、如果方法中的代码是抽取其他方法中共性代码,这个方法一般也私有;不希望被继承的时候,可以使用final去修饰类;核心:常量记录的数据是不会改变的;2、成员变量私有,方法公开;原创 2024-02-22 17:15:48 · 871 阅读 · 0 评论 -
Java 面向对象进阶 12 多态的综合练习(黑马)
【代码】Java 面向对象进阶 12 多态的综合练习(黑马)原创 2024-02-22 08:56:40 · 310 阅读 · 0 评论 -
Java 面向对象进阶 11 多态的优势和弊端(黑马)
【代码】Java 面向对象进阶 11 多态的优势和弊端(黑马)原创 2024-02-21 20:20:19 · 348 阅读 · 0 评论 -
Java 面向对象进阶 10 多态中调用成员的特点(黑马)
如果时Dog d = new Dog();那么就直接区子类找name,不会先去父类开始找,找不到再到父类去找;如果调用成员方法时,编译时发现父类没有该方法,就会标红。原创 2024-02-21 19:37:19 · 358 阅读 · 0 评论 -
Java 面向对象进阶 09 认识多态(黑马)
【代码】Java 面向对象进阶 09 认识多态(黑马)原创 2024-02-21 16:50:48 · 338 阅读 · 0 评论 -
Java 面向对象进阶 08 继承中构造方法的访问特点、this和super关键字使用总结(黑马)
关于this关键字的访问构造方法的解释:在为成员变量赋默认值的时候使用this(...),并且和super一样,必须在第一行,不然会报错。原创 2024-02-21 14:02:30 · 360 阅读 · 1 评论 -
Java 面向对象进阶 07 继承中成员变量,成员方法的访问特点(黑马)
对于重名的情况,没有关键字,那么就是就近原则,打印出的是ziShow;调用的是A的虚方法表里的method 1,和覆盖的method 2;调用的是B的虚方法表里的method 1,和覆盖的method 2;this.name 指的是Zi(在本类的成员变量去找)因为this是就近原则,super直接去父类找。下面涉及到了重写,需要加上@override;super.name 指的是父类中的Fu;这种情况打印出来的结果是Zi。打印结果为:zishow。这种情况打印的是Fu。原创 2024-02-20 20:52:51 · 546 阅读 · 0 评论 -
Java 面向对象进阶 06 子类到底能继承父类中的哪些内容(黑马)
子类如果继承父类的构造方法,那么构造方法的类名和子类的类名不一样,所以父类构造方法不能被子类继承。构造方法是用于创建对象并初始化对象的特殊方法,它在创建对象时自动调用,并且由于构造方法与类名相同,因此不能被子类继承。子类只能继承父类的非私有成员变量和非私有方法,但构造方法不属于类的成员变量和方法,所以子类无法继承父类的构造方法。每个类都必须有自己的构造方法来初始化自己的对象。然而,子类可以通过调用父类的构造方法来初始化父类的成员变量,使用super关键字来调用父类的构造方法。这样的操作可以在子类中创建父类的原创 2024-02-19 22:46:04 · 1859 阅读 · 0 评论 -
Java 面向对象进阶 05 继承的特点(黑马)
创建一个测试类,七个javabean类:代码:代码截图:子类只能访问父类中非私有的成员:原创 2024-02-01 11:40:40 · 339 阅读 · 0 评论 -
Java 面向对象进阶 04 继承的概述(黑马)
原创 2024-01-31 22:43:29 · 409 阅读 · 0 评论 -
Java 面向对象进阶 03 static 注意事项、重新认识main方法(黑马)
案例代码如下:非静态的方法虚拟机会自带一个关键字,如下:但是不能手动出来,它的类型就是当前类;通过输出this,得到当前s1,s2 的地址;所以在输出时会有隐藏的this,所以this所指向的s1 的名字,年龄,和老师年龄。由于方法里面没有与成员变量重名,所以可以不写this;如果添加show2 方法,那么在程序运行的时候,this.show2();就代表,s1调用show2,和s2 调用show2;原创 2024-01-31 22:26:19 · 871 阅读 · 0 评论 -
Java 面向对象进阶 02 static 静态方法和工具类(黑马)
【代码】Java 面向对象进阶 02 static 静态方法和工具类(黑马)原创 2024-01-31 20:57:11 · 387 阅读 · 0 评论 -
Java 面向对象进阶 01(黑马)
在执行main方法的第一个语句时,是用类名调用了Student方法中的静态变量teacherNmae并赋值为阿伟老师,用到了Student这个类,所以就会把Student类的字节码文件加载到方法区,并在内存中创建了一个单独存放静态变量的空间,即为静态区。静态区随着类的加载而加载,只有new关键字执行了才有对象,所以静态变量优先于对象而存在的。在jdk8之前,静态区在方法区里面,在jdk8以后就存存放在了堆里面。在堆中创建的空间,存储的是所有的非静态成员变量;在不同的场景下,思考是否可以共享;原创 2024-01-30 22:10:08 · 759 阅读 · 0 评论 -
Java 学生管理系统
java中的system.exit(0)表示程序正常退出的意思。在程序执行过程中,如果某个条件满足需要立即终止程序的执行,可以使用system.exit(0)来实现。其中参数0表示退出码,0表示正常退出,非0表示异常退出。调用system.exit(0)会终止当前正在执行的线程,并且关闭所有的非守护线程。输入的String类型,可以提高容错性,输入abc也可以,下面Switch case循环的 1 为字符串类型,要加双引号;循环遍历与判断id是否存在重复,所以,可以通过调用getIndex方法,进行简化。原创 2024-01-30 20:11:27 · 670 阅读 · 0 评论 -
Java 集合 05 综合练习-返回多个数据
如果在方法中打印元素的话,虽然也可以实现输出符合条件的元素,但是后续如果要使用就不方便。原创 2024-01-29 21:23:27 · 593 阅读 · 0 评论 -
Java 集合 04 综合练习-查找用户是否存在
注意点:带有返回值的方法在返回值返回后,会立即结束该方法的执行。任何在返回值后面的代码都不会执行。这是因为返回值是方法的结果,一旦返回结果,方法的任务就完成了,没有必要继续执行后续的代码。视频代码:直接在contains方法中调用getIndex方法,这样不用再写一次循环。javabean代码一样。原创 2024-01-29 20:17:58 · 747 阅读 · 0 评论 -
Java 集合 03 综合练习(黑马)
原因是:第一次创建学生对象后,地址是0x0011,将zhangsan 23复制进去后,存储到集合中,接下来并没有再次创建对象,所以还是对同一个对象赋值,变为lisi 24,再将0x0011放进集合中,最后输入的是wangwu 25,仍然是对这个对象赋值,所以,存入集合中的是三个一样的地址都是0x0011,所以指向的都是同一个对象,所以输出的都是wangwu 25;在没有重写toString()方法的情况下,toString()方法返回的是对象的地址值。问题1、没有执行添加的循环,最后集合长度为0;原创 2024-01-29 19:14:02 · 499 阅读 · 0 评论 -
Java 集合 02 综合练习+基本数据类型对应的包装类
【代码】Java 集合 02 综合练习+基本数据类型对应的包装类。原创 2024-01-29 15:28:53 · 394 阅读 · 0 评论 -
Java 集合 01
集合的容量是可以变的可以将基本数据类型变为包装类存入集合中;原创 2024-01-29 14:43:34 · 603 阅读 · 0 评论 -
Java 字符串 10 字符串相关类的底层原理
在jdk8之前,使用StringBuilder,先创建一个StringBuilder 对象,把s1放进去,再把s2放进去,最后再通过toString,创建一个String对象,然后再创建一个StringBuilder 对象,把刚才ab放进去,再将s3放进去,最后再通过toString,创建一个String对象,至少创建四个对象。s2右边没有变量,所以在编译的时候,触发了优化机制,所以在运行的时候,直接复用串池里面的abc,所以地址是一样的,所以为ture;但是预估也需要时间,所以,要避免直接+;原创 2024-01-27 17:38:54 · 433 阅读 · 0 评论 -
Java 字符串 09 StringJoiner(可以指定间隔符号,开始符号,结束符号)
长度代表,最后打印出来的所有长度;原创 2024-01-27 16:29:12 · 380 阅读 · 0 评论 -
Java 字符串 08 StringBuilder
当我们使用 StringBuilder 进行操作时,每次操作都是在原有的字符串上进行修改,而不会创建新的字符串对象。StringBuilder 是一个可变的字符序列,它可以进行字符串的添加、删除、修改等操作,而 String 是一个不可变的字符序列,一旦创建就不能修改。反转元素:在容器内部直接发生了反转,和字符串不一样,字符串本身不呢个改变,需要有返回值去承接,而这个是直接改变了容器内的东西。输入abc,从b截取到末尾,就是bc,没有A, 则不替换,再获取长度,等于2;原创 2024-01-27 15:25:12 · 388 阅读 · 0 评论 -
Java 字符串 07 练习-手机号屏蔽、身份证号信息查看,游戏骂人敏感词替换
将字符串里面的是数字的字符转换为数字运算,用id.charAt()获取单个字符,然后通过ASC||码表里面对应来运算,注意点:只有返回值才是被截取的小串,所以需要有一个变量去承接它;’0‘是48,’9‘是57;原创 2024-01-27 11:18:47 · 483 阅读 · 0 评论 -
Java 字符串 06 练习-字符串拼接、反转、金额转换(黑马)
【代码】Java 字符串 06 练习-字符串拼接、反转、金额转换(黑马)原创 2024-01-26 21:43:47 · 568 阅读 · 0 评论 -
Java 字符串 05 练习-遍历字符串和统计字符个数
【代码】Java 字符串 05 练习-遍历字符串和统计字符个数。原创 2024-01-25 21:57:15 · 462 阅读 · 0 评论 -
Java 字符串 04 练习-用户登录
【代码】Java 字符串 04 练习-用户登录。原创 2024-01-25 20:41:57 · 335 阅读 · 0 评论 -
Java 字符串03 String构造方式代码实现和内存分析 (黑马)
str1通过键盘录入最终得到的字符串是new出来的,str2是直接赋值的,所以地址不一样,所以为false;每new一次都开辟了新的空间,s1和s2都是新创建的,地址不一样,所以不会复用,相同字符串会浪费空间。应用场景:将abc字符串改为Qbc,那么可以将其转换为数组,然后进行修改,最后传入即可获得Qbc;这个是直接赋值的,第一次和第二次的abc都是第一次创建的abc,所以地址是一样的,串池里面已经有了abc会直接复用,不会再去创建abc。这个是false,因为两个地址不一样;(就是上面介绍的两种)原创 2024-01-25 20:05:14 · 453 阅读 · 0 评论 -
Java 字符串02 tring概述(黑马)
会产生两个字符串,一个是“尼古拉斯.阿伟”,另外一个是创建一个字符串“三连加投币.阿伟”,然后赋值给name;产生了三个字符串,一个是“尼古拉斯.阿伟”,另一个是“黑马程序员”,还有一个是“尼古拉斯.阿伟黑马程序员”原创 2024-01-24 22:33:30 · 382 阅读 · 0 评论 -
Java 字符串01 API和API帮助文档(黑马)
原创 2024-01-23 22:50:26 · 354 阅读 · 0 评论 -
Java 面向对象案例 03(黑马)
若数组不满,删除stu3,那么在数组中事null,但是不能通过null直接使用遍历,相当于用null调用了其他方法,会爆粗,所以对判断唯一性的方法进行修改:需要判断stu是否为null。9、给指定那个学号的学生年龄加一。4、进行添加和判断操作。原创 2024-01-23 22:23:29 · 1445 阅读 · 0 评论 -
Java 面向对象案例 02 (黑马)
创建在外面,则只是创建了一个对象,循环第二次的时候只是修改了第一个的信息,循环第三次的时候只是修改了第二个的信息,从头到尾,只有那一个对象。由于在键盘录入中123与123之间有空格,则第一个只会输出一个123,并不会出现第二次键盘录入,会直接将第二个的123赋值给num2;弊端:先用nextInt(),再用nextLine()会使next Line()接受不到数据;输入一个123+回车,字符串输入没有让输入,而是接受了回车,接收不到数据;(打印出来的都是第三个的信息)原创 2024-01-22 22:53:51 · 391 阅读 · 0 评论 -
Java 面向对象案例01(黑马)
在JavaBean类中,方法的形参的数据类型可以是任何合法的Java数据类型,包括基本数据类型(如int、char、boolean等)、引用数据类型(如String、Object等)、数组类型、自定义数据类型等。例如,假设有一个名为Person的自定义类,其中定义了属性name和age,以及方法getName()和getAge()等。在JavaBean类中方法定义的形参的自定义数据类型指的是使用开发者自己定义的类作为方法的参数类型。这意味着可以使用自定义类中定义的属性和方法来操纵传递给方法的数据。原创 2024-01-22 21:29:42 · 571 阅读 · 0 评论 -
Java 面向对象 06 对象内存图(黑马)
之前设计的如下图:方法区和内存在物理上是一块的,但是有不好的地方,所以变成了这种形式:在创建对象时虚拟机至少做了以下七步:解释:第一步:第二步:1、加载class文件2、声明局部变量:3、在堆中开辟一个空间4、默认初始化5、显示初始化如果代码这样写的,则显式初始化就是在默认初始值的时候null和0就会被张三和23所覆盖但是这样写:并没有赋值,则显示初始化可以忽略6、构造方法初始化此时写的是无参构造,而且空参构造中也没有写代码,,则构造初始化可以忽略但是如果代码是有参构造,则name和age就会有值7、s也可原创 2024-01-21 22:08:45 · 601 阅读 · 0 评论 -
Java 面向对象05 标准的javaBean类(黑马)
点击之后发现,将空参构造,有参构造,set get方法全部创建了出来。2、选择下方的select none。1、选中constructor。原创 2024-01-21 20:26:59 · 383 阅读 · 0 评论 -
Java 面向对象 04 构造方法(黑马)
所以调用空参构造,赋值只能使用set方法。原创 2024-01-21 19:39:08 · 360 阅读 · 0 评论