JAVA笔试基础知识-final/static+abstract/interface+wait/sleep+tcp/udp

news/2024/11/7 7:53:06/

1、final关键字和static关键字的区别

/*** final修饰类:* 使用final修饰类的目的简单明确,表明这个类不能被继承。* 当程序中有永远不会被继承的类时,可以使用final关键字修饰。* 被final修饰的类所有成员方法都将被隐式修饰为final方法。** final修饰方法:* 首要作用是锁定方法,不让任何继承类对其进行修改。* 另外一个作用是在编译器对方法进行内联,提升效率。** final修饰变量:* 当final修饰的是一个基本数据类型数据时,这个数据的值在初始化后将不能被改变。(变为常量)* 当final修饰的是一个引用类型数据时,也就是修饰一个对象时,引用在初始化后将永远指向一个内存地址,不可修改;* 但是该内存地址中保存的对象信息,是可以进行修改的。*/
/*** static主要有4中使用情况:成员变量、成员方法、代码块和内部类* static关键字的基本作用就是:方便在没有创建对象的情况下来进行调用(变量/方法)。** 常用static修饰成员变量为静态变量:* -静态变量属于类,在内存中只有一个复制,只要静态变量所在的类被加载,*  这个静态变量就会被分配空间,因此就可以被使用了,只有用“类.静态变量”的方式来引用。* -实例变量属于对象,它在内存中存在多个复制,只有对象被创建后,*  实例变量才会被分配内存空间,才能被使用,只有用“对象.实例变量”的方式来引用。** 常用static修饰成员方法为静态方法:* static方法是类的方法,不需要创建对象就可以被调用,而非static方法是对象的方法,* 只有对象被创建出来后才可以被使用,static方法中不能使用this和super关键字,* 不能直接调用非static方法和非static变量,只能直接访问所属类的静态成员变量和静态成员方法,* 因为当static方法被调用时,这个类的对象可能还没被创建,即使已经被创建了,也无法确定调用哪个对象的方法。*/
/*** Java中成员变量的定义/声明、初始化、实例化关键词解释:* -定义/声明是成员变量定义*  private String name;* -初始化是成员变量显式直接赋值/显式构造函数赋值/隐式赋默认值*  private String name = "小徐";*  public MyClass(String name) {this.name = name;}*  public String name; // 默认为null* -实例化是相较于类的对象被创建时,分配内存空间,调用构造函数[成员变量赋值]*  new MyClass("小杨");*/

2、abstract抽象类和interface接口的异同点

/*** 抽象类和接口的差异:* 1、抽象类通过abstract关键字声明,接口通过interface创建* 2、抽象类通过extend关键字继承,接口通过implements关键字实现* 3、Java中支持单继承抽象类,但是可以多实现接口* 4、抽象类可以实现具体方法,接口不行* 5、子类继承抽象父类后可以继续抽象抛出方法声明,接口不行* 6、抽象类可以有语句块(构造语句块)/构造函数(虽不能实例化抽象类,但是构造语句块/函数用于初始化成员变量用),接口不行* 7、抽象类实现的静态方法可以被子类继承(可以通过子类.Xxx()访问),接口实现的静态方法不可以被子类继承(不可以通过子类.Xxx()访问)*    -猜想在JDK1.8新增default、static方法声明时,为了考虑向后/下兼容,让以前的代码方法不冲突,仅抽象类的静态方法可继承** 抽象类和接口的相同:* 1、均可以实现共同方法的抽离,不同具体类有不同实现(体现多态性)* 2、均不能实例化,不能直接创建对象* 3、继承或实现的类均要实现抽象或声明的方法* 4、均可以实现静态方法*/

3、wait方法和sleep方法的区别

> 多线程编程中,wait方法 和 sleep方法的同异
1. wait方法和sleep方法都可以让线程暂停执行1. wait/notify/notifyAll方法是Object类的方法,  sleep方法是Thread类的静态方法
2. wait方法是用于多个线程之间的协作和通信,  sleep方法是用于线程的休眠
3. wait方法必须在synchronized同步快中调用(即方法或代码块中使用),  sleep方法没有使用限制
4. wait方法暂停线程期间会释放对象的锁,  sleep方法暂停线程期间不会释放对象的锁(即一直持有该对象的锁)
5. wait方法会使得当前线程进入一直等待的状态,直到其它线程调用notify/notifyAll方法唤醒,  sleep方法会使得当前线程暂停执行一段时间,自动唤醒

4、tcp和udp通讯协议的区别

> TCP和UDP通讯协议的区别:
1. TCP协议是可靠的  UDP协议是不可靠的
2. TCP协议稳定性高(基于丢包重传)  UDP协议稳定性低
3. TCP协议传输速度慢(基于传输包的确认机制)  UDP协议传输速度快
4. TCP协议适用于对网络通讯质量要求较高的场景,如传输文件/浏览网页/发送邮件...  UDP协议适用于实时性要求较高,但是对少量丢包没有要求的场景,如语音通话/视频通话/直播...> TCP通讯协议交互的三次握手和四次挥手:
1. 客户端-SYN->服务端
2. 客户端<-SYN+ACK-服务端
3. 客户端-ACK->服务端1. 客户端-FIN->服务端
2. 客户端<-ACK-服务端
3. 客户端<-FIN-服务端
4. 客户端-ACK->服务端

http://www.ppmy.cn/news/1059961.html

相关文章

db-gpt安装指南(docker版本)

1 下载源码 下载v0.3.5的源码&#xff0c;截止今天&#xff08;20230823&#xff09;建议安装这个“稳定”版本。 2 构建镜像 依照自己硬件环境&#xff0c;看看是否要调整一下启动参数。 bash docker/build_all_images.sh \ --base-image nvidia/cuda:11.7.1-devel-ubuntu…

FastJson在Java后端方面解析使用(二)

​ JSON现在常用来做前后端数据交互&#xff0c;两个蝴蝶飞只是简单的对JSON做一下讲解和简单使用。关于JSON,我还了解的远远不够。由于本人经验有限&#xff0c;嘴皮子不溜&#xff0c;所以学术性&#xff0c;概念性&#xff0c;底层性的知识点暂时不做介绍。文章中有错误之处…

GOLANG面向对象:封装 继承 多态

面向过程转换到面向对象&#xff0c;那么必然会涉及到几个特性&#xff1a;封装&#xff0c;继承&#xff0c;多态&#xff0c;那么Golang中的面向过程会有什么特性&#xff1f;那我们来仔细说一说&#xff1a; 封装&#xff1a; 首先要一个类的概念&#xff0c;类就像一下工厂…

一文读懂Redis配置,史上真香配置

文章目录 基本配置项AOF持久化配置项RDB持久化配置项淘汰策略配置项主从复制配置项鸣谢 让那些总为redis连接异常的小白指引明灯&#xff0c;少走弯路。为那些不知道如何进行高级配置的大佬整一杯小酒。 基本配置项 bind&#xff1a;用于设置Redis绑定的IP地址。默认情况下&…

无涯教程-Python - Numbers(数字)

数字数据类型存储数值&#xff0c;它们是不可变的数据类型&#xff0c;这意味着更改数字数据类型的值将导致新分配的对象。 数字对象是在您为其分配值时创建的。例如- var11 var210 您也可以使用 del 语句删除对数字对象的引用。 del语句的语法是- del var1[,var2[,var3[..…

Allegro平台如何利用测评打造爆款产品,优化listing提升曝光度!

Allegro是波兰本土最大的电商平台&#xff0c;1999年由波兰人自己创造成立&#xff0c;75%的波兰人都知道该网站&#xff0c;Allegro的品牌认知度在波兰高达98%。也是东欧“最大”拍卖网站。 波兰的消费者非常熟悉Allegro平台&#xff0c;大部分波兰人如果想要购买商品&#x…

数据库的增量备份与差异备份

在当今数字时代&#xff0c;数据已经成为公司的主要资产。为了维护这些珍贵的数据&#xff0c;公司通常会采取各种数据保护措施&#xff0c;其中增量备份是一种很有效的方法。本文将详细介绍什么是数据库的增量备份&#xff0c;以及如何帮助企业更有效地维护数据。  我们需要…

优化IDEA配置,升级ZGC

由于IDEA经常崩溃&#xff0c;加上项目也是时候升级JDK了&#xff0c;所以索性一块升级了&#xff0c;首先说一下&#xff0c;这个ZGC需要JDK11以上(我目前是JDK17)&#xff0c;IDEA新版会支持ZGC的使用&#xff08;我的是2023.2.1&#xff09;。 找到你的这个文件&#xff0c…