java核心卷_Java核心技术卷一 · 笔记(1)

1.java的关键术语

f92ded46219229f17c2f7223477807f3.png

2.==和equals

如果虚拟机始终将相同的字符串共享, 就可以使用= 运算符检测是否相等。但实际上 只有字符串常量是共享的,而+ 或 substring 等操作产生的结果并不是共享的。因此,千万不要使甩== 运算符测试字符串的相等性, 以免在程序中出现糟糕的 bug。

3.空串与 Null 串

空串 "" 是长度为 0 的字符串,是一个 Java 对象。

String 变量还可以存 放一个特殊的值, 名为 null, 这表示目前没有任何对象与该变量关联

4.构建字符串

每次连接字符串, 都会构建一个新的 String 对象, 既耗时, 又浪费空间。使用 StringBuilder类就可以避免这个问题的发生。

5.封装

封装(encapsulation, 有时称为数据隐藏)是与对象有关的一个重要概念。从形式上看, 封装不过是将数据和行为组合在一个包中, 并对对象的使用者隐藏了数据的实现方式。

实现封装的关键在于绝对不能让类中的方法直接地访问其他类的实例域。程序仅通过对 象的方法与对象数据进行交互。封装给对象赋予了“ 黑盒” 特征, 这是提高重用性和可靠性 的关键。 这意味着一个类可以全面地改变存储数据的方式,只要仍旧使用同样的方法操作数据, 其他对象就不会知道或介意所发生的变化。

6.对象的三个主要特性

对象的行为、状态、标识

7.依赖(dependence)、聚合(aggregation)、继承(inheritance)

如果一个类的方法操纵另一个 类的对象,我们就说一个类依赖于另一个类。

聚合关系意味着类 A 的对象包含类 B 的对象。

继承是一种用于表示特殊与一般关系的。

8.对象变量

可以将 Java 的对象变量看作 C++ 的对象指针,所有的 Java 对象都存储在堆中。 当一个对象包含另一个对象变量时, 这个变量依然 包含着指向另一个堆对象的指针。

9.clone

在 Java 中, 必须使用 clone 方法获得对象的完整拷贝。

如果需要返回一个可变对象的引用, 应该首先对它进行克隆(clone)。对象 clone 是 指存放在另一个位置上的对象副本。

10.静态域、静态常量

静态域是static修饰的数据域,属于类,而不属于任何 独立的对象。在绝大多数的面向对象程序设计语言中, 静态域被称为类域。

静态常量(类常量): static final 修饰。

11.静态方法

静态方法是一种不能向对象实施操作的方法,是没有 this 参数的方法。

静态方法不能访问实例域, 因为它不能操作对象。但是,静态方法可 以访问自身类中的静态域。

可以通过类名或对象名调用静态方法,不建议用对象名调用!

在下面两种情况下使用静态方法:

•一 方法不需要访问对象状态,其所需参数都是通过显式参数提供(例如: Math.pow)

•一个方法只需要访问类的静态域

static修饰的含义总结:属于类且不属于类对象的变量和函数。

12.方法参数

Java 总是采用按值调用,对对象采用的不是引用调用,实际上, 对象引用是按值传递的。

下面总结一下 Java中方法参数的使用情况:

•一个方法不能修改一个基本数据类型的参数(即数值型或布尔型) 。

•一个方法可以改变一个对象参数的状态。

•一个方法不能让对象参数引用一个新的对象。

13.重载

如果多个方法有 相同的名字、不同的参数,便产生了重载(overloading)。

14.域和局部变量

域与局部变量的主要不同点:必须明确地初始化方法中的局部变量。 但是, 如果没有初始化类中的域, 将会被自动初始化为默认值(0、false 或 null)。

15.构造器

如果构造器的第一个语句形如 this(...), 这个构造器将调用同一个类的另一个构造器。

仅当类没有提供任何构造器的时候, 系统才会提供一个默认的构造器

16.对象析构

由于 Java 有自动的垃圾回收器,不需要人工回收内存, 所以 Java 不支持析构器。

17.包

从编译器的角度来看, 嵌套的包之间没有任何关系。例如,java.utU 包与java.util.jar 包 毫无关系。每一个都拥有独立的类集合。

18.编译器、虚拟机和包

编译器在编译源文件的时候不检查目录结构。 即使这个源文件没有在子目录 com/mycompany 下, 也可以进行编译。如果它不依赖 于其他包, 就不会出现编译错误。但是, 最终的程序将无法运行, 除非先将所有类文件 移到正确的位置上。 如果包与目录不匹配, 虚拟机就找不到类 。

javac 编译器总是在当前的目录中查找文件, 但 Java 虚拟机仅在类路径中有 目录的时候才查看当前目录

19.继承

在 Java 中, 所有的继承都是公有继承,Java 不支持多继承,而是用接口实现。

用来判断是否应该设计为继承 关系的简单规则:这就是“ is-a” 规则,它 表明子类的每个对象也是超类的对象。

在设计类的时候,应该将通用的方法放在超类中, 而将具有特殊用途的方法放在子类中,这种将通用的 功能放到超类的做法,在面向对象程序设计中十分普遍。

子类使用super.xxx()来调用超类的xxx()方法,进而访问超类的私有域。

由于 Manager 类的构造器不能访问 Employee 类的私有域, 所以必须利用 Employee 类 的构造器对这部分私有域进行初始化,我们可以通过 super 实现对超类构造器的调用。使用 super 调用构造器的语句必须是子类构造器的第一条语句。 如果子类的构造器没有显式地调用超类的构造器, 则将自动地调用超类默认(没有参数) 的构造器。 如果超类没有不带参数的构造器, 并且在子类的构造器中又没有显式地调用超类 的其他构造器 ,则 Java 编译器将报告错误。

超类和子类的转换:

•只能在继承层次内进行类型转换。

•在将超类转换成子类之前,应该使用 instanceof进行检查。

20.Java 不支持多继承

关键字 this 有两个用途: 一是引用隐式参数,二是调用该类其他的构 造器 。

super 关键字也有两个用途:一是调用超类的方法,二是调用超类的构造器。

在调用构造器的时候, 这两个关键字的使用方式很相似。调用构造器的语句只能作为另 一个构造器的第一条语句出现。构造参数既可以传递给本类(this) 的其他构造器,也可 以传递给超类(super) 的构造器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展学生的学科视野,使其对专业领域有更深刻的理解。在竞赛过程中,学生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,学科竞赛培养了学生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使学生学会有效地与他人合作、协调分工。在团队合作中,学生们能够学到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,学科竞赛是提高学生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程中,学生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,学科竞赛可以为学生提供展示自我、树立信心的机会。通过比赛的舞台,学生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养学生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入学习和未来的职业生涯。 最后,学科竞赛对于个人职业发展具有积极的助推作用。在竞赛中脱颖而出的学生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值