【牛客刷题】笔试选择题整理(day1-day2)

每天都在进步呀

文章目录

  • 1. 小数求模运算
  • 2. 进程的分区,这里说的不是JVM的分区。进程中,方法存放在方法区。
  • 3. 访问权限控制
  • 4. 继承与多态
  • 5.== 与equals()
  • 6. 类加载顺序
  • 7. super()与this()
    • 7.1 super
      • 7.1.1 super调用父类构造方法
      • 7.1.2 super调用父类属性和方法
  • 7.2 this
  • 8. 抽象类
  • 9. 接口


1. 小数求模运算

public class Test{public static void main(String args[]){System.out.println(100%3);System.out.println(100%3.0);}
}

在这里插入图片描述

2. 进程的分区,这里说的不是JVM的分区。进程中,方法存放在方法区。

在这里插入图片描述

3. 访问权限控制

在这里插入图片描述

public权限,是同类内,同包内,包外子类,包外非子类都能访问。
protected,同类内,同包内,包外子类。
default,是同类内,同包内可以。
private,只能是同类内。

4. 继承与多态

在这里插入图片描述
Java中允许的继承方式有,单继承A—>B,多层继承A->B->C,不同的类继承一个类A->B,C->B,但是不允许多继承,也就是A->B,A->C.
多态的实现条件
a. 必须在继承体系下
b. 子类重写父类方法
c. 通过父类的引用调用重写的方法。

如下图,通过父类father的引用,调用两个子类重写的方法,会有不同的状态。

	public static void main(String[] args) {father f = new day2_1_1(2003, 8, 28);father f1 = new sun2(2001, 8, 28);f.speak();f1.speak();}

5.== 与equals()

在这里插入图片描述
“==”,如果是两个基本数据类型,比较的是值是否相等。如果是引用类型,比较的是两个对象的地址是否相等。
userId.toLowCase()会重新new一个String对象,在堆上开辟一块空间,和常量池中的"admin"地址是不同的。
如果要比较两个字符串的值是否相等,要用 userId.toLowerCase() .equals(“admin”);

6. 类加载顺序

在这里插入图片描述
由于hello()是静态方法,在实例化对象之前就已经被加载,属于类对象。只要是使用到了Test类,都会加载静态hello方法,所以test数据中包含Test类的静态初始化数据。但test无法调用类的非静态方法,会有空指针异常。

我们来猜一下,下面代码的执行结果吧

public class Day2_1_3 {public static void say(){System.out.println("hello");}static{System.out.println("我是静态代码块");}{System.out.println("我是实例代码块");}public void sayYes(){System.out.println("yes");}public static void main(String[] args) {Day2_1_3 d = null;System.out.println("我是第几条呢");Day2_1_3 d1 = new Day2_1_3();d.say();d.sayYes();}
}

在这里插入图片描述
静态代码块要先执行,实例代码块会在实例化对象的时候执行。

7. super()与this()

在这里插入图片描述
以下为super()和this()的主要用法

7.1 super

7.1.1 super调用父类构造方法

调用父类构造方法,有super(),及super(参数列表)两种写法,如下几种情况

  1. 父类未定义任何构造方法,则编译器默认为父类定义一个无参构造方法,子类构造方法中可通过不写super()语句,或在构造方法第一行写super()语句,都能在调用子类构造方法之前,调用父类构造方法。
  2. 父类定义了一个有参构造方法,和一个无参构造方法,子类可在构造函数第一行,用super(),或super(参数)两种语句,调用父类的构造方法,都是不会出错的
  3. 父类只定义了有参构造方法,未定义无参构造方法,这时,子类必须在构造方法第一行用super(参数列表)得方式,调用父类构造方法,使用super()的方式会报错

7.1.2 super调用父类属性和方法

  1. super.父类属性,调用父类非私有属性,可调用父类重名的,被隐藏的属性
  2. super.父类方法,可调用父类重名方法。

7.2 this

this主要用于在一个构造方法中调用另一个构造方法,如下图,在无参构造函数中,调用有参构造函数,可在构造函数开始之间,为对象设置默认值。
注意,super与this不能在同一个构造方法中使用。

class Person {private String name;private int age;// 构造函数1:无参构造函数public Person() {this("Unknown", 0); // 调用构造函数2}// 构造函数2:有参构造函数public Person(String name, int age) {this.name = name;this.age = age;}
}

8. 抽象类

在这里插入图片描述
抽象类中至少要有一个抽象方法,可以包含普通类能定义的所有类型。如成员属性,构造方法,静态成员变量,普通方法,抽象方法。以下为抽象方法的注意事项。

  1. 抽象类的抽象方法不能使用 private 修饰符,因为这会使得子类无法实现该方法。而对于其他修饰符,其作用和普通类的一样。
  2. 抽象类中的普通方法可以有实现体,子类可以继承这些方法。
  3. 抽象类中可以定义静态成员变量和方法。
  4. 抽象方法不能构造其实例。
  5. 子类必须重写抽象类中的全部抽象方法,否则,这个子类也是抽象类,需要用abstract修饰。

9. 接口

在这里插入图片描述
接口中的访问权限修饰符可以有public和默认两种,默认是可以被包内的其他类或接口访问。

  1. 接口中可以包含抽象方法,接口中的抽象方法与上述抽象类中的使用方法一样。
  2. 在Java 8及其后续版本中,接口中可以定义静态方法。定义一个静态方法需要使用关键字static来修饰,并且必须提供一个方法体。静态方法只能访问接口中的静态变量和其他静态方法。
  3. 在接口中,可以定义常量,这些常量用static final修饰,但从Java 8开始,接口中的常量可以省略public static final这些关键字,直接声明常量即可。Java中,接口中定义的常量默认都是被公开和静态的。这意味着无论哪个类、方法或者代码块都可以直接通过"接口名.常量名"的方式来访问接口中的常量。并且常量值无法被修改,可以在多线程环境下安全地共享。
  4. 从Java 8开始,接口可以包含默认方法,也称为扩展方法,方法用default修饰,这是一种有默认实现的接口方法。实现该接口的类可以选择重写默认方法,否则就会使用默认实现。
default sayYeah(){System.out.println("yeah");
}
  1. 接口中可以有内部类,注解和枚举类型。

哒哒


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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openssl3.2 - 测试程序的学习

文章目录 openssl3.2 - 测试程序的学习概述笔记openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板openssl3.2 - 测试程序的学习 - test\aborttest.copenssl3.2 - 测试程序的学习 - test\sanitytest.copenssl3.2 - 测试程序的学习 - test\acvp_test.copenssl3.2 - 测…

语图奇缘:林浩然与杨凌芸的哲学漫画大冒险

语图奇缘:林浩然与杨凌芸的哲学漫画大冒险 Language Odyssey: The Philosophical Comic Adventure of Lin Haoran and Yang Lingyun 在一个充满逻辑谜题和言语陷阱的城市——逻言市,住着两位热衷于探索语言奥秘的年轻人,林浩然和杨凌芸。林浩…

AlexNet,ZFNet详解

1 AlexNet 网络结构 对于AlexNet网络来说,因为当时资源环境受限,他从第一步卷积开始就把一个图像分到两个GPU上训练,然后中间进行组合最后进行融合成全连接成1000个置信度 1 得到一张3x224x224的图像,然后进行11x11的卷积&…

02-opencv-上

机器视觉概述 机器视觉是人工智能正在快速发展的一个分支。简单说来,机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是通过机器视觉产品(即图像摄取装置,分CMOS和CCD两种)将被摄取目标转换成图像信号,传送给专用的图像处理系统&…

CAN相关寄存器

1. CAN_ MCR:CAN主控制寄存器。主要负责CAN工作模式的配置。 CAN_BTR:位时序寄存器。用来设置分频/TBs1/TBs2/Tsw等参数,设置测试模式。 CAN_(T/R)IxR:标识符寄存器。存放(待发送/接收)的报文ID、扩展ID、IDE位及RTR…

Dockerfile简介和基础实践

文章目录 1、Dockerfile简介1.1、Dockerfile解决的问题1.2、docker build 构建流程1.3、关键字介绍 2、Dockerfile 实践2.1、基本语法实践 --- golang2.1.1 问题检查 2.2、基本语法实践 --- gcc 总结 1、Dockerfile简介 Dockerfile是一个创建镜像所有命令的文本文件, 包含了一…

CIFAR-10数据集详析:使用卷积神经网络训练图像分类模型

1.数据集介绍 CIFAR-10 数据集由 10 个类的 60000 张 32x32 彩色图像组成,每类 6000 张图像。有 50000 张训练图像和 10000 张测试图像。 数据集分为5个训练批次和1个测试批次,每个批次有10000张图像。测试批次正好包含从每个类中随机选择的 1000 张图像…

HTTP和Tomcat概述

1,Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 在我们日常的生活中,经常会使用浏览器去访问百度、京东、传智官网等这些网站,这些网站统称为Web网站。如下就是通…

使用ffmpeg转换索尼老DV拍摄的VOB文件为mp4

一些背景故事 最近对象想用 CCD 拍照录像,家里刚好有一台快 20 年前的索尼 DV DCR-DVD653E,就是电池老化充不进去电了。 翻出来之后还感慨了一下:当年没有网购,价格不透明;有些地方也没有官方店,只有一两家…

nginx反向代理负载均衡

一,kali作为负载服务器 打开kali nginx服务,访问页面如下 使用docker拉取nginx,并做出端口映射 ┌──(root?kali)-[/etc/nginx] └─# docker pull nginx ┌──(root㉿kali)-[/etc/nginx] └─# docker run -p 11111:80 --name Jdr -d ng…

【揭秘】ForkJoinTask全面解析

内容摘要 ForkJoinTask的显著优点在于其高效的并行处理能力,它能够将复杂任务拆分成多个子任务,并利用多核处理器同时执行,从而显著提升计算性能,此外,ForkJoinTask还提供了简洁的API和强大的任务管理机制&#xff0c…

VR拍摄+制作

1.VR制作需要的图片宽高是2:1,需要360✖️180的图片,拍摄设备主要有两种: 1)通过鱼眼相机拍摄,拍摄一组图片,然后通过PTGui来合成(拍摄复杂) 2)全景相机,一键拍摄直接就能合成需要的…