面向对象和面向过程的区别
面向过程:

步骤分析:将问题分解为一系列步骤。
函数实现:用函数逐步实现这些步骤。
调用执行:在需要时调用这些函数。
高性能:适合对性能要求高的场合,如单片机和嵌入式开发。
面向对象:

对象分解:将问题分解为多个对象。
行为描述:对象描述事物在问题解决过程中的行为。
特性:封装、继承、多态。
优点:易于维护、复用和扩展,可构建低耦合系统。
性能:相对面向过程,性能较低。
标识符的命名规则
标识符:

定义:程序中自定义的元素,如类名、方法名、变量名等。
命名规则(硬性要求):
组成:可包含字母、数字、$、_。
限制:不能以数字开头。
避免:不得使用关键字。
命名规范(非硬性要求):

类名:首字母大写,后续每个单词首字母大写(大驼峰式)。
变量名:首字母小写,后续每个单词首字母大写(小驼峰式)。
方法名:与变量名规范相同。
自动装箱与拆箱
装箱:
定义:将基本数据类型自动转换为对应的包装器类型。
示例:int 转换为 Integer。
方法:通过 Integer.valueOf(int) 实现。
拆箱:
定义:将包装器类型自动转换回对应的基本数据类型。
示例:Integer 转换为 int。
方法:通过 Integer.intValue() 实现。
Java SE5之前的装箱:
需要显式使用 new 关键字创建包装器类型实例。
示例:Integer i = new Integer(10);
Java SE5及之后的装箱:
提供了自动装箱特性,简化了包装器类型的创建。
示例:Integer i = 10;(自动调用 Integer.valueOf(int))
重载和重写的区别
重写(Override):

父子类关系:仅在子类与父类之间发生。
方法签名一致:方法名、参数列表、返回类型(除子类方法返回类型是父类返回类型的子类外)必须与被重写的方法相同。
访问权限:子类方法的访问修饰符不能比父类方法的更严格。
异常限制:重写的方法不能抛出新的或更广泛的检查型异常。
重载(Overload):

多态性表现:是类中多态性的一种体现。
参数列表差异:要求同名方法的参数列表必须不同(可以是参数类型、个数或顺序)。
返回类型:对返回值类型没有限制,可以相同也可以不同,重载的判断依据是参数列表而非返回类型。
equals与==的区别
== 操作符:

地址比较:比较两个对象在内存中的地址是否相同。
对象引用:判断两个引用是否指向同一个对象。
类型要求:操作数必须类型相同或存在继承关系。
数值比较:对于基本数据类型,如果值相等则比较结果为 true。
指针操作:本质上是比较指针地址。
equals 方法:

内容比较:比较两个对象的内容是否相等。
继承自 Object:所有类都继承自 java.lang.Object 类,适用于所有对象。
默认行为:如果没有重写 equals 方法,它的行为与 == 相同。
空指针安全:使用 equals 比较时,可以避免 NullPointerException。
最佳实践:在比较对象时推荐使用 equals 方法,尤其是在阿里代码规范中。
总结:

在比较对象是否相等时,应使用 equals 方法。
在比较常量时,将常量写在前面,以避免可能的 NullPointerException。
推荐使用阿里代码规范,并使用阿里插件来检查和替换不合适的 == 使用。
Hashcode的作用
Java集合分为List和Set:

List:有序,允许重复。
Set:无序,不允许重复。
Set判断元素存在性:

使用equals方法,但在大量元素时效率低。
哈希算法提升效率:
将集合划分为多个存储区域。
每个对象通过hashCode方法计算哈希码,确定存储区域。
hashCode方法:

根据对象的内存地址计算出一个值。
集合添加新元素时,先通过hashCode方法定位存储位置。
如果位置无元素,直接存储;如果位置有元素,使用equals方法比较。
相同则不存储,不同则寻找其他位置。
减少equals方法调用次数,提高性能。
String、StringBuffer和StringBuilder的区别
String 类要点:

不是基本数据类型,而是一个对象。
底层是 final 类型的字符数组。
字符串内容不可变,任何修改都会生成新的 String 对象。
字段定义:private final char value[];
字符串连接操作:

使用 + 操作符时,会隐式创建 StringBuilder 对象并调用 append 方法进行拼接。
StringBuilder 和 StringBuffer 要点:

两者都继承自 AbstractStringBuilder 抽象类。
底层都是可变字符数组:char[] value;
适用于频繁的字符串操作。
线程安全:

StringBuffer 是线程安全的,方法加了同步锁。
StringBuilder 非线程安全,没有加同步锁。

挑战Java面试题复习第1天,坚持就是胜利的更多相关文章

  1. Java面试题复习笔记(数据库)

    1.数据库分类? 关系型数据库和非关系型. 常用关系型:Myspl.Oracle.SQLServer 非关系型:Redis.Hadoop.Memcache.Mogobd 2.关系数据库三范式? 范式就 ...

  2. Java面试题复习笔记(Web方向)

    1.Http中get和post请求的区别? 共同点:都是Http请求方式,用户可以通过不同的请求方式完成对资源(Url)的操作.具体来讲就是get一般用于获取/查询资源信息,post用于更新资源信息. ...

  3. java面试题复习(八)

    71.如何通过反射创建对象? 方法1:通过类对象调用newInstance()方法,例如:String.class.newInstance()  方法2:通过类对象的getConstructor()或 ...

  4. java面试题复习(七)

    61.jdbc的操作步骤 加载驱动:Class.forName("oracle.jdbc.driver.OracleDriver"); 创建连接:Connection con =D ...

  5. java面试题复习(六)

    51.实现多线程的方法 一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如 ...

  6. java面试题复习(五)

    41.阐述final.finally.finalize的区别 final:修饰符(关键字)有三种用法:如果一个类被声明为final,意味着它不能再派生出新的子类,即不能被继承,因此它和abstract ...

  7. java面试题复习(四)

    31.内部类可以引用它的外部类的私有成员吗? 可以,内部类对象可以访问创建它的外部类对象的成员 32.final关键字有哪些用法? 修饰类时该类不能被继承,修饰方法时,该方法不能被重写,修饰变量时表示 ...

  8. java面试题复习(三)

    21.静态嵌套类和内部类的不同? 答:静态嵌套类是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化.而通常的内部类需要在外部类实例化后才能实例化.//还是考的static的知识 ...

  9. java面试题复习(二)

    //我又回来了 11.数组有没有length()方法?String有没有length()方法? 数组只有length属性,String有length()方法.注意:JavaScript获取字符串长度使 ...

  10. java面试题复习(一)

    //基础最重要,如果面试官问一个答不上一个,那有难度的都都不用问了,直接就pass了,就像我,嘿嘿. //每天最好熟记10个问题,这些问题在编程是会很厚帮助,帮你避免很多不应该出现的错误. 一.面向对 ...

随机推荐

  1. [COCI 2023/2024 #3] Slučajna Cesta 题解

    前言 期望套期望,很有意思.来一发考场首 A,近 \(\Theta(n)\) 的算法. 题目链接:洛谷. 题意简述 一棵树,每条边随机设有方向.对于所有 \(i\),从 \(i\) 开始随机游走,直到 ...

  2. SMU Summer 2024 Contest Round 2

    SMU Summer 2024 Contest Round 2 Sierpinski carpet 题意 给一个整数 n ,输出对应的 \(3^n\times 3^n\) 的矩阵. 思路 \(n = ...

  3. 牛客周赛 Round 5

    牛客周赛 Round 5 A-游游的字母变换_牛客周赛 Round 5 (nowcoder.com) #include <bits/stdc++.h> #define int long l ...

  4. 学习SSD—day1_20240814

    1.SSD的基本概念以及结构 SSD是一种以半导体(半导体闪存)作为存储介质吗,使用纯电子电路实现的存储设备. SSD硬件包括几大组成部分:主控.闪存.缓存芯片DRAM(可选,有些SSD上可能只有SR ...

  5. manim 中的三维视角

    今天研究了一下 manim 中的 ThreeDAxes 和 set_camera_orientation 这里记录一下视角. manim 中的 3D 坐标系是笛卡尔的三维坐标系,属于右手坐标系,即右手 ...

  6. .NET 9发布的最后一个预览版Preview 7, 下个月发布RC

    微软在2024年8月9日 发布了.NET 9 Preview 7[1],这是它在2024 年 11 月 12 日 RTM 之前进入发布候选阶段之前的最后预览版, 将在.NET Conf 2024 一起 ...

  7. 【团队建设】如何做好团队开发中的 CodeReview(代码评审)?

    目录 前言 一.为什么要做 二.有哪些好处 三.具体怎么做 3.1评审条件 3.2评审重点 3.3评审形式 四.还可以怎么做 4.1提出亮点 4.2轮流评审 4.2文档沉淀 五.文章小结 前言 你是否 ...

  8. Windows 7远程桌面连接Ubuntu 18.04

    从Windows 7远程到Windows系统比较简单,只要对方电脑开启远程桌面功能就可以了,但Windows 7远程桌面连接到Ubuntu 16.04比较复杂一点,具体操作步骤如下. 1 安装xrdp ...

  9. 题解:SP22382 ETFD - Euler Totient Function Depth

    题目链接: link,点击这里喵. 前置知识: [模板]线性筛素数,欧拉函数,点击这里喵. 题意简述: 给定整数 $l,r,k$,求出 $[l,r]$ 中有多少个整数不断对自己取欧拉函数刚好 $k$ ...

  10. SpringBoot多环境日志配置

    SpringBoot多环境日志配置 SpringBoot 默认使用 LogBack 日志系统 默认情况下,SpringBoot项目的日志只会在控制台输入. 如果想查询历史日志则无法找到,我们需要一个日 ...