【八股】java基础
白速龙王的回眸
一命二运三风水
四积功德五读书
六名七相八敬神
九交贵人十养生
展开
-
【java基础】
【hashMap和hashtable有什么区别】hashmap是hashtable的轻量级实现,hashmap允许key和value为null,但最多允许一条记录的key是null,而hashtable不允许hashtable中的方法是线程安全的,hashmap不是,在多线程访问hashmap需要提供额外的同步机制hashtable使用enumeration进行遍历,hashmao使用iterator进行遍历【如何决定是hashmap还是treemap】如果对map进行插入、删除或定位一个元素的操原创 2022-03-23 22:34:37 · 444 阅读 · 0 评论 -
【java基础】TreeMap,Collection,Collections,List相关
【简述java的TreeMap】TreeMap是底层利用RBT实现的map结构,底层是一颗AVLBST,由于RBT的插入删除遍历复杂度都是O(logN),所以性能低于hashTable。但是哈希表无法提供kv对的有序输出,RBT可以按照key的大小有序输出【Collection和Collections的区别】Collection:是个集合接口,它提供了集合对象进行基本操作的通用接口方法,所有集合都是它的子类,List和Set等Collections:是一个包装类,包含了很多静态方法、不能被实例化,而原创 2022-03-22 14:04:41 · 1093 阅读 · 0 评论 -
【java基础】
【简述java的set】set即集合,不允许元素重复且无序,有三种实现方式HashSet通过HashMap实现,HashMap的Key就是HashSet存储的元素。Value系统自定义一个名为PRESENT的Object类型常量,判断元素是否相同时,比较hashCode和equals,查询o1LinkHashSet继承HashSet,通过LinkedHashMap实现,使用双向链表维护元素插入顺序TreeSet通过TreeMap实现,底层RBT,添加元素到集合时按照比较规则插入合适的位置,保证仍然有原创 2022-03-21 15:35:43 · 596 阅读 · 0 评论 -
【java基础】
【拆箱装箱原理】装箱过程是通过调用包装器的valueOf方法实现的,将原值赋给对应类拆箱过程是通过调用包装器的intValue/doubleValue等方法实现的,返回基本的数据类型【java反射原理】java会在编译期装载所有的类,并将其元信息保存至Class类对象中因此可以设计x.class/x.getClass()/Class.forName()方法获取Class对象。所以在反射调用Field/Method/Contructor对象时,可根据Class类对象进一步操作【comparato原创 2022-03-20 15:52:42 · 304 阅读 · 2 评论 -
【java基础】最后三个
【动态代理实现方式】1.利用jdk反射机制,实现代理接口2.利用CGlib,对指定类生成子类,进行代理【简述oom】out of memory当jvm分配内存不够会抛出oom异常【简述StackOverFlowError】调用栈深度超过限制产生的异常一般再递归调用时出现...原创 2022-03-18 23:28:02 · 195 阅读 · 0 评论 -
【java基础】
【简述java序列化和反序列化的实现】序列化:将java对象转换成字节序列,由此可以通过网络对象进行传输反序列化:将字节序列转化成java对象具体实现:实现Serializable接口,或实现Externalizable接口中的writeExternal()和readExternal()方法【简述java的list】list是一个有序队列,两种实现方式:ArrayList:用数组实现,是容量可变的非线程安全列表,随机访问快,集合扩容时会创建更大的数组,把原有数组复制到新数组LinkedList原创 2022-03-17 14:05:02 · 951 阅读 · 0 评论 -
【java基础】
【简述object类常用方法】1.hashCode:通过对象计算出的散列码。用于map型或equals方法,需要保证同一个对象多次调用该方法,总返回相同的整型值2.equals:判断两个对象是否一致,需要保证equals相同hashCode也相同3.toString:用字符串表示该对象4.clone:深拷贝一个对象【简述内部类及其作用】1.成员内部类:作为成员对象的内部类,可以访问private及以上外部类的属性和方法,外部类想要访问内部类属性或方法时,必须要创建一个内部类对象,然后通过该对象访原创 2022-03-16 14:44:25 · 120 阅读 · 0 评论 -
【java基础】
【简述java的多态】java多态可以分为编译时多态和运行时多态编译时多态主要指方法的重载,即通过参数列表的不同来区分不同的方法运行时多态主要是指继承父类和实现接口时,可使用父类引用指向子类对象运行时多态的实现:主要依靠方法表,方法表最先存放的是object类的方法,接下来是该类的父类方法,最后是该类本身的方法。如果子类改写了父类的方法,那么子类和父类的那些同名方法共享一个方法表项,都被认作是父类的方法,因此可以实现运行时多态【简单抽象类和接口的区别】抽象类:体现的是is a关系,如对于man原创 2022-03-15 13:29:24 · 388 阅读 · 0 评论 -
【java基础】
【简述java基本数据类型】byte:占用1个字节,-128 ~ 127short:2个字节,-2^15 ~ 2 ^ 15 - 1int: 4 bytes, -2^31 ~ 2 ^ 31 - `long: 8 bytesfloat: 4 bytesdouble: 8 byteschar: 2 bytesboolean:占用大小根据实现jvm不同有差异【简述自动装箱拆箱】对于java基本数据类型,均对应一个包装类装箱:自动将基本数据类型转换为包装器类型,int -》Integer拆原创 2022-03-14 11:10:11 · 704 阅读 · 2 评论 -
【java基础】
【简述throw和throws的区别】throw一般用在方法体的内部,由开发者定义当程序语句出现问题后主动抛出一个异常throws一般用在方法申明上,代表该方法可能会抛出的异常列表【简述泛型】泛型,就是“参数化类型”,解决不确定对象具体类型的问题。在编译阶段有效,在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型在类中称为泛型类,接口中称为泛型接口和方法中称为泛型方法【简述泛型擦除】java编译器生成的字节码不包含泛型信息,泛型类型信息将在编译处理被擦出,这个过程称为泛型擦除..原创 2022-03-13 16:47:29 · 350 阅读 · 0 评论 -
【java基础】
【简述注解】java注解用于为java代码提供元数据。作为元数据,注解不直接影响代码的执行。但也有一些类型的注解实际上可以用于这一目的,其可以用于提供信息给编译器,在编译阶段给软件提供信息进行相关的处理,在运行时处理写相应代码,做对应操作。【简述元注解】元注解可以理解为注解的注解,在注解中使用,实现想要的功能,具体分为:@Retention 表示注解存在阶段是保留在源码,还是在字节码(类加载)或者运行期(jvm运行)@Target:表示注解作用的范围@Documente:将注解中的元素包含到ja原创 2022-03-12 17:13:44 · 143 阅读 · 0 评论 -
【java基础】
【序列化是什么】序列化是一种将对象转成字节序列的过程,用于解决在对对象流进行读写操作时引发的问题。序列化可以将对象的状态写在流里进行网络传输,或者保存到文件,数据库等系统,并在需要的时候把该流读取出来重新构造成一个相同的对象【简述java中class对象】java中对象可以分为实例对象和class对象,每一个类都有一个class对象,其包含了与该类有关信息获取class对象的方法:1.Class.forName(‘类的全限定名’)2.实例对象.getClass()3.类名.class【jav原创 2022-03-11 22:54:38 · 229 阅读 · 0 评论 -
【java基础】
【String和StringBuffer有什么区别】String用于字符串操作,属于不可变类。String对象一旦被创造,其值将不能被改变StringBuffer可变类,当对象创建后,可以对其值进行修改【==和equals的区别】双等于是比较引用,equals比较的是内容1.如果变量是基础数据类型,双等于用于比较其对应值是否相等,如果变量指向对象,双等于用于比较两个对象是否指向同一个存储空间2.equals是Objects类提供的方法之一,每个java都继承obj类,所以每个对象都有equals原创 2022-03-10 14:05:44 · 107 阅读 · 0 评论 -
【java基础】
【static的作用】主要有两个1:为某种特定数据类型或对象分配与对象个数无关的单一存储空间2:使用某个方法或属性与类而不是对象关联在一起,即在不创建对象的情况可以通过类直接调用方法或属性4中使用:1.修饰成员变量。在内存只有一个副本,只要静态变量所在类被加载,就会分配空间,类.静态变量or对象.静态变量2.修饰成员方法。无需创建对象就可以调用。static中不能使用this和super,也不能调用非static方法,只能访问static变量和方法3.修饰代码块,jvm在加载类的时候会执行一次原创 2022-03-09 17:11:03 · 126 阅读 · 0 评论 -
【java基础】
【重载和覆盖的区别】1.覆盖是父类和子类之间的关系,是垂直关系;重载是同一类中方法之间的关系,是水平关系2.覆盖只能由一个方法或一对方法产生关系;重载是多个方法之间的关系3.覆盖要求参数列表相同;重载要求参数列表不同4.覆盖中,调用方法体根据对象的类型决定;重载根据调用时实参表与形参表来对应选择5.重载方法可以改变返回值的类型,覆盖方法不能改变返回值的类型【final、finally和finalize的区别】1.final用于申明属性、方法和类,分别表示属性不可变、方法不可覆盖、类不可继承2原创 2022-03-08 13:21:26 · 218 阅读 · 0 评论 -
【java基础】
【接口和抽象类的相同点和区别?】相同点:1.都不能被实例化2.接口的实现类或抽象类的子类需要实现接口或抽象类中的相应方法才可以实例化不同点:1.接口只可以定义方法,不能有方法的实现;而抽象类可以有方法的定义和实现2.实现接口的关键字是implements,继承抽象类的关键字是extends, 一个类可以实现多个接口,只能继承一个抽象类3.当子类和父类之间存在逻辑上的层次结构,推荐使用抽象类,有利于功能的累积。当功能不需要,希望支持差别较大的两个或多个对象的特定交互行为,推荐使用接口使用接口原创 2022-03-07 13:42:10 · 4217 阅读 · 0 评论 -
【java基础面试题】
【jdk和jre有什么区别】jdk:java开发工具包,提供java开发环境和运行环境 java development kitjre:java运行环境,提供java运行所需地环境 java runtime environmentjdk包含jre。如果只运行java程序,安装jre即可。若要编写java程序,则要安装jdk【简述java访问修饰符】default:默认访问修饰符,同一包可见private:在同一类内可见,不能修饰类public:所有类可见protected:对同一包内的类和所原创 2022-03-06 22:17:10 · 165 阅读 · 0 评论 -
【java基础】java特点、面向对象特点、字节序定义
【java语言特点】1.java是纯面向对象的语言,它能够直接反映现实生活中的对象2.具有平台无关性。java利用jvm运行的字节码,无论是win linux mac等平台对java编译,编译后的程序都可以在其他平台运行3.java为解释性语言,编译器把java代码编译成平台无关的中间代码,然后在jvm上解释运行,具有很好的可移植性4.java提供了很多内置类库,如多线程支持,网络通信支持,最重要的是提供了垃圾回收器5.java具有较好的安全性和健壮性,提供了异常处理和垃圾回收机制,去除了cpp中原创 2022-03-04 20:20:13 · 165 阅读 · 0 评论