栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java核心知识点

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java核心知识点

目录

String

关键字

面向对象的3大特性

面向对象的5大基本原则

为什么要类中加一个无参构造方法


String

1 string为什么是不变的?

因为:string的内部使用char数组存储数据,同时被声明为了final

2 string为什么要设计成不可变的呢?

第一点:string类型作为hashmap键值对中的key的时候,因为其不变性,可以帮助其hash值不变

第二点:string在建立对象后,会将值保存在字符串常量池中,下次再次创建一个相同的值的string的时候,直接退回该值的引用。优化了常量池。

第三点:string的不可变性使得他具备线程安全性。

3 什么是字符串常量池

字符串常量池位于堆内存中,jvm为了提高性能和减少内存开销,在一个新的字符串常量建立时,首先会检查字符串常量池,如果字符串已经存在,则退回该字符串的引用;如果字符串不存在,则将其实例化,并且保存在池中。

4 string,stringbuilder,stingbuffer之间的区别。

SringStringBuilderStringBuffer
可变性不可变可变可变
安全性安全不安全安全
性能较高

关键字

1 final

作用于类,该类不能被继承

作用于方法,该方法不能被重写

作用于变量,该变量的值不能被修改

2 static

可以标记静态方法,静态方法可以在没有实例化对象的情况下,通过类名调用。

可以标记静态变量,也就是类变量,类变量被所有所有的对象共享。

可以标记静态代码块,它只会在类加载的时候加载一次。

3 this和super的区别

相同点:

都表示对象,super()和this()都必须在构造方法的第一行使用,并且不能在static环境下使用。

不同点:

一个表示父类,一个表示当前类,super()在子类中使用,this()在同一类中使用。

4 contiue,break,return的区别

contiue 结束当前循环,进入下一循环;

break结束当前循环体;

return 结束方面,同时退回一个类型的值;

面向对象的3大特性

封装:隐藏对象的属性和实现细节,仅对外暴露接口

继承:子类继承父类的特征和行为

多态:一个行为具有多个不同的形式或形态的能力,实现多态的3个必要条件继承,重写,向上转型(子类的引用赋给父类对象)

面向对象的5大基本原则

1 第一职责原则:一个类最好只做一件事,只有一个能引起他的变化

2 开放封闭原则:对扩张开发对修改封闭

3 里式替换原则:子类必须能够替换基类        

4 依赖倒置原则:抽象不依赖于具体,具体依赖于抽象

5 接口隔离原则:使用多个小的接口,不使用一个大的总接口

为什么要类中加一个无参构造方法

因为子类的构造方法,一定会调用父类的构造方法。在没使用super的情况下,子类会默认调用父类的无构造方法,如果父类没有无参构造方法,则会报错。

为什么重写了equals方法后,hashcode也要重写

两个对象相等,code值一定相等;code值相等,两个对象不一样相等;

因为在哈希表中,先比较的hashcode方法得到hash值,然后才使用equals进行值的比较。不重写hashcode方法会导致两个相同的对象,hash值不同。总结如下:

第一:不重写hashcode方法会影响Hashmap等集合的功能,降低集合效率。

第二:可以提高集合的效率。

bio,nio,aio的区别

bio:服务器实现模式为一个连接一个线程;

nio:服务器实现模式为一个请求一个线程;

aio:服务器实现模式为一个有效请求一个线程;

java序列化

序列化:将对象写入io流中

反序列化:将io流中的对象恢复

意义:将java对象变成了字节序列,有利于网络传输和磁盘存储

实现方式:实现Serializable或Externalizable接口

深拷贝和浅拷贝
基本数据类型引用数据类型
深拷贝复制值建立一个新的对象,但是对象内容与拷贝对象相同
浅拷贝复制值复制地址

反射

1 反射是什么

反射就运行状态对于任意一个类都可以知道他的使用属性和方法;对应任意一个对象,都可以调用它的任意属性和方法;对于可以动态获取信息和动态调用对象的方法的功能,就是java的反射机。

2 反射的优点和缺点

优点:可以再运行时获取类的实例,提高代码的灵活性;

缺点:反射的性能要求较高,需要解析字节码,对内存中的对象进行解析;提高反射性能可以使用setaccessible(true)来关闭jdk的安全检查。

3 getMethod和getDeclaredMethod的区别

getMethod():获取当前类及所有继承的父类的public修饰的方法。仅包括public

getDeclaredMethod():获取当前类的所有方法,包括public/private/protected/default修饰的方法。

method.getName:打印方法的名称

method.toString:打印方法的完整签名

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759205.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号