笔试题相关知识点

方法
this变量

方法内部可以使用一个隐含的变量,它始终指向当前实例。

方法参数

方法参数用于接收传递给方法的变量值,可以包含0个或任意个数的参数,必须严格按照参数的定义一一传递。

可变参数

可变参数用类型…定义,可变参相当于数组类型,也可以用数组代替,但是调用参数要先自己构造一个类型[],但是这种方法可以传入数组一个null,而可变参数无法传入null,因为传入0个参数时,接收的实际值是一个空数组而不是null.

参数绑定

基本类型的参数传递,是调用方值的复制,双方各自的后续修改互不影响。

引用类型参数传递,调用方的变量,和接收方的参数变量,指向的是同一个对象,双方任意一方对这个变量的修改,都会影响对方。

传值和传引用

传值操作的是参数变量(也就是原型变量的一个值的copy) 改变的也只是原型变量的一个copy,而非变量本身,所以变量原型并不会随之改变。

传引用也叫传址,即方法操作参数变量时是拷贝了变量的引用,而后通过引用找到变量(在这里是对象)的真正地址,并对其进行操作。当该方法结束后,方法内部的那个参数变量随之消失。但是要知道这个变量只是对象的一个引用而已,它只是指向了对象所在的真实地址,而非对象本身,所以它的消失并不会带来什么负面影响。回头来看原型变量,原型变量本质上也是那个对象的一个引用(和参数变量是一样一样的),当初对参数变量所指对象的改变就根本就是对原型变量所指对象的改变。所以原型变量所代表的对象就这样被改变了,而且这种改变被保存了下来。

构造方法
默认构造方法

创建对象实例时把内部字段全部初始化为合适的值。

构造方法的名称就是类名,参数没有限制,在方法内部,也可以编写任意语句,和普通方法相比,构造方法没有返回值,也没有void,调用必须用new操作符。

没有为类编写构造方法时,也可以调用new操作符,是因为一个类没有构造方法时,编译器会自动生成一个默认的构造方法,它没有参数,也没有执行语句。如果我们自定义了构造方法,编译器就不会自动创建默认的构造方法了。

如果既要能使用带参的构造方法,也能使用不带参的构造方法,需要手动添加两个构造方法。

没有在构造方法中初始化字段时,引用类型的字段默认是null,数值类型的字段用默认值,int类型默认值是0,布尔类型默认值是false.

创建对象实例的时候,先初始化字段,再执行构造方法的代码进行初始化。

多构造方法

可以定义多个构造方法,在new对象的时候,编译器通过构造方法的参数数量、位置和类型自动区分。

一个构造方法可以调用其他构造方法,这样做的目的是便于代码的复用。调用其他构造方法的语句是this(…)

方法重载

方法名相同,参数列表不同,称为方法重载(overload),返回值通常是相同的。

继承

父类又被称为超类(super class),基类(base class);

子类又被称为扩展类(extended class)。

Java只允许一个class继承一个类,没有写继承的类,编译器就会自动加上extends Object.所以除了Object,都会继承自某一个类。object没有父类。

protected

子类无法访问父类的private字段或者方法,若有意访问,需要将private关键字改为protected修饰。

super

super关键字表示父类,子类引用父类的字段时,可以用super.fileName.

super也是为了区分父类和子类的关键字,任何class的构造方法,第一行语句必须是调用父类的构造方法。如果没有明确的调用父类的构造方法,编译器会自动加super();

子类不会继承父类的构造方法

向上转型

子类继承于父类,所以子类具有父类的全部功能。

向下转型

向下转型很可能会失败,Java虚拟机会报ClassCastException。

为了避免向下转型出错,Java提供了instanceof操作符,可以判断一个实例究竟是不是某种类型。instanceof实际上判断一个变量所指向的实例是否是指定类型,或者这个类型的子类。如果一个应用变量为null,那么对任何instanceof的判断都为false。

使用instanceof variable这种判断并转型为指定类型变量的语法时,必须打开编译器开关--source 14--enable-preview

区分继承和组合

继承是is关系,组合是has关系。

多态

在继承关系中,子类如果定义了一个与父类方法签名完全相同的方法,被称为重写。方法名相同,参数列表相同,返回值相同。

Java的实例方法调用是基于运行时的实际类型的动态调用,而非变量的声明类型。

多态

针对某个类型的方法调用,其真正执行的方法取决于运行时期实际类型的方法

多态的特性就是,运行期才能动态决定调用的子类方法。允许添加更多类型的子类实现功能扩展,却不需要修改基于父类的代码。

重写Object方法
  • toString():把instance输出为String
  • equals():判断两个instance是否逻辑相等;
  • hashCode():计算一个instance的哈希值。
调用super

在子类的重写方法中,如果要调用父类的被重写的方法,可以通过super来调用。

final

继承可以允许子类覆写父类的方法。如果一个父类不允许子类对它的某个方法进行覆写,可以把该方法标记为final。用final修饰的方法不能被Override

抽象类
三次握手四次挥手

背景:TCP位于传输层,作用是提供可靠的字节流服务,为了准确无误地把数据送达目的地,TCP采用三次握手策略。

三次握手:发送端首先发送一个带有SYN标志的数据报给接收端,接收端接收后发送一个带有SYN\ACK标志的数据包传递确认信息,最后发送端回传一个带有ACK标志的数据包,表示握手结束。

四次挥手:发送端发送一个FIN用来关闭发送端到接收端的数据传送,client进入FIN_WAIT_1状态;

​ 接收端收到FIN后发送一个ACK给发送端,确认序号为收到序号+1,接收端进入CLOSE_WAIT状态;

​ 接收端发送一个FIN,用来关闭接收端到发送端的数据传递,接收端进入LAST_ACK状态;

​ Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值