java常见题

news2025/7/4 17:10:40

1.数组和链表结构简单对比?(ArrayList和linkedList)

数组是一段连续的空间。 大小固定 可能大小不够用或者有浪费

数组查询比较方便,根据下标就可以直接找到元素,时间复杂度O(1);增加和删除比较复杂,需要移动操作数所在位置后的所有数据,时间复杂度为O(N)s

链表是使用是一种物理存储单元上非连续,非顺序的存储结构2.类初始化和实例初始化

插入、删除数据比较方便,时间复杂度O(1);查询必须从头开始找起,十分麻烦,时间复杂度O(N)

2.类初始化和实例初始化

类的初始化:

是完成程序执行前的准备工作。在这个阶段,静态的(变量,方法,代码块)会被执行。同时在会开辟一块存储空间用来存放静态的数据。类初始化只在类加载的时候执行一次

类的实例化(实例化对象):

是指创建一个对象的过程。这个过程中会在堆中开辟内存,将一些非静态的方法,变量存放在里面。在程序执行的过程中,可以创建多个对象,既多次实例化。每次实例化都会开辟一块新的内存。(就是调用构造函数)

一.什么时候类初始化?

1.第一次实例化之前会先类初始化

main方法所在的类需要先加载和初始化

2.子类初始化会先让父类初始化

3.一个类初始化就是执行()方法

clinit 方法由静态类变量显示赋值代码静态代码块组成

从上到下顺序执行

image-20221107172006076

二.什么时候实例化?

实例化就是执行()方法

()方法 方法可能重载有多个,有几个构造器就有几个()方法方法

()方法方法由非静态实例变量显示赋值代码和非静态代码块,对应构造器代码组成

非静态实例变量显示赋值代码和非静态代码块从上到下顺序执行,而对应构造器的代码最后执行、

Son son1 = new Son(); (9)(3)(2)(9)(8)(7) 

注意!:上图中的 4 没有输出,重写的方法两个类中都调用的是子类的

解释:

image-20221107182354065

public static void main(String[] args) {
    Son son = new Son();
    System.out.println();
    Son son1 = new Son();
}
(5)(1)(10)(6)(9)(3)(2)(9)(8)(7)

(9)(3)(2)(9)(8)(7)

3.重写的要求是什么?

●方法名 必须一样
●形参列表 必须一样 参数个数、种类、排列顺序相同
●返回值类型 返回类型可以相同也可以是原类型的子类型
●修饰符 子类比父类权限更大或者相等。 父类方法是包访问权限,子类的重写方法是public访问权限
●抛出的异常列表 重写方法不能抛出新的异常或者。重写方法不能抛出比被重写方法更高层次的被检查异常

重载的要求是什么?

方法名称必须相同

参数列表必须不同(个数不同、或类型不同、参数类型排列顺序不同等)

对访问控制修饰符、返回值类型、异常类型 未作要求

4.方法值传递

image-20221107184416237

5.变量

1、声明的位置

局部变量:方法体{}中,形参,代码块{}中

成员变量:类方法外

类变量(静态变量): 有static修饰

实例变量:没有static修饰

2、修饰符

局部变量:final

成员变量:public protected,private,final ,static volatile,transient

3、值存储位置

局部变量:栈

实例变量:堆

类变量(静态变量):方法区。 1.7后静态变量放在堆中了

4、生命周期

局部变量:每一个线程,每一次调用执行都是新的生命周期

实例变量:随着对象的创建而初始化,随着对象的被回收而消亡,每一个对象的实例变量都是独立的

类变量:随着类的初始化而初始化,随着类的卸载而消亡,该类的所有对象的类变量是共享的

如何区分:

1、局部变量与实例变量重名

 在成员便令前面加 this

2、局部变量与类变量重名

 在类变量前面加 类名
/**
 * @author gcq
 * @Create 2020-09-29
 */
public class Exam5 {
    静态变量在方法区 所有对象共享 所有方法都可以访问  (扩展:静态方法只能访问静态成员
    static int s;//成员变量  类变量 方法区
    int i; //成员变量  	实例变量 	堆
    int j;//成员变量 	实例变量  	堆
    {
        int i = 1; //局部变量
        i++; // 就近原则 上面的这个i
        j++;
        s++;
    }
    public  void test(int j) {
        j++; // 就近原则 21  局部变量
        i++; //成员变量i
        s++;
    }
    public static void main(String[] args){
        Exam5 obj1 = new Exam5();
        Exam5 obj2 = new Exam5();
        obj1.test(10);
        obj1.test(20);
        obj2.test(30);
        // 2 1 5
        System.out.println(obj1.i + "," + obj1.j + "," + obj1.s);
        // 1 1 5
        System.out.println(obj2.i + "," + obj2.j + "," + obj2.s);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XOsQndDr-1667823675425)(…/…/…/tools/Typora/upload/image-20221107200220215.png)]

image-20221107200422636

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

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

相关文章

“双11”来了!企企通B2B商城助力打造供销一体数字化解决方案

今年的“双11”,比往年来得更早。10月20日晚上8点,双11第一波预售开启。电商平台的竞争愈发激烈,直播卖货的崛起更是加重了行业的竞争压力。但淘宝、天猫、京东这类传统的电商平台因其完善且成熟的供应链,使得双11淘宝系主场格局不…

Redis进行RCE利用总结

https://www.cnblogs.com/loongten/p/15838580.html 0x00 简要说明 百度百科:Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&am…

什么才是好代码?

定义代码质量高低,本来就是主观的,更多的是出于判断。为了做出更客观的评判,我个人 认为有益的做法是后退一步,考虑一下编写代码时真正试图实现的目标。在我看来,帮助我实现这些目标的代码就是高质量的,而产…

ECMAScript 6 语法 1 —— 块作用域构造let 和 const

Javascript 的作用域存在的两种情况 情况一:函数内部 function enterYourChoice(flag){// var有变量提升的作用,相当于在此处写了一个 let choice;if(flag){var choice "yes";}else {console.log(choice); // undefined 并没有报错哦&#…

基于arx模型的MPC预测控制器simulink建模与仿真实现

目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 MPC的优点 模型预测控制善于处理多输入多输出系统 对于MIMO系统,PID需要为每个子系统单独设计PID控制器,由于存在耦合对于较大的系统难以实现 1.MPC控制器可以较好控制MIMO系统 2…

查题校园公众号题库系统

查题校园公众号题库系统 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(…

深度学习入门(二十五)卷积神经网络——多输入多输出通道

深度学习入门(二十五)卷积神经网络——多输入多输出通道前言卷积神经网络——填充和步幅课件多个输入通道多个输出通道多个输入和输出通道11卷积层二维卷积层总结教材1 多输入通道2 多输出通道3 11卷积层4 小结前言 核心内容来自博客链接1博客连接2希望…

【Linux】腾讯云服务器Linux环境搭载

作者:一个喜欢猫咪的的程序员 专栏:《Linux》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 目录 Linux介绍: 我们本篇博客以腾讯云的Linux系统搭载为例&#xf…

SSM详解6:请求转发和请求重定向的区别

1、定义不同 请求转发(forward): 是发生在服务器内部程序,当服务端程序收到一个请求,会将该请求转发给另一个服务端(目的地址),再将目的地址的响应返回给客户端。而客户端对该过程…

前端如何锁定项目的node和pnpm版本

前端如何锁定项目的node和pnpm版本背景如何锁定Node版本的管理背景 项目组成员Node.js、npm、yarn、pnpm等版本不统一。造成编译出错,开发不方便,工作效率低下等问题。 如何锁定 通过修改package.json,指定engines字段,锁定前端所…

初始C++(一)---命名空间、输入输出、缺省参数

目录 1.命名空间 定义命名空间 using 指令 命名空间的嵌套 2、C输入输出 标准输出流(cout) 标准输入流(cin) 3.缺省参数 1.命名空间 定义命名空间 假设这样一种情况,当一个班上有两个名叫张三 的学生时&…

零基础入门网络安全,收藏这篇不迷茫【2022最新】

前言 最近收到不少关注朋友的私信和留言,大多数都是零基础小友入门网络安全。其实看过的铁粉都知道,之前的文里是有过推荐过的。新来的小友可能不太清楚,这里就系统地叙述一遍。 01.简单了解一下网络安全 说白了,网络安全就是指…

网络面试-ox07http中的keep-alive以及长/短连接

非Keep-Alive: 早起HTTP1.0, 浏览器发起http请求需要与服务器建立新的TCP连接,请求处理后连接立即关闭。 缺点:每个这样的连接,客户端与服务器都要分配TCP的缓冲区和变量,这给服务器带来严重的负担。 Keep-Alive: 默认持久连接&am…

成为Linux大神——必须要具备的基本技能!

要努力,但不要着急,繁花锦簇,硕果累累,都需要过程! 目录 1.Linux软件包管理器yum 2.Linux编辑器—vim的使用 2.1vim的基本概念: 2.2vim的基本操作: 2.3vim正常模式命令集: 2.4vim底行…

vue3 + ts: layout布局

一、理解:layout layout,语义:布局,设计,结合前端vue项目,我理解为这样的定义:页面级别的组件,框架级别的组件,基础布局组件,基础设计 关键词:组…

SEO外链专员,SEO专员,SEO编辑,每天工作量给他们怎么安排?

企业想要做好网站排名,想要让网站在搜索引擎中获得更高的曝光度,就需要对网站进行整体优化,而整体优化就包括站内优化,以及站外优化,只有这样才能让网站关键词获得的更多的排名,从而也就能够获得更多的流量…

堪称经典,一个非常适合初学者的机器学习实战案例

大家好,今天我给大家介绍一个非常适合新手的机器学习实战案例。 这是一个房价预测的案例,来源于 Kaggle 网站,是很多算法初学者的第一道竞赛题目。 该案例有着解机器学习问题的完整流程,包含EDA、特征工程、模型训练、模型融合等…

轻量级简约仪表板Dasherr

什么 Dasherr ? 这是老苏在逛 reddit 时偶然发现的,作者刚发布,这是一款全新的轻量级仪表板。 官方目前没有提供 docker,但本身的安装方法并不复杂,只要将代码下载后,将 www 目录中的文件放入到 Web 服务器…

蓝桥杯入门即劝退(五)跑断腿的小蓝

九层之台,起于垒土,你我皆是垒土人✔ 愿我的文章对你有所帮助! 欢迎关注点赞评论,共同学习,共同进步! 一、题目(填空题) 小蓝每天都锻炼身体。 正常情况下,小蓝每天跑 …

阿里测试8年,从5K到40K,这178天的心酸只有我自己知道···

从事测试工作已8年有余了,今天想聊一下自己刚入门时和现在的今昔对比,虽然现在也没什么大成就,只能说笑谈一下自己的测试生涯。 技术栈的变化 刚开始是做的开发,也是做了好几年的开发,后面软件测试的风潮开始了&…