Java基础语法练习题

news2024/9/22 23:29:32

2023.2.18刷题

1、java的4类流程控制语句

解析:

java的4类流程控制语句

  1. 循环语句:while,for,do while

  1. 选择语句(分支语句):if,switch

  1. 跳转语句:break,continue,break,label

  1. 异常处理语句:try catch finally,throw

2、类的加载过程

解析:

B、对象成员,实例化对象后才有的内容,已经完成类的加载过程了。类加载是对针对的类变量,而不是对象成员。

3、线程安全的map

解析:

线程安全的map:HashTable,SynchronizedMap,ConcurrentHashMap

解析:

4、StringBuffer类和String类

解析:

  1. String类对象一旦成立,便不能被改变

  1. StringBuffer类对象成立后,依然可以被修改

5、spring的事务传播特性

解析:

事务属性的种类:

  1. 传播行为(PROPERGATION):事务开启和事务结束(包括回滚和提交)

回滚:在事务提交之前将数据库数据恢复到事务修改之前数据库数据状态。

  1. 隔离级别:

  1. 只读:

  1. 事务超时:

https://www.nowcoder.com/questionTerminal/1c65d30e47fb4f59a5e5af728218cac4

6、正则表达式

2023.2.19刷题

1、多态、匿名内部类、覆盖方法重写

解析:

匿名内部类:形式

形式:

例子:

Swimming s2 = new Swimming()

该代码是表示创建内部类对象,用于下面go方法,并重写了swim方法。

解析:

2、java解释器自动引入包

3、abstract、static、final、public关键字的使用

关键字

作用

abstract

只能描述方法,不能描述变量。

  1. 描述类继承的抽象类需要对其中的所有方法进行重写,不能和关键字final共存。

  1. private修饰则该方法不可以被子类访问,但是abstract修饰需要子类去实现,不能和关键字private共存。

  1. static表示是静态的方法,随着类的加载而加载,则该方法不需要在子类中去实现,不能和关键字static共存。

static

修饰成员变量和成员函数。static修饰的方法,在对象实例化之前就已经被分配了内存,被加载了。

静态方法中不能使用this和super关键字,因为this代表本类对象,super代表父类对象,而静态时,有可能没有对象存在,所以this和super无法使用。

final

可以修饰类,方法,变量(成员变量内,局部变量,静态变量)。

  1. 修饰类:不可被继承

  1. 修饰方法:不可被覆盖,可以被继承

  1. 修饰变量:常量

public

可以修饰抽象方法。它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。修饰类,成员变量,成员方法,构造方法。

protected

可以修饰抽象方法。它主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。修饰成员变量,成员方法,构造方法,但不能修饰类(此处指的是外部类,内部类不加以考虑)。

default

它是针对本包访问而设计的,任何处于本包下的类、接口、异常等,都可以相互访问,即使是父类没有用protected修饰的成员也可以。

private

它的访问权限仅限于类的内部,是一种封装的体现。修饰成员变量,成员方法,构造方法,不能修饰类(此刻指的是外部类,内部类不加以考虑)。

详细的解释:

1.抽象方法只能定义在抽象类中,抽象方法和抽象类必须由abstract修饰,abstract关键字只能描述类和方法,不能描述变量。抽象方法只定义方法声明,不定义方法实现。抽象类不可以被实例化(创建对象),只有通过子类继承抽象类并覆盖抽象类中的所有抽象方法后,该子类才可以被实例化,否则该子类还是一个抽象类。抽象类中有构造函数用于给子类对象进行初始化,同时抽象类中可以含有非抽象方法。abstract关键字不可以与final,private,static关键字共存,因为被final修饰的方法不可以被重写,意味着子类不可以重写该方法,如果abstract和final共同修饰父类中的方法,子类要实现抽象方法(abstract的作用),而final又不让该方法重写,这相互矛盾。如果private和abstract共同修饰父类中的方法,private修饰则该方法不可以被子类访问,但是abstract修饰需要子类去实现,两者产生矛盾。如果static和abstract共同修饰父类中的方法,static表示是静态的方法,随着类的加载而加载,则该方法不需要在子类中去实现,这与abstract关键字矛盾。

2.static用于修饰成员变量和成员函数,想要实现对象中的共性数据的对象共享,可以将这个数据进行静态修饰,被静态修饰的成员可以直接被类名调用,静态随着类的加载而加载,而且优先于对象存在。静态方法只能访问静态成员(静态方法和静态变量),不可以访问非静态成员,这是因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。静态方法中不能使用this和super关键字,因为this代表本类对象,super代表父类对象,而静态时,有可能没有对象存在,所以this和super无法使用。

3.final关键字可以修饰类,方法,变量(成员变量内,局部变量,静态变量),被final修饰的类是一个最终类,不可以被继承,被final修饰的方法是一个最终方法,不可以被覆盖,但是可以被继承。被final修饰的变量只能是一个常量,只能赋值一次。内部类被定义在类中的局部位置上时,只能访问局部被final修饰的局部变量。

https://www.nowcoder.com/questionTerminal/fb463f20d1cc44e3b4476e5d5319e7e9

4、类的线程安全

5、多态深度了解

5.1“编译看左,运行看右”

解析:

1、A是父类,B是子类继承了A类。

A a = new B();

该代码:父类引用指向子类对象(向上转型)(实则是向上转型,子类的实例对象->指向父类的引用)

编译看=的左侧,即父类的方法,运行看=右侧,即子类的方法,对父类的中相同的方法名进行了重写。

2、多态满足的条件:1.继承 2.重写 3.父类引用指向子类对象

3、成员变量,静态方法看左边;非静态方法:编译看左边,运行看右边,

参考复习链接:

https://blog.csdn.net/Fighting1021/article/details/119940351?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167679376116800188512455%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167679376116800188512455&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-2-119940351-null-null.142^v73^wechat_v2,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=%E7%BC%96%E8%AF%91%E7%9C%8B%E5%B7%A6%E8%BE%B9%E8%BF%90%E8%A1%8C%E7%9C%8B%E5%8F%B3%E8%BE%B9&spm=1018.2226.3001.4187

5.2多态实现的两种方法

Java通过方法重写方法重载实现多态

方法重写(覆盖)是指子类重写了父类的同名方法

方法重载是指在同一个类中,方法的名字相同,但是参数列表不同

6、RMI采用什么通讯协议

RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制。使用这种机制,某一台计算机上的对象可以调用另外一台计算机上的对象来获取远程数据。RMI是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。在过去,TCP/IP套接字通讯是远程通讯的主要手段,但此开发方式没有使用面向对象的方式实现开发,在开发一个如此的通讯机制时往往令程序员感觉到乏味,对此RPC(Remote Procedure Call)远程过程调用协议应运而生,它使程序员更容易地调用远程程序,但在面对复杂的信息传讯时,RPC依然未能很好的支持,而且RPC未能做到面向对象调用的开发模式。针对RPC服务遗留的问题,RMI出现在世人面前,它被设计成一种面向对象的通讯方式,允许程序员使用远程对象来实现通信,并且支持多线程的服务,这是一次远程通讯的***,为远程通信开辟新的里程碑。 RMI的开发步骤

1、先创建远程接口及声明远程方法,注意这是实现双方通讯的接口,需要继承Remote 开发一个类来实现远程接口及远程方法,

2、值得注意的是实现类需要继承UnicastRemoteObject 通过javac命令编译文件,

3、通过java -server 命令注册服务,

4、启动远程对象

5、最后客户端查找远程对象,并调用远程方法 所以选C

7、Java基本类型

基本数据类型:八个

引用数据类型:

对象变量类型,复合数据类型,包含类、接口、数组(除了基本类型外,就是引用类型)。

8、对象实例化

解析:

抽象类和接口都不能实例化。

9、关键字

解析:

10、抛InterruptedException的代表方法

解析:

11、private,default,protected,public修饰符的区别

解析:

更多的部分参考 本部分的3、abstract、static、final、public关键字的使用。

12、标识符(变量的规则)

解析:

标识符:

1. 数字,字母,符号(只有_和$两种),数字不能开头。

2. 不能是关键字(有两个保留关键字,goto,const,关键字都是小写的)或者显式常量(null,true,false)。

13、Java语言的特点

1、Java致力于检查程序在编译和运行时的错误。

2、Java虚拟机实现了跨平台接口

3、类型检查帮助检查出许多开发早期出现的错误。

4、Java自己操纵内存减少了内存出错的可能性。

5、Java还实现了真数组,避免了覆盖数据的可能。

14、抽象类和最终类

抽象类:

  1. 抽象类是用来继承的,抽象类中的所有方法在子类中需要重写,否则该子类需要声明为抽象类

  1. 抽象类中可以有抽象方法,也可以没有抽象方法。

最终类(final类):

  1. 最终类不能被继承,即没有子类,最终方法也就不能被重写。

  1. 最终类中可以有最终方法也可以没有。

15、JVM内存

解析:

方法区在JVM中也是一个非常重要的区域,它与堆一样,是被 线程共享 的区域。 在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。

拓展:

概括地说来,JVM初始运行的时候都会分配好 Method Area(方法区)Heap(堆) ,而JVM 每遇到一个线程,就为其分配一个 Program Counter Register(程序计数器) , VM Stack(虚拟机栈)和Native Method Stack (本地方法栈), 当线程终止时,三者(虚拟机栈,本地方法栈和程序计数器)所占用的内存空间也会被释放掉。这也是为什么我把内存区域分为线程共享非线程共享的原因,非线程共享的那三个区域的生命周期与所属线程相同,而线程共享的区域与JAVA程序运行的生命周期相同,所以这也是系统垃圾回收的场所只发生在线程共享的区域(实际上对大部分虚拟机来说知发生在Heap上)的原因。

16、线程的描述

1、线程的调度是抢先式,即根据线程的优先级来决定哪一个线程先运行。

2、不同优先级的线程间是抢先式的,而同级线程间轮换式的。

3、一个新创建的线程并不是自动的开始运行的,必须调用它的start()方法使之将线程放入可运行态(runnable state),这只是意味着该线程可被JVM的线程调度程序调度而不是意味着它可以立即运行。

4、一个线程停止运行的原因:

可能是因为更高优先级线程的抢占,也可能是因为调用sleep()方法。

17、类之间的几种常见关系

解析:

USES-A:依赖关系,A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。这种在代码中的体现为:A类方法中的参数包含了B类。

关联关系:A类会用到B类,这是一种强依赖关系,是长期的并非偶然。在代码中的表现为:A类的成员变量中含有B类。

HAS-A:组合关系,拥有关系,是关联关系的一种特例,是整体和部分的关系。比如鸟群和鸟的关系是组合关系,鸟群中每个部分都是鸟。

IS-A:表示继承。父类与子类,这个就不解释了。

要注意:还有一种关系:组合关系也是关联关系的一种特例,它体现一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分的关系,但这种整体和部分是不可分割的。

18、equals方法

1、equals方法是String类型重写的方法,首先能够判断参数是不是String类型。

==表示两者的地址是否相同

equals方法是检查啷个字符串的内容是否相同。注意大小写。

equalsIgnoreCase方法是需要检查字符串内容是否相同,并且忽略大小写比较。

2、int和Integer两者内容的比较。

Integer的内部数据是-127-128。在这个范围内的数据,Integer进行拆箱后再和int的数据内容进行比较。

19、Java程序初始化顺序(父类子类静态代码块、普通代码块、构造方法)

解析:

关于Java程序初始化顺序:

  1. 父类的静态代码块

  1. 子类的静态代码块

  1. 父类的普通代码块

  1. 父类的构造方法

  1. 子类的普通代码块

  1. 子类的构造方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/357252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Markdown及其语法详细介绍(全面)

文章目录一、基本语法1.标题2.段落和换行3.强调4.列表5.链接6.图片7.引用8.代码9.分割线10表格二、扩展语法1.标题锚点标题 {#anchor}2.脚注3.自动链接4.任务列表5.删除线6.表情符号7.数学公式三、Markdown 应用1.文档编辑2.博客写作3.代码笔记四、常见的工具和平台支持 Markdo…

加油站会员管理小程序实战开发教程12

我们上一篇介绍了会员数据源的开发,本节我们介绍一下会员注册功能。 首先呢梳理一下会员注册的业务逻辑,如果用户是首次登录,那他肯定还没有给我们的小程序提交任何的信息。那么我们就在我的页面给他显示一个注册的按钮,如果他已经注册过了,那么就正常显示会员的信息,他…

spring cloud 集成 seata 分布式事务

spring cloud 集成 seata 分布式事务 基于 seata-server 1.6.x 序言 下载 seata-server 准备一个数据库 seata 专门为 seata-server 做存储,如, 可以指定 branch_tabledistributed_lockglobal_tablelock_table 准备一个业务库,比如存放定单&#xff…

【学习笔记2.19】动态规划、MySQL、Linux、Redis(框架)

动态规划 343整数拆分 class Solution {public int integerBreak(int n) {int dp [] new int [n 1];//dp[i]:正整数i拆分后的最大乘积dp[2] 1;for(int i 2;i < n ;i ){for(int j 1;j < i;j ){dp[i] Math.max(dp[i],Math.max(j * (i - j),j * dp[i - j]));} …

Ubuntu安装opencv库3.4.10,并在cmake工程中引入opencv库

Windows下安装不同&#xff0c;Ubuntu安装OpenCV库时&#xff0c;需要事先安装依赖&#xff0c;而且不同OpenCV库所需的依赖可能会有所不同&#xff0c;下面的依赖亲测 3.4.10 和 4.5.5版本的有效&#xff0c;但是4.6以上版本安装可能会报错。 参考链接&#xff1a;https://bl…

【Python】以邮件的方式定时发送一天的股票分析报告

【Python】以邮件的方式定时发送一天的股票分析报告 文章目录【Python】以邮件的方式定时发送一天的股票分析报告1、Python发送邮件1&#xff09;EmailSender封装2&#xff09;可能存在的问题2、jinja2动态渲染html页面3、阿里云OSS搭建图床1&#xff09;Python上传图片到OSS中…

在Linux和Windows上安装sentinel-1.8.5

记录&#xff1a;380场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;安装sentinel-1.8.5。在Windows上操作系统上&#xff0c;安装sentinel-1.8.5。Sentinel是面向分布式、多语言异构化服务架构的流量治理组件。版本&#xff1a;JDK 1.8 sentinel-1.8.5 CentOS 7.9官网地址…

开发板上搭建vsftpd服务器

1、交叉编译vstftp 下载vsftpd源码&#xff1a;vsftpd-3.0.2.tar.gz # tar –xzvf vsftpd-3.0.2.tar.gz # cd vsftpd-3.0.2 修改makefile文件&#xff1a; CC arm-linux-gnueabihf-gcc # make 将vsftpd文件放到/usr/bin/&…

说说Hibernate

当你在实战项目中需要用到SSH时, 如果你之前只用过Mybatis那自然是不能解决问题的, 因为在很多银行类金融类项目中你可能会使用到Hibernate, 那么关于Hibernate你应该要了解什么呢, 本篇文章就以学习Hibernate框架为目的, 巩固在工作中可能需要用到的这种ORM技术, 同时也欢迎家…

PVE硬件直通之强制IOMMU分组

文章目录检查是否直接支持IOMMU分组配置IOMMU分组不直接支持的需要更新内核参考检查是否直接支持IOMMU分组 下面 以SATA控制器为例&#xff0c;看pci设备是否可以直接支持IOMMU分组 /* 打印pci设备详细信息*/ lspci -vv /* 找到SATA controller 段落*/ 16:00.1 SATA controll…

设计模式:模板模式 CRTP设计习语

一、模板模式 1、模板模式 1&#xff09;定义 定义一个操作中的算法的骨架&#xff08;稳定&#xff09;&#xff0c;而将一些步骤延迟&#xff08;变化&#xff09;到子类中。Template Method使得子类可以不改变&#xff08;复用&#xff09;一个算法的结构即可重定义&…

tensorflow 学习笔记(二):神经网络的优化过程

前言&#xff1a; 学习跟随 如何原谅奋力过但无声的 tensorflow 笔记笔记。 本章主要讲解神经网络的优化过程&#xff1a;神经网络的优化方法&#xff0c;掌握学习率、激活函数、损失函数和正则化的使用&#xff0c;用 Python 语言写出 SGD、Momentum、Adagrad、RMSProp、Ada…

2023-02-18干活记录

MathBERT: 耗时&#xff1a;2-3hours(昨天和人聊天聊完了&#xff0c;今天九点才到实验室&#xff0c;呜呜呜一早上就看了个论文) 读论文&#xff1a;BERT-Based Embedding Model for Formula Retrieval Corpus Description&#xff1a; resource:from MSE;the formulas ex…

腾讯云——负载均衡CLB

负载均衡 CLB 提供四层&#xff08;TCP 协议/UDP 协议/TCP SSL 协议&#xff09;和七层&#xff08;HTTP 协议/HTTPS 协议&#xff09;负载均衡。您可以通过 CLB 将业务流量分发到多个后端服务器上&#xff0c;消除单点故障并保障业务可用性。CLB 自身采用集群部署&#xff0c;…

电子技术——共栅和共源共栅放大器的高频响应

电子技术——共栅和共源共栅放大器的高频响应 我们在之前学过无论是是CS放大器还是CE放大器&#xff0c;都可以看做是一个带通&#xff08;IC低通&#xff09;滤波器。在高频处的响应收到输入电容 CinC_{in}Cin​ 的限制&#xff08;主要是米勒效应&#xff09;。因此&#xff…

中南民族大学数字电路实验一

数字电路实验一基本逻辑门实验1.与非门实现与门2.与非门实现或门3.与非门实现或非门4.与非门实现异或门5.与非门实现与或门6.与非门实现与或非门实验报告结果分析基本逻辑门实验 一、实验目的 1&#xff0e;掌握 logisim 软件的使用方法&#xff1b; 2&#xff0e;学习基于该软…

基于蜣螂算法优化Kmeans图像分割-附代码

基于蜣螂优化Kmeans图像分割算法 - 附代码 文章目录基于蜣螂优化Kmeans图像分割算法 - 附代码1.Kmeans原理2.基于蜣螂算法的Kmeans聚类3.算法实验结果4.Matlab代码摘要&#xff1a;基于蜣螂优化Kmeans图像分割算法。1.Kmeans原理 K-Means算法是一种无监督分类算法&#xff0c;…

蚂蚁感冒---第五届蓝桥杯真题

目录 题目链接 题目描述 分析&#xff1a; 代码&#xff1a; y总综合​ 666 题目链接 1211. 蚂蚁感冒 - AcWing题库 题目描述 分析&#xff1a; y总真牛逼&#xff0c;掉头等价于穿过&#xff0c;以第一个点为分界点&#xff0c;分别判断 代码&#xff1a; &#xff08;自…

Java线程池的创建以及原理

一、为什么要使用线程池 在外面的日常开发中&#xff0c;也使用了不少池化技术&#xff0c;比如线程池、数据库连接池、HTTP连接池等等都是对这个思想的应用。 池化技术的思想主要是为了减少每次获取资源的消耗&#xff0c;提高对资源的利用率。 线程池提供了一种限制和管理资…

centos7系统-kubeadm安装k8s集群(v1.26版本)亲测有效,解决各种坑可供参考

文章目录硬件要求可省略的步骤配置虚拟机ip设置阿里镜像源各服务器初始化配置配置主节点的主机名称配置从节点的主机名称配置各节点的Host文件关闭各节点的防火墙关闭selinux永久禁用各节点的交换分区同步各节点的时间将桥接的IPv4流量传递到iptables的链&#xff08;三台都执行…