Connor学Java - Day05

在这里插入图片描述

Learn && Live

虚度年华浮萍于世,勤学善思至死不渝

前言

Hey,欢迎阅读Connor学Java系列,这个系列记录了我的Java基础知识学习、复盘过程,欢迎各位大佬阅读斧正!原创不易,转载请注明出处:http://t.csdn.cn/OEmmz,话不多说我们马上开始!

1.浅克隆和深克隆的区别?

(1)浅克隆:拷贝对象和原对象的引用指向同一对象。浅克隆只是复制了引用地址,指向的是同一个内存地址,所以修改其中一个的值,另一个值也会随之变化

(2)深克隆:拷贝对象和原对象的引用指向不同对象。深克隆将对象及值整个复制过来,生成一个完全一样的新对象,此时修改其中一个的值,另一个值不会变化

2.什么是序列化?

序列化是一个用于将对象状态转换为字节流的过程,用于解决对象流进行读写操作时所引发的问题。可以将其保存到磁盘文件中或通过网络发送到其他程序。从字节流创建对象的相反的过程称为反序列化。

创建的字节流是与平台无关的,在一个平台上序列化的对象可以在不同的平台上反序列化

3.什么情况下需要序列化?

(1)将内存中的对象状态保存到一个文件中或数据库中

(2)使用套接字在网络上传送对象

(3)通过RMI(远程方法调用)传输对象

4.介绍一下内部类?

内部类可分为成员内部类和局部内部类

(1)成员内部类,顾名思义,即可以看作是外部类的成员,也拥有类本身的性质。

​ 作为一个类,可以:①使用final、abstract修饰;②拥有自己的属性、构造器、方法。

​ 作为一个成员:①可以用static、权限修饰符修饰;②可以调用外部类的属性方法:外部类.this.XXX

(2)局部内部类,定义在方法内、代码块内、构造器内的内部类

​ ①可用于一个返回特有类型的方法中,可用匿名实现类的匿名对象代替

​ ②在局部内部类中调用方法内的局部变量,这个局部变量需要final修饰(JDK7必须显式定义,JDK8后可省略,默认final)例如,在Android监听器内引用局部变量。这里的原因很简单,内部类作为一种特殊的类,在编译时会单独生成一个自己的.class文件,此时想要调用外部类.class文件中一个局部变量,显然无法直接调用,因此声明为final,可以在编译时拷贝一份到内部类的.class文件中,自然也无法修改这个局部变量的值

5.介绍一下Java中的代码块?

代码块分为静态代码块和非静态代码块,可用于初始化类、对象

静态代码块

(1)随着类的加载而执行,仅执行一次

(2)可用于初始化类的信息

(3)可定义多个,按声明顺序执行

(4)只能调用静态属性、方法

非静态代码块

(1)随对象的创建而执行,创建一个执行一次

(2)可用于初始化对象的属性

(3)可定义多个,按声明顺序执行

(4)所有属性、方法均可调用

属性赋值顺序

(1)默认初始化

(2)静态代码块(仅一次)

(3)显式初始化 / 非静态代码块(按声明顺序)

(4)构造器

(5)对象调用

举个栗子
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ConnorYan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值