面试知识点【java基础篇】

1、一个程序有且仅有一个main方法启动,main方法是作为java程序启动的唯一入口。

  public static void main(String[] args) {Student student = new Student(11,"111");System.out.println(student);}
权限修饰符:public:修饰一个类是公开的 public修饰的类一定和文件名一致,一个类中有且仅有一个 public类protect private:修饰类 私有类default:默认不写
​
修饰类修饰方法修饰域
public公开类都可以访问都可以访问
private私有类该方法只能在本类中被访问不能被其他类访问该方法只能在本类中被访问不能被其他类访问
protect子类可以继承可以访问 同包下的类也可以访问子类可以继承可以访问 同包下的类也可以访问
default只有同包的可以访问 当前类可以访问只有同包的可以访问

作用域 当前类 同包 子类 其他

public √ √ √ √

protected √ √ √ ×

default √ √ × ×

private √ × × ×

类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。

2、static关键字

1、修饰类 静态类:静态内部类

2、修饰静态域:类的所有对象共享这个域

3、修饰方法 静态方法:不用创建对象直接 通过方法名加传参就可以调用 只能访问静态属性,不能访问非静态属性和对象

static修饰变量:static修饰的变量属于类变量,该变量被该类所产生的所有对象共享

static修饰的是方法,this修饰的是类

static修饰的方法属于类方法:

(1)this关键字不能在static方法中使用。

(2)静态方法不能使用非静态方法

(3)非静态方法能使用静态方法。

(4)静态方法可以调用静态方法

static代码块:static修饰的代码块在main方法之前执行,以便于优化程序,优化main方法

3、final

final修饰的变量:

final修饰的变量叫做常量,只能被赋值一次,值不能变化

基本数据类型:其数值一旦在初始化之后便不能更改

引用数据类型:在对其初始化之后便不能再让其指向另一个对象,但指向该对象的内容可以改变

final固定的是一个地址

final修饰全局变量:必须赋值,否则变量出栈时需要修改方法区中的值,这样不符合final得到特性

final修饰局部变量(存在方法区中):final修饰的局部变量可以不赋初始值,但是要想使用这个局部变量,就必须赋值

final修饰的方法:不能被重写,如果你有两个方法,该方法必须被子类重写,那么一定不能定义成final类型

final修饰的类:不能被继承

final的作用:防止变量被二次赋值防止方法重写,防止类被继承,防止指令重排序

4、基本数据类型:

整型:byte(-128~127 8位 1个字节)short int long

浮点型:float double 字符:char boolean

    public static void main(String[] args) {byte c = 10;c = c+1;//会报错 需要强制类型转换 c+=1;//不会报错System.out.println(c);
​}

自动拆装箱:是一个编译器行为 是java编译器做的一个语法糖行为

装箱 valueOf

拆箱:对象.intvalue 对象.longValue()

   Integer a = 1;int c = a.intValue();int intValue = 42;Integer integerValue = Integer.valueOf(intValue); // 将int转换为Integer对象

128陷阱 博客:

5、String类

string不可变 :我们对字符串做出的操作都会产生不同的字符串

string类型没有提供任何修改字符串的方法(防止他的值可以变)

final修饰string类 不能被继承 也就是没法通过重写父类方法的方式 修改值

final修饰了char类型数组(数组也是private修饰的) 保证一旦被赋值之后指向不可变 但是他的值可以变

好处:可以共享数据

提高处理字符串拼接的效率 :stringbuffer线程安全(对类中大部分方法都加了synchronized 锁) stringbuilder单线程下效率高

每一个数组都是java中的一个新创建的类型 比如int[] 数组 他的类型时 int数组类型

冒泡、快排、堆排序、要熟练掌握 Arrays.sort应用

6、抽象类和接口的区别

语义上:

继承抽象类是为了代码复用(提供一种模版)(描述事务本身的(特质)特点和属性)

实现接口更多是为了定义一个规范或者行为准则(接口更多是描述某种行为和能力比如我定义一个飞的接口,那么所有实现这个接口的类都具有飞的能力)

现实使用上区别不大。

java中是单继承多实现的

抽象类可以有普通方法、构造函数 普通域。

接口这些都没有。

7、面向对象编程的特点

封装、继承、多态

如何体现?

封装:把现实世界中的客观事物抽象成一个java类,然后在类中存放属性和方法,比如抽象一个汽车类其中有发动机、车轮等属性,又有启动、前进等方法。

多态:子类继承父类

子类重写父类方法

父类引用指向子类对象

8、程序执行第一步只是给静态变量和静态块赋初始值(0,null等)不会直接将对应的值给他

第二轮才是给对应的值 这个时候如果给静态的对象实例化 从上往下执行(先不管其他对象的实例化)非静态的初始语句初始化块执行

9、类加载的先后顺序

10、Object类所有类的基类

没重写调用的就是Object里面的equals就是==

equals和==区别

基本类型 == 比较值

引用类型 equals比较两个对象的值是否相同

重写equals就要重写hashCode

因为我们重写equals就是为了实现只要两个对象的值相同那么 返回就是true 比如在hashmap里面

如果我们重写了equals方法让他实现值相同就返回true,理论上euqals返回true说明值相同那么他们的hashCode值应该相同,如果不重写它是根据对象的地址生成的hashCode他的值不同,所以我们要重写hashcode保证他时根据对象内容生成的hashcode

基本方法:getClass 、toString、clone、notifyALL 、notify、equals hasCode

11、内部类:

局部内部类、

普通内部类

静态内部类

匿名内部类:匿名内部类不能定义任何静态成员、方法和类,只能创建匿名内部类的一个实例。一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。

public class Test2 {public static void main(String[] args) {Thread a = new Thread(new Test3());a.start();Thread b = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("122223");}});b.start();}
​
}
class Test3 implements Runnable{
​@Overridepublic void run() {System.out.println("123");}
}

new Runnable(){}; 代替了Test3实现Runnable接口的步骤,不用写实现类的类名,直接在小括号后面加大括号里面写实现相应的方法

lamndan表达式:

public class Test2 {public static void main(String[] args) {Thread c = new Thread(()-> System.out.println("123457"),"c");c.start();}
​
}
//,后面的"c" 是起了一个名字有没有都可以

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

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

相关文章

JAVA之(static关键字、final关键字)

JAVA之(static关键字、final关键字) 一、 static关键字1、静态变量2、静态方法3、 静态代码块4、例子 二、final关键字1、final修饰类2、 final修饰方法3、修饰变量 一、 static关键字 1、静态变量 private static String str1“staticProperty”2、静…

SAP 无权限的解决

在进行SAP操作过程中,经常会出现无权限的情况,如客户说没有“ABAAL计划外折旧”权限 但是在查看SU01的时候,已经有角色分配了 解决:1、ABAA之后,SU53查看2、 2、PFCG查找到角色手动添加权限对象S_TCODDE,之后更新&…

JavaScript let 和 const

JavaScript let 和 const 在JavaScript中,let和const是用于声明变量的关键字,它们是在ES6(ECMAScript 2015)引入的,旨在提供更灵活和安全的变量声明方式。在这篇文章中,我们将深入探讨let和const的关键特性…

YOLOv9报错:AttributeError: ‘list‘ object has no attribute ‘view‘

报错信息如下: red_distri, pred_scores torch.cat([xi.view(feats[0].shape[0], self.no, -1) for xi in feats], 2).split( AttributeError: ‘list’ object has no attribute ‘view’ 解决方法: 去yolov9/utils/loss_tal.py把167行代码更改&#…

Trinity:转录组从头组装

安装 #下载安装包 wget -c https://github.com/trinityrnaseq/trinityrnaseq/releases/download/Trinity-v2.15.1/trinityrnaseq-v2.15.1.FULL.tar.gztar -xzvf trinityrnaseq-v2.15.1.FULL.tar.gz cd trinityrnaseq-v2.15.1 make make plugins #安装依赖 mamba install -c bio…

C语言相关内容模块

C语言相关内容模块 1、函数指针定义方式 1、函数指针定义方式 函数指针的具体用法

antdPro的使用

antdPro封装了很多高级组件&#xff0c;很大程度的节约了开发时间 在这记录一下&#xff0c;初次使用&#xff0c;常用的一些属性 <ModalFormtitle"编辑使用记录"open{visible}onFinish{onSave}onOpenChange{onOpenChange}initialValues{updateRecord}width{40%}…

echarts横向立体3D柱状图

实现原理&#xff1a;series中包含两个普通的柱状图bar&#xff0c;其宽度各占一半且设置间距barGap为0&#xff0c;再添加一个象形柱状图pictorialBar&#xff0c;symbol设为菱形diamond&#xff0c;调整其位置大小层级等数据以达到覆盖在柱状图顶部的立体效果。 运行效果&am…

Power BI数据分析可视化实战培训

Power BI课程长度&#xff1a; 3天 Power BI培训方式&#xff1a;上海线下/全国在线互动直播 课程背景&#xff1a; Power BI 数据分析课程为期3天&#xff0c;全面深入地探讨了使用Power BI进行数据建模、可视化和分析的各个方面。课程内容囊括了从数据提取和清洗到高级分析…

代码随想录算法训练营:20/60

非科班学习算法day20 | LeetCode235:二叉搜索树的最近公共祖先 &#xff0c;Leetcode701:二叉树的插入操作 &#xff0c;Leetcode450:删除二叉搜索树的节点 介绍 包含LC的两道题目&#xff0c;还有相应概念的补充。 相关图解和更多版本&#xff1a; 代码随想录 (programmer…

VSCode远程连接Linux服务器

VSCode远程连接Linux服务器 一、下载VSCode二、远程连接Linux服务器2.1 安装插件2.2 连接linux服务器 我用的Linux服务器(腾讯云服务器&#xff0c;如果是虚拟机需要手动去配置ssh)&#xff0c;操作系统是ubuntu 20.04&#xff08;系统如果不一样&#xff0c;可以重装系统&…

【python】线程类列表对比操作

需求&#xff1a; python实现一个线程类&#xff0c;初始化有个字段old_list [1,2,3],有个方法每隔5秒随机生成三个1~10 的数字存放在一个列表new_list 中,old_list与new_list对比&#xff0c;求差异&#xff1b; 代码&#xff1a; import threading import time import ran…

【C++】———— 继承

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;C 创作时间 &#xff1a;2024年7月5日 一、什么是继承&#xff1f; 继承的概念 定义&#xff1a; 继承机制就是面向对象设计中使代码可以复用的重要手段&#xff0c;它允许在程序员保持原有类特性的基础上进行扩展…

JavaSE第10篇:常用类

文章目录 一、Object1、Object使用2、toString3、equals和4、hashCode5、clone6、finalize7、getClass8、wait、notify和notifyAll 二、使用步骤 一、Object 1、Object使用 Object类是所有Java的根父类 如果在类的声明中未使用extends关键字指明其父类&#xff0c;则默认父类…

Hyper-V 性能监控工具

虚拟化是任何组织网络管理战略不可或缺的一部分&#xff0c;对于帮助提高网络效率和资源可用性至关重要。采用虚拟基础架构具有多种好处&#xff0c;例如最大限度地减少停机时间、降低运营成本和提高生产力。 在所有虚拟服务器中&#xff0c;Microsoft Hyper-V因其多功能性和可…

python模块execjs执行js代码报错

python模块execjs执行js代码报错"UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xad in position 125: illegal multibyte sequence" 处理方法&#xff1a;修改subprocess.py 文件中名为__init__函数的编码encoding要将None指定成utf-8

11 个例子讲清spark提交命令参数

目录 提交命名参数详情为什么有这么多参数如何开始学习一些具体的例子1. 基本的Spark应用提交2. 提交带有依赖的Python脚本3. 运行Spark SQL作业4. 提交Spark Streaming作业5. 使用外部包运行Spark作业6. 动态资源分配7. 使用多个配置文件8. GPU 支持9. 自定义日志配置10. 使用…

【EI稳定检索】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)

>>>【独立出版&#xff0c;Ei稳定检索】<<< 第五届大数据、人工智能与软件工程国际研讨会&#xff08;ICBASE 2024&#xff09; 2024年09月20-22日 | 中国温州 一轮截稿时间&#xff1a;2024年7月8日 二轮截稿时间&#xff1a;2024年8月5日 大会简介 *会议…

关于put提交不了参数的解决办法

html中form表单只支持GET与POST请求&#xff0c;而DELETE、PUT等method并不支持&#xff0c; 如图所示 参数请求改成RequestBody&#xff0c;用json格式传参即可解决问题

【鸿蒙学习笔记】页面布局

官方文档&#xff1a;布局概述 常见页面结构图 布局元素的组成 线性布局&#xff08;Row、Column&#xff09; 了解思路即可&#xff0c;更多样例去看官方文档 Entry Component struct PracExample {build() {Column() {Column({ space: 20 }) {Text(space: 20).fontSize(15)…