![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 68
kingdoooom
这个作者很懒,什么都没留下…
展开
-
关于JVM的GC的问答
引言在Java的世界中,很多同学似乎对垃圾回收不会有过多关注,很多入门的同学对GC也不熟悉,但是也能写出不赖的程序或系统。但这并不代表Java的GC就不重要。相反,当系统或程序出现问题的时候,我们可能更依赖GC日志来对问题进行定位。虽然Java语言JVM实现对于GC的自我管理,但在Java面试中,GC的问题出现的频率非常高,有时候,偷懒的面试官只是无脑地抛出“你能说说你对GC的理解吗?”这种笼统但让你一时间不知道从哪说起的干巴巴的问题,这个时候需要静下心来思考和梳理一下该如何回答关于GC诸多方面,本原创 2020-12-29 20:54:14 · 205 阅读 · 2 评论 -
Java中hashcode()方法和equals()方法的问答
前言在课间的时候,和几个同学一起聊起了hashcode()方法和equals()方法,对于这两个方法的理解,大部分人首先想到的还是“重写equals方法必须重写hashcode方法”,“String类中已经重写equals方法,用来比较字符串的内容是否相等”这几个高频点,但是如果是在面试的场景下问你两者的联系或区别,一时间很多人可能不能很好地组织出来,基本上都是想到一句说一句,抓不住重点,没有逻辑。基于这点,我在本文记录一下。首先抛开问题本身,如果别人问你XX和YY的关系或者区别,我们回答的思路首先原创 2020-12-25 11:37:18 · 133 阅读 · 0 评论 -
Java中的装箱和拆箱
前言自动装箱和拆箱问题是java面试中基础题中出现频率很高,好记性不如烂笔头,把之前遇到的相关问题和概念做一下记录包装类Java中包含8种基本数据类型,并且在java5之后,为每种基本数据类型都提供了对应的包装器类型。基本数据类型包装类boolBooleanbyteBooleancharCharactershortShortintIntegrefloatFloatdoubleDoublelongLong思考:1、为原创 2020-05-20 10:11:18 · 538 阅读 · 0 评论 -
Java的四种引用:强引用、软应用、弱引用、虚引用
前戏在JDK远古时期的版本中,java对象的似乎就只有两种状态,即被引用和不被引用。也就是说程序中,如果一个对象不被任何其他对象或变量引用,那么JVM就判定这个对象无法被使用,JVM直接对对象内存进行回收。但是,这两种极端状态并不能覆盖所有的对象,随着程序的运行,程序对某个对象的引用强度可能在不断地变化,比如一个对象可能会出现以下情况,一个对象表面表面上看起来处于不被引用的状态,它占据一定的内存空间,但是JVM马上对它进行回收又不太划算,或许在后面的场景下还可以用得上。对于这样的可有可无的对象,原创 2020-05-14 21:46:12 · 269 阅读 · 0 评论 -
Java抽象类与接口
引言在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。首先来说一下抽象类和接口的相关概念,然后再对两者进行比较。抽象类在描述抽象类之前,我们先来说说抽象方法,Java中的抽象方法是指使用abstract关键字修饰的方法,并且抽象方法只有方法声明,没有实现细节。可以看看抽象方法的语法:abstract void method();那么如果一个...原创 2018-07-15 17:41:56 · 282 阅读 · 0 评论 -
Java中的反射
在Java框架的学习中,我们会接触到反射,例如接触非常多的spring框架,它的IOC原理就是运用了反射的机制以及动态代理的思想,使得对象的创建并不需要自己完成,而是交给spring容器来完成。还有JDBC中加载数据库的驱动时,也必然使用到反射等等。可以说,反射机制是我们在框架设计和学习中非常重要的一个机制和思想。什么是反射反射机制就是程序在运行时,对于任意一个类,都能知道这个类的所有属性和方法;...原创 2018-05-24 10:14:04 · 204 阅读 · 0 评论 -
Java面向对象的三大特征以及理解
Java面向对象的三大特征为:封装、继承和多态,本文说说我对三大特性的理解。1.封装Java中的封装是指一个类把自己内部的实现细节进行隐藏,只暴露对外的接口(setter和getter方法)。封装又分为属性的封装和方法的封装。把属性定义为私有的,它们通过setter和getter方法来对属性的值进行设定和获取。下面我举一个简单的封装例子public class Person { priva...原创 2018-05-26 16:01:36 · 26280 阅读 · 5 评论 -
Java中hashcode()和equals()方法
前言在说hashcode()和equals()方法之前,我想先来说说Java中==与equals()方法的问题,==可用于比较基本数据类型(比较的是它们的数值是否相等),也可以用于比较对象在内存中的地址是否相等。Java当中所有的类都继承与Object这个基类的,在Object中的基类中定义了一个equals()方法,这个方法的初始行为是比较对象的内存地址的(即判断两个对象是否为同一个对象),但是...原创 2018-05-15 15:24:11 · 208 阅读 · 0 评论 -
Java中的序列化和反序列化
摘要在Java中,当你创建对象时,只要你需要,对象就会一直存在。但是当程序运行结束时,对象就会随之消失。在有些情况下,我们希望对象能够在程序不运行的情况下仍然存在并保存其信息。这样,在下次运行程序时,该对象可以被重建并且拥有的信息与程序上次运行时所拥有的信息一致。当然,我们也可以通过把信息写入文件或者数据库来达到效果,但是在使万物都成为对象的精神当中,如果能够将一个对象处理成为“持久性”的,并为我...原创 2018-05-14 21:09:00 · 147 阅读 · 0 评论 -
Java程序初始化的顺序
Java程序中,当实例化对象时,对象所在类的所有成员变量首先要进行初始化,当所有成员完成初始化后,才会调用对象所在类的构造函数创建对象。Java程序的初始化一般遵循3个原则(优先级依次递减):(1)静态对象(变量)优于非静态对象(变量)的初始化,其中,静态对象(变量)只初始化一次,非静态对象(变量)可能会初始化多次。(2)父类优先于子类进行初始化。(3)按照成员变量的定义顺序进行初始化。即使变量定...原创 2018-05-14 10:00:50 · 129 阅读 · 0 评论 -
关于Java数据基本数据类型转换的一些问题
本文总结一下Java基本数据类型在使用过程中需要注意的一些问题1.对于小于int型的数据类型(byte char short)进行运算时,首先会把这些类型的变量值强制转为int型,对int类型的值进行运算,最后得到的值也是int类型的。因此如果把两个short类型的值进行运算,最后得到的结果也是int类型的。如果要得到short类型的结果,就必须显示地把运算结果转为short类型。例入:short...原创 2018-05-13 16:29:00 · 285 阅读 · 0 评论 -
java数据类型及其包装类中的一些事
摘要在Java基础中,数据类型及其对应的包装类是我们必学的内容,但是大部分学习者对其中的一些地方还是处在模棱两可的理解,本文我将针对这部分内容需要注意的地方做一些总结相关问题1.Java中的基本数据类型占几个字节在Java中,byte,boolean占1个字节,对应的包装类型分别为Byte Booleanchar short占2个字节,对应的包装类型分别为Character Shortint fl...原创 2018-05-13 10:07:01 · 353 阅读 · 0 评论 -
String StringBuffer StringBuilder的区别
String StringBuffer StringBuilder三者是Java中对于字符串处理用得最多的三个类,本文来说说三者之间的关系与区别1.三个类中的关系在查看JDK源码之前,大家可能根据三者的名称,都认为StringBuffer和StringBuilder都继承自String这个类,即认为String类是其他两个类的超类。但是我们知道String类是使用final关键字修饰的(Java中...原创 2018-05-17 16:15:45 · 185 阅读 · 0 评论 -
String类型需要注意的几个问题
String类型属于不可变类型(不可变类型是指该类型创建了一个实例后,就不允许修改该实例的值),在学习和使用的时候需要注意一下几个问题1.new String("abc");执行这个操作后,整个程序中有几个"abc"对象?解析:这个操作创建了1个或者2个对象,如果常量池中原来有"abc"(也就是说在执行此操作之前已经创建了一个字符串"abc",已经把它存到常量池中,再次创建会自动从常量池中取出,而...原创 2018-05-09 20:31:00 · 321 阅读 · 0 评论