当前位置: 首页 > news >正文

卷java、基础2

内部类

了解

1. 成员内部类(了解)

2. 静态内部类(了解)

实例化的写法

 局部内部类(看看就好)

局部内部类是定义在在方法中、代码块中、构造器等执行体中。

匿名内部类(重要)

1.先认识

先看代码:

  •  右边是老办法
  •  左边是 匿名内部类(看编译后的文件,确实存在一个类,是动物的子类)
    • 匿名内部类是 动物的子类
    • 并立即创建了一个子类对象

2. 自我理解:

如1中,抽象类 - 动物类(原本不能实例化),创建匿名内部子类,就可以实例化了,实际上是写了一个动物子类,同时它又没有名字

接口。 是抽象类的特殊情况,  即,也可以这样搞

3. 通常的用法

作为play方法的参数,  方法中又可以用这个参数(即对象),来调其方法 (swim)

并且,利用  【匿名内部类创建子类并直接得到一个对象】  的功能 。

简洁代码就可以实现,  play(【匿名内部类创建子类并直接得到一个对象】),来实现不同的swim效果

自我理解:这样就可以快速重写接口方法

4. 匿名内部类拓展(真实场景)---是需要用,根据3知道就好。

 关于匿名内部类,我的理解,知道用就行,有时候可以快捷实现,比如这里的给按钮添加点击事件,就去快速的定义  。  有点想pyqt5里。lamda。定义匿名方法。

 

5. 简化写法:

当参数是一个函数式接口对象,可用

        (函数式接口,即此接口只有一个 抽象方法---如下的abstraction接口)

枚举(固定几个实例例)

总结: 枚举常用来做信息分类,信息标识的

  1. 第一行都是常量,并且都是此类的对象
  2.  构造器式私有的,即对外不能创建对象,就只有。1 中的对象
  3. 枚举类是最终类,不能被继承
  4. 有自带了一些方法,如values() , 和。valueOf()

  

枚举中只有一个,就是一个单粒

不能创建对象,并且只有一个对象

枚举的常见应用场景

常量方式: 还是有缺点,参数值没有被约束

用枚举的方式(枚举的好处)

信息标志的理想方式

   switch这个方法也喜欢枚举,可以这样改。

泛型

补充: 泛型,不支持基本类型, 要用的话,用包装类。

a .泛类 (可操作来理解)

初识(先看比人的):

 ArrayList定义时,就可以规定类型。 需要下面这种写法。  (前面用<> 写了类型,后面ArrayList后也加 <>)

        ArrayList<String> list2 = new ArrayList<>();ArrayList<Integer> list3 = new ArrayList<>();ArrayList<Boolean> list4 = new ArrayList<>();ArrayList<Double> list5 = new ArrayList<>();

1.可以实现,限制某个方法传参类型

2. 可以实现,定义一个泛型属性 (实例化时,再明确类型,然后set值)

 3. 套壳(里头还是用的 Arraylist)

b. 泛接口(内含经典操作)

需求:实现老师的增删改查、 学生的增删改查 

如下图: 右边就是泛型接口。

  • implements Data<Student> 后,会报错,alt + 回车,就会自动修复,自动重写方法了。
  •  同样可以快速实现  public class TeacherData implements Data<Teacher>

 

c. 泛型方法

  • 和泛类的不同点,定义:在写类时; 使用:泛类是在实例化类时,去给E 类型。
  • 泛形方法,定义:在写法方法时;

  

案例1(用T代表写类型的地方)

定义范型方法,  就都可以传了 ,提示词:// 定义一个方法,接收数组,采用泛型, 然后打印数组元素

 

案例2:?通配符    代替 某类

当参数是一个类对象时,好说。

两种泛型方法

  • 当参数是一个 引用类型 如 arrylist 时, 可以用 通配符    
  • 当是数组,是可以用案例1 中的T  (虽然数组是引用类型,但 Java 泛型不允许直接使用带有通配符的泛型数组类型)   

API 一

Object类

----pyqt5中,所有的类也叫 Object类

toString 

  • sout(xx.toString()) 
  • sout(xx)                  // 这个和上面的打印效果一样,可以简写,不写.toString()

如果类中,重写 public String toString()  就可以实现打印非地址信息。

equals(默认行为和== 一样)

另外:equals可以提供我们来重写,原来是比较地址,可以改成比其他(alt + insert 可生成)

 重写equals案例, 其中因为 this.name 是字符串,它使用的.equals,是字符串类里面重写的。

推荐用 Objects.equals()   -- 后面有讲,更安全

```// return this.name.equals(s.name);

return Objects.equals(this.name, s.name);```    即使,某个没有name, 或者某个直接为null

以下是课上的代码 

其中,第3点药强转,是因为用用o 拿age等。  

Objects.equals()  这里用了这个来比较,看看后面的介绍

额外补充:

  如下图,可以知道,"abc" 在常量池中就只有一份。(已 = "abc"方式定义的字符串在常量池中)

Objects 类

其实  t1.equals(t2)   和  Objects提供的   Objects.equals(t1,t2) 效果是一样的

但是用后者,可以避免 t1是null 的情况。

最后推荐:比较两个对象时,建议Objects.equals(t1,t2)

包装类

包装一下,满足那句话,万物皆对象

自动装箱机制:基本类型数据 可以直接 赋值给 包装类。

        小补充: Integer中,-127到127 中对象是已有的,不会新new

自动拆箱:

也可以  int  it4  = it2   (接上图,这样 it4又是基本数据类型了)

一些方法(没啥用)

包装类没啥用,但是sum公司就搞了点方法给你用

基本数据类型,转成字符串

方式1。 

方式2:

 

 方式3(不装逼推荐)

 基本数据类型,转成字符串(有用)

推荐 或者  用 Integer.valueOf() 一样的效果  (自动拆箱)

用如下两个图是官网给的方法,作用不大,不管

API二 (不全)

Arrays类的方法、Arrays的排序、 Lambda表达式简化函数式接口、

方法引用

冒泡排序

选择排序

二分查找

正则表达式

异常(不全)

常见异常,他们共同的基类为 Exception类

相关文章:

  • 前端的面试笔记——HTMLJavaScript篇(二)前端页面性能检测
  • 数据要素及征信公司数据要素实践
  • 【java第15集】java常量和变量区别详解
  • 小乌龟git中的推送账户、作者账户信息修改
  • 谷歌前CEO TED演讲解析:AI 红利的三年窗口期与行业重构
  • 前端的面试笔记——HTMLJavaScript篇(一)
  • C语言——深入理解指针(一)
  • day30 python 模块、包与库的高效使用指南
  • 09、底层注解-@Import导入组件
  • Fastadmin表单分组显示
  • 【2025最新】Spring Boot + Spring AI 玩转智能应用开发
  • 1.1 Epson机器人常用指令1-Print函数、RobotInfo$
  • 实景VR展厅制作流程与众趣科技实景VR展厅应用
  • 将 Element UI 表格拖动功能提取为公共方法
  • Linux云计算训练营笔记day11(Linux CentOS7)
  • 智慧赋能光伏运维——无人机巡检+地面监控双链路覆盖,打造光伏电站管理新标杆
  • Ansible模块——主机名设置和用户/用户组管理
  • 牛客网NC209794:使徒袭来
  • 一周快讯 | 银发文娱旅游一周新鲜事
  • 【愚公系列】《Manus极简入门》048-自然探险之旅:“户外活动规划师”
  • 牛市早报|年内首次存款利率下调启动,5月LPR今公布
  • 多所院校高规格召开考研动员会,有学院考研报名率达84%
  • 泽连斯基与美国副总统及国务卿会谈,讨论伊斯坦布尔谈判等问题
  • 竞彩湃|英超欧冠悬念持续,纽卡斯尔诺丁汉能否拿分?
  • 商务部:对原产于美国、欧盟、台湾地区和日本的进口共聚聚甲醛征收反倾销税
  • 英国警方再逮捕一名涉嫌参与首相住宅纵火案嫌疑人