JAVA入门第二季学习总结

本文详细介绍Java中的对象创建、封装、继承、多态等核心概念,包括构造方法、静态成员及方法、this关键字、内部类等内容,并讲解了抽象类与接口的区别及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建对象:

  • 无参的构造方法(当没有指定构造方法时,系统可以自动添加)
  • 有参的构造方法(可以赋初值)

static可以修饰变量、方法和代码块。

  • 静态成员:被static修饰的成员属于整个个类所有,被类的所有对象共享。
  • 静态方法:
    • 声明:public static void print();
    • 调用:可以通过类名(推荐)或对象名调用。
  • 静态初始化块:
    • 用法:static { num3=3;}
    • 静态初始化块只能给静态变量赋值,num3前面应是static int num3;
封装

隐藏属性,通过方法得到属性
步骤:
- 修改属性的可见性:设为private
- 创建getter/setter,属性读写
- public float getScreen(){ return screen)} 得到属性值
- public void setScreen(float newScreen){ screen = newScreen; } 赋值
- 在2中加入控制语句,判断属性合法性

作用:管理JAVA文件,避免重名
定义:package 包名,放在JAVA源程序第一行,包名间用 . 隔开
举例:java.lang.(类)
使用:import关键字:import com.imooc.Telphone* *为全部文件
注意:起名全小写

JAVA中的访问修饰符

可以修饰属性和方法的访问范围
- private:本类
- 默认:本类 同包(一个路径下)
- protected:本类 同包 子类
- public:任意

属性用private,方法用public

this

代表当前对象
this.属性 操作当前对象的属性,区分属性和参数名
this.方法 调用当前对象的方法

内部类

  • 内部类可以调用外部类,外部不能调用内部的成员和方法
  • 如果内外部有相同的成员变量或方法,内部类默认访问自己的,若要访问外部的,可以用this关键字
  • 静态内部类不能直接访问外部类的非静态成员,可以通过new 外部类().成员 访问
  • 方法内部类 是定义在外部类的方法中,只在该方法的内部可用,不能在外部类的方法以外的地方使用,不能使用访问控制符和static修饰符
继承
  • 定义:是类和类的一种关系
  • 好处:子类拥有父类的所有属性和方法(不能是private)
  • 方法:class 子类 extends 父类
方法的重写

子类对父类的方法不满意,重写父类继承的方法,调用时优先调用子类

继承的初始化顺序
先父类对象–属性初始化–构造方法
后子类对象–属性初始化–构造方法

final
不可修改,不可变化

  • 修饰类,类不允许被继承
  • 修饰方法,不允许被覆盖重写
  • 修饰属性,系统不会帮我们初始化
  • 修饰变量,只能赋一次值,即声明时。不允许改变的量是常量。

super
在对象的内部使用,可代表父类对象
作用:

  • 访问父类的属性:super.age
  • 访问父类的方法:super.eat()
    应用:

  • 子类的构造的过程当中必须调用父类的构造方法

  • 如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法
  • 如果显示的调用,必须放在构造方法的第一行
  • 如果子类没有调用,父类又是有参,系统会报错

Object类
是老祖宗,类中所有方法适用于所有子类。如果没标父类,默认父亲是Object

  • toString()方法:返回的对象的哈希code码
  • equals()方法:比较对象的引用是否指向同一块内存地址
多态

对象的多种形态

  • 引用多态
    • 父类的引用可以指向本类的对象
    • 父类的引用可以指向子类的对象
  • 方法多态
    • 创建本类对象时,调用的方法为本类方法
    • 创建子类对象时,调用的方法为子类重写的方法或者继承的方法,不能调用子类独有的方法
多态中的引用类型转换
  • 向上类型转换(自动类型转换),小类型到大类型的转换,无风险
  • 向下类型转换(强制类型转换),大类型到小类型,存在风险,
  • 用instanceof运算符可以避免风险

向下:
Dog dog2 = (Dog)animal; //animal父,dog子
如果再把animal转换为另一个子类cat,类型不匹配会出错
if(animal instanceof Cat){
Cat cat = (Cat)animal;
}else{
System.out.println(“无法进行类型转换 “);
}

抽象类
不关注子类的实现,要约束子类必须有哪些特征。
在某些情况下,某个父类只知道子类应该包含怎样的方法,但无法准确知道子类如果实现这些方法
使用规则:

  • abstract定义抽象类
  • abstract定义抽象方法,只有声明,不需要实现
  • 包含抽象方法的类是抽象类
  • 抽象类中可以包含普通的方法,也可以没有抽象方法
  • 抽象类不能直接创建,可以定义引用变量

abstract class Animal { abstract void grow():}

接口

是一种具体实现体,是规范,某些类必须使用某些方法。
定义用interface关键字
通常用来被继承、实现的,一般用public
public abstract interface 接口名 [ extends 父接口1,2.。]
{定义多个常亮}
常量用public static final修饰

一个类可以使用一个或多个接口,使用用implements
public class 类名 extends 父类 implements 接口1,接口2 {
如果继承了抽象类,要实现继承的抽象方法
}

如果要继承父类,继承父类必须要在实现接口之前
给接口命名通常首字母是I
abstract可省略 系统会自动添加

接口与匿名内部类结合

UML

统一建模语言,为开发阶段提供了可视化支持
常用UML图:

  • 用例图:
资源下载链接为: https://pan.quark.cn/s/140386800631 通用大模型文本分类实践的基本原理是,借助大模型自身较强的理解和推理能力,在使用时需在prompt中明确分类任务目标,并详细解释每个类目概念,尤其要突出类目间的差别。 结合in-context learning思想,有效的prompt应包含分类任务介绍及细节、类目概念解释、每个类目对应的例子和待分类文本。但实际应用中,类目和样本较多易导致prompt过长,影响大模型推理效果,因此可先通过向量检索缩小范围,再由大模型做最终决策。 具体方案为:离线时提前配置好每个类目的概念及对应样本;在线时先对给定query进行向量召回,再将召回结果交给大模型决策。 该方法不更新任何模型参数,直接使用开源模型参数。其架构参考GPT-RE并结合相关实践改写,加入上下文学习以提高准确度,还使用BGE作为向量模型,K-BERT提取文本关键词,拼接召回的相似例子作为上下文输入大模型。 代码实现上,大模型用Qwen2-7B-Instruct,Embedding采用bge-base-zh-v1.5,向量库选择milvus。分类主函数的作用是在向量库中召回相似案例,拼接prompt后输入大模型。 结果方面,使用ICL时accuracy达0.94,比bert文本分类的0.98低0.04,错误类别6个,处理时添加“家居”类别,影响不大;不使用ICL时accuracy为0.88,错误58项,可能与未修改prompt有关。 优点是无需训练即可有较好结果,例子优质、类目界限清晰时效果更佳,适合围绕通用大模型api打造工具;缺点是上限不高,仅针对一个分类任务部署大模型不划算,推理速度慢,icl的token使用多,用收费api会有额外开销。 后续可优化的点是利用key-bert提取的关键词,因为核心词语有时比语意更重要。 参考资料包括
内容概要:本文详细介绍了哈希表及其相关概念和技术细节,包括哈希表的引入、哈希函数的设计、冲突处理机制、字符串哈希的基础、哈希错误率分析以及哈希的改进与应用。哈希表作为一种高效的数据结构,通过键值对存储数据,能够快速定位和检索。文中讨论了整数键值和字符串键值的哈希方法,特别是字符串哈希中的多项式哈希及其优化方法,如双哈希和子串哈希的快速计算。此外,还探讨了常见的冲突处理方法——拉链法和闭散列法,并提供了C++实现示例。最后,文章列举了哈希在字符串匹配、最长回文子串、最长公共子字符串等问题中的具体应用。 适合人群:计算机科学专业的学生、算法竞赛选手以及有一定编程基础并对数据结构和算法感兴趣的开发者。 使用场景及目标:①理解哈希表的工作原理及其在各种编程任务中的应用;②掌握哈希函数的设计原则,包括如何选择合适的模数和基数;③学会处理哈希冲突的方法,如拉链法和闭散列法;④了解并能运用字符串哈希解决实际问题,如字符串匹配、回文检测等。 阅读建议:由于哈希涉及较多数学知识和编程技巧,建议读者先熟悉基本的数据结构和算法理论,再结合代码实例进行深入理解。同时,在实践中不断尝试不同的哈希策略,对比性能差异,从而更好地掌握哈希技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值