Java
文章平均质量分 60
li_mengjun
这个作者很懒,什么都没留下…
展开
-
hashCode()与equals()必须同时复写
hashCode()与equals()必须同时复写,成对出现,复写equals必须复写hashCode,否则会造成Map、Set等异常。如通过put覆盖原map中的键值对,但如果只复写了equals,会造成map.gey(existKey)返回为null,从而map里出现多个同样的key,进一步造成内存溢出。因此,必须同时复写hashCode,使map.gey(existKey) -> value实验如下:static class Cluster { String name原创 2021-03-17 16:09:16 · 273 阅读 · 0 评论 -
Java异常:一个线程运行时发生异常会怎样?
Java中Throwable分为Exception和Error: 出现Error的情况下,程序会停止运行。 Exception分为RuntimeException和非运行时异常。 非运行时异常必须处理,比如thread中sleep()时,必须处理InterruptedException异常,才能通过编译。 而RuntimeException可以处理也可以不处理,因为编译并不能检测该类异常,比原创 2017-10-05 21:43:21 · 17073 阅读 · 0 评论 -
java中join()方法的使用
Java中Thread类提供join()方法。作用:用于在当前线程A中添加别的线程B,这时线程A被阻塞,处于Blocked状态,线程B开始执行,当线程B执行完以后,线程A处于可运行状(Runnable),等待cpu的调度再执行。用法:当前线程A必须先用myThread的start()启动线程(否则join()不会被执行),然后调用join(): //线程A中的代码 myThread.s...原创 2017-10-04 19:55:23 · 3637 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出true,否则输出false。假设输入的数组的任意两个数字都互不相同。首先:什么是二叉搜索树(Binary Search Tree)?原创 2017-10-06 12:58:00 · 205 阅读 · 0 评论 -
Java中运行表达式return 1.0/0.0会发生什么?return 1/0会发生什么?
在Java中运行表达式:1.0 / 0.0,会有返回么?会不会抛出异常或者是编译器error? 那1/0呢?原创 2017-10-05 22:09:10 · 9604 阅读 · 0 评论 -
Java创建并执行线程的四种方法
java里面创建线程有四种方式: 无返回: 1. 实现Runnable接口,重写run(); 2. 继承Thread类,重写run(); 有返回: 1. 实现Callable接口,重写call(),利用FutureTask包装Callable,并作为task传入Thread构造函数; 2. 利用线程池;原创 2017-10-04 23:00:14 · 25139 阅读 · 0 评论 -
Callable、Future、Runnable、FutureTask的联系与区别
① Runnable 它是一个接口,在它里面只声明了一个run()方法:public interface Runnable { public abstract void run();}由于run()方法返回值为void类型,所以在执行完任务之后无法返回任何结果。 使用:实现Runnable接口,重写run()方法。 class RunnableImpl implements R原创 2017-10-05 11:19:52 · 895 阅读 · 0 评论 -
interrupt(),interrupted() 和isInterrupted()使用
Thread类中的三个方法: public void interrupt() // 无返回值 public boolean isInterrupted() // 有返回值 public static boolean interrupted() // 静态,有返回值原创 2017-10-05 17:34:24 · 955 阅读 · 0 评论 -
Java终止线程的四种方法
线程终止常用的四种方式:**终止线程的第一种方式**:等待run()或者是call()方法执行完毕**终止线程的第二种方式**:设置共享变量,如boolean flag。flag作为线程是否继续执行的标志**终止线程的第三种方式**:利用Thread类提供的interrupt()和InterruptedException。**终止线程的第四种方式**:利用Thread类提供的interrupt()和isIn原创 2017-10-05 19:24:43 · 4699 阅读 · 0 评论 -
对象的复制:浅复制(clone()方法的使用)+深复制
首先需要了解对象深、浅复制的概念: 浅复制:将一个对象复制后,基本数据类型(如int,String,boolean)的变量都会重新创建,而引用类型,指向的还是原对象(或数组)所指向的。原创 2017-10-04 19:50:23 · 792 阅读 · 0 评论 -
复杂链表的复制
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的头结点。 思路: 1. 首先根据链表的next遍历一遍,在每个node节点的后面复制一个与node的label相等的节点,如图所示; 2. 再遍历新链表,为复制的节点指定random指针(黄色箭头所示); 3. 将新链表拆分=原链表+复制后的链表原创 2017-10-06 19:52:45 · 245 阅读 · 0 评论