Java要素察觉

Java要素察觉,第1张

简介:主要内容来源于b站刘二大人Java课程,旨在记录课程中的重要内容。

Java课程记录(课程号作为标题)
  • 02.数据类型
  • 03.数组与字符串
  • 07.继承
  • 08.方法重载、方法重写和多态
  • 10.接口

02.数据类型

参照Java八种基本数据类型

  1. 如图所示,Java中的数据类型总体上来说分为两大类,即基本数据类型和引用数据类型。这件事情其实想一想很有意思,Java这门语言本身就是夹在C与python之间,一方面对于C想有一些约束与限制,一方面又没有完全回收程序员对于内存的 *** 控权,因而展现出了这样一种过渡态而集其所长的样子。
  2. 分别说说这两种数据类型的特点。基本数据类型的变量名称真的就只是一个名称而已,他不占据任何内存,只是为了方便描述而对于内存起的一个代号,在编译器中就会灰飞烟灭,留下的只有一个无情的地址;引用数据类型则不然,它像是一种被封装过后的指针,本身在内存中就占有一席之地,而它的内容便是他引用的对象,通常是一个很庞杂的东西。
  3. 基本数据类型有很多繁琐的特点,点击上方链接即可获取;引用数据类型有更多繁琐的特点,这个点链接很难获取。
03.数组与字符串
  1. C中的数组有很多的写法,常导致人犯一些细微的错误,Java为了解决这一特点使用引用数据类型实现数组,这一特性非常友好。只要理解了引用就很好理解数组的各种特性。
  2. 定义形式如下:
// 声明方式:
dataType[] arrayRefVar;  // 也可以用dataType arrayRefVar[],但是没必要

// 方法一:
dataType[] arrayRefVar = new dataType[arraySize];  // 会被自动初始化为默认值

// 方法二:
dataType[] arrayRefVar = new dataType[]{value0, value1, ..., valuek};  // 注意不能写arraySize,会自己判断数组长度

// 方法三(也是二的一个语法糖):
dataType[] arrayRefVar = {value0, value1, ..., valuek};

// 以上均为基本数据类型数组,如果是对象数组那么valuek处需要写new进行构造函数的调用
objType[] objArrayRefVar = {
	new obj(),
	new obj(),
	new obj()
};
07.继承
  1. Java中所有的继承都是单继承,也就是一个子类只能有一个父类,这种设计的好处是可以免除多级承中很多冲突关系的产生,坏处是在实现上会有一些不便(这部分在接口会解决)。总之,单继承,然后所有的类默认状况下继承一个Object的顶级类。
  2. Java中的父子类有一套非常不寻常的 *** 作逻辑。我们知道Java中的一切对象都是用引用来进行关联的(和python非常类似),因而对于一个对象我们可以分为对象引用以及对象内存两部分。例如我有是三个类人,学生,老师(显而易见的继承关系),那么我用对应的对象引用和对象内存是可以的,我用高级的对象引用和低级的对象内存也是可以的,比如对象引用用“人”,而对象内存用老师或者学生。这样做有一个非常大的好处就是比如我要管理一群老师和一群学生,那么我可以用一群人直接构建成一个数组就可以了,非常方便。
  3. 接着上面的话题,这种特殊的使用方式当然就要涉及到一些对象的 *** 作问题,Java是这样规定的:如果是高级的对象引用,那么他访问不到低级的对象内存中额外的元素,但是可以访问到低级的对象内存中额外的的函数。
    解释一下:访问不到额外的元素很好理解,因为本身父类就没有定义这部分;但是能访问到额外的函数这源于Java中的一个反射机制。当Java在使用一个对象的方法时,他先会掉用一个反射函数,例如一个人的引用指向一个学生的内存,那么执行一个函数式Java的反射会判定这一个对象是学生类的,因此当他调用函数的时候是学生类中进行实现的函数。
08.方法重载、方法重写和多态
  1. 记录一下overload和override,首先这两个都是实现多态的方式。
  2. overload翻译为重载,是在两个同名函数处于相同作用域时,通过其不同的signature对其进行区分,从而达到不同的调用效果的一种实现方式。
  3. override翻译为重写,其实现与类的继承有关,当父类与子类同时实现了一个同一个signature函数的时候(不同signature依旧视为重载),子类实现的函数会覆盖父类的函数。注意这里重写的函数一定要有相同的返回值,虽然返回值不包含在signature的内容里面,但是如果重写的两个函数返回值不同就会造成一些不必要的错误,因此IDE(如IntelliJ IDEA)会提醒你。
10.接口

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/918646.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存