📄🦌🙌🐟🏖️
乘与零-cenyuio
让生活变的更有趣~
热门文章
按住 Shift 横向滚动
Java面试-15:String、StringBuffer、StringBuilder 的区别?

Java面试-15:String、StringBuffer、StringBuilder 的区别?

本文简要介绍了Java中的三种字符串处理类:String、StringBuilder和StringBuffer。String是不可变的字符串,线程安全,但每次修改时都会创建一个新的String对象,效率较低。StringBuilder是可变的字符串,非线程安全,但效率最高,适合在单线程环境中进行频繁的字符串操作。StringBuffer同样是可变的字符串,但线程安全,效率中等,适合在多线程环境中使用。三者在性能和线程安全性上各有特点,开发者可根据具体需求选择合适的类来处理字符串。

Java面试-14:==与equals()的区别

Java面试-14:==与equals()的区别

本文详细解析了Java中的`==`运算符和`equals()`方法的核心区别与底层原理。`==`运算符用于比较基本数据类型的数值或引用数据类型的内存地址;而`equals()`方法是`Object`类中的方法,默认比较对象的内存地址,但可以通过重写来比较对象的内容。文章通过代码示例展示了如何正确使用这两种比较方式,并强调了在重写`equals()`方法时同时重写`hashCode()`的重要性,以避免空指针异常并确保集合类的一致性。总结指出,`==`用于比较数值或地址,`equals()`则用于比较对象内容,开发中应根据需求选择合适的比较方式。

Java面试-13:接口和抽象类有什么共同点和区别?

Java面试-13:接口和抽象类有什么共同点和区别?

抽象类和接口都不能直接实例化,且都可以包含抽象方法,属于抽象层设计,用于定义规范和模板。它们的主要区别在于:抽象类支持单继承,可以定义普通变量和构造方法,目的是作为模板设计;而接口支持多实现,只能定义常量,没有构造方法,目的是规范设计。总结来说,抽象类适合代码复用,接口适合定义规范和扩展能力。

Java面试-12:面向对象的三大特性?

Java面试-12:面向对象的三大特性?

文章主要介绍了面向对象编程中的三个核心概念:封装、继承和多态。 1. **封装**:指将对象的内部状态信息隐藏在对象内部,不允许外部直接访问,但可以通过提供的方法来操作这些属性。封装可以保护对象的内部状态,同时也提供了对外交互的接口。 2. **继承**:用于在已存在的类的基础上创建新类,新类可以继承父类的属性和方法,并在此基础上扩展新的功能。继承提高了代码的重用性和可维护性,子类可以拥有父类的所有属性和方法,但无法访问父类的私有属性和方法。 3. **多态**:表示一个对象具有多种状态,具体表现为父类的引用可以指向子类的实例。多态的特点包括:对象类型和引用类型之间有继承或实现关系;方法调用的具体实现需要在运行时确定;多态不能调用子类特有的方法;如果子类重写了父类的方法,调用时会执行子类的方法。 这些概念共同构成了面向对象编程的基础,帮助开发者提高代码的模块化、重用性和可维护性。

Java面试-11:面向对象和面向过程的区别?

Java面试-11:面向对象和面向过程的区别?

面向过程编程(POP)和面向对象编程(OOP)是两种常见的编程范式,它们的主要区别在于解决问题的方式。POP通过拆分问题为一个个方法来执行,而OOP则先抽象出对象,再通过对象执行方法来解决问题。OOP相较于POP具有易维护、易复用和易扩展的优点,主要得益于其良好的结构、封装性、继承和多态特性。POP编程方式更简单直接,适合处理简单任务。需要注意的是,性能差异不仅取决于编程范式本身,还与运行机制相关,因此简单比较两者性能是一种误区。

Java面试-10:重载和重写的区别

Java面试-10:重载和重写的区别

文章主要介绍了编程中的两个重要概念:重载和重写。重载指的是同一个方法可以根据输入数据的不同,执行不同的处理逻辑。这意味着方法名相同,但参数类型或数量可以不同,从而实现不同的功能。重写则是指子类在继承父类的方法时,如果需要对相同输入数据做出不同于父类的响应,就需要覆盖父类的方法。通过重写,子类可以定制化父类的方法,以满足特定需求。这两个概念在面向对象编程中非常重要,帮助开发者实现代码的复用和灵活性。

Java面试-9:什么是Bcrypt 加盐加密?

Java面试-9:什么是Bcrypt 加盐加密?

bcrypt是一种专门用于密码加密的算法,通过“加盐”机制增强密码的安全性。所谓“加盐”,即在用户密码中加入一段随机生成的字符串,再进行加密,从而确保即使相同的密码也能生成完全不同的密文,防止被批量破解。不加盐的密码加密存在严重漏洞,相同密码会生成相同的密文,容易被对比破解。加盐后,每个用户拥有唯一的随机盐,使得相同密码的密文完全不同,极大提高了密码的安全性。

Java面试-8:静态方法和实例方法的区别

Java面试-8:静态方法和实例方法的区别

文章主要讨论了静态方法和实例方法的调用方式及访问类成员的限制。静态方法可以通过`类名.方法名`或`对象.方法名`的方式调用,但推荐使用`类名.方法名`,因为静态方法属于类而非对象,使用对象调用容易造成混淆。实例方法只能通过`对象.方法名`调用。此外,静态方法只能访问静态成员(静态变量和静态方法),不能访问实例成员(实例变量和实例方法),而实例方法则没有这种限制。

Java面试-7:成员变量与局部变量的区别?

Java面试-7:成员变量与局部变量的区别?

本文详细对比了成员变量和局部变量的核心区别。成员变量定义在类中、方法外,属于类或对象,存储在堆内存,随对象创建而存在,默认有初始值,可使用访问修饰符。局部变量定义在方法内、方法参数或代码块内,存储在栈内存,随方法或代码块执行而创建,执行结束即销毁,无默认值,仅能使用final修饰符。文章通过代码示例直观展示了两者在定义、内存存储、生命周期和修饰符方面的差异,帮助读者更好地理解它们的区别。

Java面试-6:基本数据类型

Java面试-6:基本数据类型

Java的基本数据类型分为数值型和非数值型两大类,共8种。数值型包括字节型(byte)、短整型(short)、整型(int)、长整型(long)、单精度浮点(float)和双精度浮点(double),用于存储数字;非数值型包括布尔型(boolean)和字符型(char),分别用于存储布尔值和单个字符。每种类型有不同的占用字节、取值范围和默认值,适用于不同的场景。例如,int是最常用的整型,double是最常用的小数类型,char支持Unicode编码,可存储中文字符。使用时需注意long和float的声明后缀(L和f),以及boolean只能取true/false,不能用0/1替代。基本数据类型直接存储值,速度快,是Java编程的基础。