一条咸鱼的java学习笔记第4天

1.什么是不规则二维数组?如何进行遍历?

非矩阵型数组 数组的列数不同

2.String类在内存中的存储方式?

在这里插入图片描述对于字符串:其对象的引用都是存储在栈中的,如果是【编译期已经创建好(直接用双引号定义的)的就存储在常量池中】,如果是【运行期(new出来的)才能确定的就存储在堆中】。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份。

3.String str1 = new String(“小明”); 该行代码执行之后在内存中创建了几个对象?

创建了两个对象,一个是字符串常量对象(”小明“)位于字符串常量池中,一个是new出来的普通对象## 标题位于堆中。

在这里插入图片描述

4.== 和 equals的异同点?

java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
他们之间的比较,应用双等号==,比较的是他们的值。
2.复合数据类型(类)
当他们用进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。
对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号==进行比较的,所以比较后的结果跟双等号 ==的结果相同。

5.面向对象的核心思想?你如何理解面向对象?什么是面向对象的编程?什么是抽象?什么是封装?什么是继承?什么是多态?

核心思想:抽象、封装、继承、多态
面向对象的理解:面向对象是一种思想,方法论 是高级编程语言的一种特性。
面向对象编程:一切事物皆对象 找谁去做谁就是对象。面向对象简单来说就是将功能封装到对象(数据和操作结合)里,我们面向对象,让对象去完成这些功能。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
向上塑性、向下塑性专业的叫法是:向上转型,向下转型。
向父类转换叫向上转型(父类引用指向子类对象),只能调用到来自父类的属性/行为
向子类转换叫向下转型。 向下转型可以得到子类的所有方法(包含父类的方法)

Person是Superman的父类
在这里插入图片描述
在这里插入图片描述
instanceof的作用是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。可以用来判断继承中的子类的实例是否为父类的实现。java中的instanceof是通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

6.抽象封装的软件工程的原则:高内聚低耦合

内聚性又称块内联系。若一个模块内各元素联系的越紧密,则它的内聚性就越高。
耦合性也称块间联系。低耦合是各个模块之间相互独立存在,这样利于修改和组合。

7.局部变量和成员变量的区别?(局部变量覆盖成员变量,依据范围最小优先、就近原则)

A:在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
B:在内存中的位置不同
成员变量:在堆内存
局部变量:在栈内存
C:生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
D:初始化值不同
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。

8.构造方法的执行流程? 父类和子类构造方法的关系?

class A{
public A(){} // 1:无参数构造方法。
public A(String s){} // 2.
}
class B extends A{
public B(String s){
super(s); // 3.
}
}
说明:如果没有1处的无参数构造方法,那么3处一定要主动调用父类带参数的构造方法。
如果有1处的构造方法,那么3处代码可以不要,因为Java会自动默认调用父类的无参数构造方法。
记住一点:在构造子类时,一定会调用到父类的构造方法。
所以父类要么有一个默认的无参数构造,这样Java会自动调用这个无参数的构造。如果父类没有无参数的构造,那么就要你自己在子类的构造中,通过super()的方式调用父类的构造。

9.什么是继承?java的继承是单继承?java能不能实现多继承?

子类继承父类的属性和行为
JAVA不支持多继承,用接口来体现
为什么JAVA不支持多继承呢?
因为多个父类中有相同的成员,会产生调用的不确定性

10.什么是多态?多态体现在那些方面?(多态体现在:一是:父类指代子类(溯型);二是:重写)什么是重写?什么是溯型?

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是用基类的引用指向子类的对象。
溯型:

11.this和super关键字的区别?在这里插入图片描述

12.接口和抽象类的异同点?

接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。

抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。

人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.

所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

第一点. 接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。
第二点. 接口可以多继承,抽象类不行
第三点. 接口定义方法,不能实现,而抽象类可以实现部分方法。
第四点. 接口中基本数据类型为static 而抽类象不是的。

当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值