- java异常
java中广义的异常是指Throwable接口,这个接口下有两个实现类:Error和Exception。
Error表示严重的错误,一旦产生,则不做处理或者重写代码;
如果是Exception,分为检查异常和运行异常。检查异常在出现时必须处理,或者抛出或者捕获;运行异常在出现时可以处理可以不处理。
- 1
- 2
- 3
- 多线程
多线程是指一个进程中多个逻辑任务的执行,会产生安全问题,为了解决这个问题,可以利用同步代码块或者lock()方法.
- 1
- java中的String
String类是用final修饰的,因此不可被继承,其中重写了equals和hashCode方法,因此调用equals方法时比较的是两个字符串的值;String提供了比较多的构造方法,需要注意不同的构造方法所产生的对象的个数也不一样。用+连接运算拼接字符串的时候,调用的是StringBuilder中的append方法
- 1
- Java中的String, StringBuffer, StringBuilder
这三个类都是final修饰的,都不可以被继承。String这个类是线程不安全的,其中的+连接运算用的是StringBuilder中的append方法,每一次的+都会产生一个新的StringBuilder,concat方法是将字符串转化为字符数组之后再进行合并,然后转化为字符串。StringBuilder和StringBuffer中的方法几乎一致,其不同之处在于StringBuilder是线程不安全的,StringBuffer是线程安全的。
- 1
- finally, final和finalize
finally是异常中用于异常处理捕获后的一些后续操作的关键字,final可以用来修饰类、方法和属性。修饰类这个类不能被继承,修饰方法这个方法不能被重写可以被重载,final不能修饰抽象方法;修饰属性这个属性在被初始化之后就不能在被改变(对于基本类型的数据而言是值不可变,对于引用类型而言是地址不可改变)。 finalize是Object对象的protected方法,类似C++的析构函数,在对象释放时会自动调用该方法,但理解finalize正好在垃圾回收以前被调用非常重要。例如当一个对象超出了它的作用域时,finalize并不被调用。这意味着你不可能知道何时——甚至是否——finalize被调用。因此,你的程序应该提供其他的方法来释放由对象使用的系统资源,而不能依靠finalize来完成程序的正常操作。
- 1
- wait和notify
这两个方法都是设计在了Object类上,因此任何一个类产生的对象都可以调用这两个方法。wait方法会使当前执行的对象转入冻结状态;notify方法使冻结的对象转入活跃状态
- 1
- gc垃圾回收原理
GC的工作原理: 引用计数,标记复制
"引用计数"是一种简单但速度很慢的垃圾回收技术.所有对象都有一个引用计数器,当有引用连接时计数器加1,当引用离开作用域时或者被置于NULL时,计数器-1,垃圾回收器会在所以包含对象引用的列表上进行遍历,当发现某个对象的引用计数为0时,就释放占用的空间.
"标记复制"的运行机制,垃圾回收器遍历包含所有引用的列表,当发现存活的对象引用时做上标记,这样当遍历完所有对象引用并做上标记的时候,执行垃圾回收,将没有标记的对象堆空间释放.
- 1
- 2
- 3
- hashmap存储原理
HashMap 基于 hashing 原理,我们通过 put ()和 get ()方法储存和获取对象。当我们将键值对传递给 put ()方法时,它调用键对象的 hashCode ()方法来计算 hashcode,让后找到 bucket 位置来储存值对象。当获取对象时,通过键对象的 equals ()方法找到正确的键值对,然后返回值对象。HashMap 使用 LinkedList 来解决碰撞问题,当发生碰撞了,对象将会储存在 LinkedList 的下一个节点中。 HashMap 在每个 LinkedList 节点中储存键值对对象。
- 1
- 抽象类和接口的作用
抽象类是将一些类中的共有属性和方法进行抽取,其中一些共有方法由于实现细节不一样,因此以抽象方法的形式存在。接口更类似于一个标准,定义实现这个接口的实例中的方法,但是具体的实现细节不用这个接口来管理。
- 1
-
java的反射
Class,Method,Constructor,Field这四个类是java实现反射的API。在一些场景下无法直接通过new关键字来创建变量,例如配置文件中数据库的配置,那么这时候就需要用反射来完成相关的操作 -
int和Integer所有区别?
int是基本数据类型,其变量是存储到占内存中的,其上是没有任何方法的。Integer是一个引用数据类型,是int的包装类,其中含有大量的方法。
- 1
- &和&&的区别
&可以是位运算也可以是逻辑运算,&&是逻辑运算,在运算的时候如果前面的表达式为false,则&&后的表达式就不在进行
- 1
- 如何避免java多线程的死锁
减少共享资源,避免锁嵌套
- 1
- 抽象类和接口有什么区别?
抽象类中允许存在实体方法,允许存在静态方法,有构造函数,有变量;接口中没有实体函数,没有静态函数,变量默认是静态常量
- 1
- tcp和udp的区别
UDP:没有建立连接;不可靠的传输;底层是用流进行传输;传输速度快;进行封包
TCP:需要建立连接;底层用的也是流进行数据的传输;经过三次握手,是一个可靠的连接;不限制数据的大小;安全性比较高,但是传输速度相对较慢
- 1
- 2
</div>
- java异常
java中广义的异常是指Throwable接口,这个接口下有两个实现类:Error和Exception。
Error表示严重的错误,一旦产生,则不做处理或者重写代码;
如果是Exception,分为检查异常和运行异常。检查异常在出现时必须处理,或者抛出或者捕获;运行异常在出现时可以处理可以不处理。
- 1
- 2
- 3
- 多线程
多线程是指一个进程中多个逻辑任务的执行,会产生安全问题,为了解决这个问题,可以利用同步代码块或者lock()方法.
- 1
- java中的String
String类是用final修饰的,因此不可被继承,其中重写了equals和hashCode方法,因此调用equals方法时比较的是两个字符串的值;String提供了比较多的构造方法,需要注意不同的构造方法所产生的对象的个数也不一样。用+连接运算拼接字符串的时候,调用的是StringBuilder中的append方法
- 1
- Java中的String, StringBuffer, StringBuilder
这三个类都是final修饰的,都不可以被继承。String这个类是线程不安全的,其中的+连接运算用的是StringBuilder中的append方法,每一次的+都会产生一个新的StringBuilder,concat方法是将字符串转化为字符数组之后再进行合并,然后转化为字符串。StringBuilder和StringBuffer中的方法几乎一致,其不同之处在于StringBuilder是线程不安全的,StringBuffer是线程安全的。
- 1
- finally, final和finalize
finally是异常中用于异常处理捕获后的一些后续操作的关键字,final可以用来修饰类、方法和属性。修饰类这个类不能被继承,修饰方法这个方法不能被重写可以被重载,final不能修饰抽象方法;修饰属性这个属性在被初始化之后就不能在被改变(对于基本类型的数据而言是值不可变,对于引用类型而言是地址不可改变)。 finalize是Object对象的protected方法,类似C++的析构函数,在对象释放时会自动调用该方法,但理解finalize正好在垃圾回收以前被调用非常重要。例如当一个对象超出了它的作用域时,finalize并不被调用。这意味着你不可能知道何时——甚至是否——finalize被调用。因此,你的程序应该提供其他的方法来释放由对象使用的系统资源,而不能依靠finalize来完成程序的正常操作。
- 1
- wait和notify
这两个方法都是设计在了Object类上,因此任何一个类产生的对象都可以调用这两个方法。wait方法会使当前执行的对象转入冻结状态;notify方法使冻结的对象转入活跃状态
- 1
- gc垃圾回收原理
GC的工作原理: 引用计数,标记复制
"引用计数"是一种简单但速度很慢的垃圾回收技术.所有对象都有一个引用计数器,当有引用连接时计数器加1,当引用离开作用域时或者被置于NULL时,计数器-1,垃圾回收器会在所以包含对象引用的列表上进行遍历,当发现某个对象的引用计数为0时,就释放占用的空间.
"标记复制"的运行机制,垃圾回收器遍历包含所有引用的列表,当发现存活的对象引用时做上标记,这样当遍历完所有对象引用并做上标记的时候,执行垃圾回收,将没有标记的对象堆空间释放.
- 1
- 2
- 3
- hashmap存储原理
HashMap 基于 hashing 原理,我们通过 put ()和 get ()方法储存和获取对象。当我们将键值对传递给 put ()方法时,它调用键对象的 hashCode ()方法来计算 hashcode,让后找到 bucket 位置来储存值对象。当获取对象时,通过键对象的 equals ()方法找到正确的键值对,然后返回值对象。HashMap 使用 LinkedList 来解决碰撞问题,当发生碰撞了,对象将会储存在 LinkedList 的下一个节点中。 HashMap 在每个 LinkedList 节点中储存键值对对象。
- 1
- 抽象类和接口的作用
抽象类是将一些类中的共有属性和方法进行抽取,其中一些共有方法由于实现细节不一样,因此以抽象方法的形式存在。接口更类似于一个标准,定义实现这个接口的实例中的方法,但是具体的实现细节不用这个接口来管理。
- 1
-
java的反射
Class,Method,Constructor,Field这四个类是java实现反射的API。在一些场景下无法直接通过new关键字来创建变量,例如配置文件中数据库的配置,那么这时候就需要用反射来完成相关的操作 -
int和Integer所有区别?
int是基本数据类型,其变量是存储到占内存中的,其上是没有任何方法的。Integer是一个引用数据类型,是int的包装类,其中含有大量的方法。
- 1
- &和&&的区别
&可以是位运算也可以是逻辑运算,&&是逻辑运算,在运算的时候如果前面的表达式为false,则&&后的表达式就不在进行
- 1
- 如何避免java多线程的死锁
减少共享资源,避免锁嵌套
- 1
- 抽象类和接口有什么区别?
抽象类中允许存在实体方法,允许存在静态方法,有构造函数,有变量;接口中没有实体函数,没有静态函数,变量默认是静态常量
- 1
- tcp和udp的区别
UDP:没有建立连接;不可靠的传输;底层是用流进行传输;传输速度快;进行封包
TCP:需要建立连接;底层用的也是流进行数据的传输;经过三次握手,是一个可靠的连接;不限制数据的大小;安全性比较高,但是传输速度相对较慢
- 1
- 2
</div>
来源:https://blog.csdn.net/zssdeCSDN/article/details/100084515