- 博客(19)
- 收藏
- 关注
原创 run()和start()方法
线程的run()和start()调用 start() 方法是用来启动线程的,轮到该线程执行时,会自动调用 run();直接调用 run() 方法,无法达到启动多线程的目的,相当于主线程线性执行 Thread 对象的 run() 方法。
2021-11-03 20:31:47
185
原创 堆(优先队列)的实现(大根堆)
堆(优先队列)的实现(大根堆)public class MyHeap { //向下调整 //前提条件是要求被调整节点左右子树都已经是堆了 //从indexOfParent这个位置开始向下调整 //按照大根堆来实现 public static void shiftDown(int[] array,int heapSize,int indexOfParent){ int parent=indexOfParent; int child=pa
2021-05-30 12:30:12
502
原创 浏览器输入一个url后发生的事情
浏览器输入一个url后发生的事情应用层:应用程序封装HTTP请求报文传输层:操作系统封装TCP首部(TCP协议的数据)网络层:操作系统封装IP首部(IP协议数据)数据链路层:
2021-05-28 00:35:48
137
原创 二叉树的遍历,非递归实现
二叉树的遍历,非递归实现前序遍历 //入栈时先是右子树再是左子树,即保证出栈时先是左子树再是右子树 //由于用的是栈数据结构所以先进后出先压右再压左,出的时候先出左再出右 public static void preOrderNoR(TreeNode root){ if(root==null){ return; } Stack<TreeNode> stack=new Stack<>();
2021-05-27 14:42:00
61
原创 二叉树的遍历,递归实现
二叉树的遍历,递归实现先序遍历public static void preOrder(TreeNode root){ if(root==null){ return; } System.out.print(root.val); preOrder(root.left); preOrder(root.right); }中序遍历public static void inOrder(Tre
2021-05-27 14:28:40
48
原创 循环队列的实现,基于数组
循环队列的实现,基于数组//循环队列//数组实现public class Queue { private int[] data =new int[100]; //有效区间[head,tail) private int head=0; private int tail=0; private int size=0; //1、入队 public boolean offer(int val){ if (size== data.lengt
2021-05-26 15:24:31
66
原创 队列的实现,基于链表
队列的实现,基于链表//单向队列//先进后出//尾插头删//用链表实现,顺序表也可以,但是在头部操作时代价太高public class Queue { private class Node{ int val; Node next; public Node(int val){ this.val=val; } } private Node head=null; private Nod
2021-05-26 15:01:54
63
原创 栈的实现,通过链表实现
栈的实现,通过链表实现class Node{ int val; Node next; public Node(int val){ this.val=val; }}public class Stack2 { private Node head=null; private int size=0; //1、入栈 public void push(int val){ Node newNode=new Node(va
2021-05-25 08:50:53
44
原创 栈的实现,通过数组存储
栈的实现,通过数组存储public class Stack1 { //java底层是通过数组来实现 //初始大小为10,每次二倍扩容 private int[] data=new int[10]; private int size=0; //扩容,realloc private void realloc(){ //二倍扩容 int[] newData=new int[data.length*2]; for (
2021-05-25 08:31:37
367
原创 有傀儡节点实现单链表
有傀儡节点实现单链表1、isEmpty()实现判断链表是否为空2、toString()实现将链表元素序列化成一个字符串3、printList()实现将链表元素依次打印出来4、findLastNode()实现找到链表的最后一个结点5、 size()实现计算链表长度public class LinkedList { //傀儡节点 private Node head=new Node(); //判断是否为空 public boolean isEmpty(){
2021-05-25 01:18:58
66
原创 无傀儡节点链表增删改查及序列化实现
无傀儡节点链表增删改查及序列化实现class Node2{ int val; Node2 next; public Node2(int val){ this.val=val; }}class LinkedList{ private Node2 head=null; //增删改查 //添加节点 public boolean add(int val){ if (head==null){
2021-05-25 01:08:35
63
原创 SQL中SUM()和COUNT()的使用
SQL中SUM()和COUNT()的使用常用于:count() -- 返回某列的行数sum() -- 返回某列值之和-- 统计emp表中薪资大于3000的员工人数select count(*) from emp where sal>3000;-- 统计emp表中所有员工的总薪资(不包含奖金)select sum(sal) as 员工总薪资 from emp;count()为空时返回结果为0sum()为空时返回结果为nullPS:如果想要sum()不返回null-- 利用i
2021-05-23 13:07:02
3839
原创 手动实现ArrayList顺序表
手动实现ArrayList顺序表//简单实现ArrayList,元素按照String类型,非泛型版本public class ArrayList { private String[] data=null; //当前顺序表中存在元素个数 private int size=0; //当前顺序表中最大容量,size>capacity时需要扩容 private int capacity=100; public ArrayList(){ da
2021-05-22 20:40:05
81
原创 Java中的try...catch...finally语句中finally语句的执行
Java中的try…catch…finally语句中finally语句的执行finally关键字1、finally 代码块出现在 catch 代码块最后。2、无论是否发生异常,finally 代码块中的代码总会被执行。3、在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。例:try{ // 程序代码}catch(异常类型1 异常的变量名1){ // 程序代码}catch(异常类型2 异常的变量名2){ // 程序代码}finally{ // 程序代码}
2021-01-28 01:13:15
480
原创 Java的String进行比较时(==和.equals)
Java的String进行比较时(==和.equals)1、使用==进行比较时,并不是在比较字符串内容, 而是比较两个引用是否是指向同一个对象例:此时输出结果为true,因为字符串"hello"是在字符串常量池中,两个String类型变量都指向了字符串常量池中的"hello" String str1="hello"; String str2="hello"; System.out.print(str1==str2);例:此时输出结果为false,因为使用了new关
2021-01-22 23:50:05
449
原创 Java中重载和重写规则及使用范围
Java中重载和重写规则及使用范围1、重载方法名称相同,参数的类型、个数及顺序不同,返回值无影响范围:一个类例:改变参数可以完成重载class A{ public void func(int a){ System.out.print("原始方法"); } public void func(double a){ System.out.print("重载后的方法"); }}例:改变返回值不能构成重载,会报错**‘func(int)’
2021-01-22 23:23:21
901
原创 JAVA中的移位运算(>>>移位符号)
JAVA中的移位运算(>>>移位符号)JAVA中的逻辑运算常见的有两种:左移 << :最左侧的位不要了,最右侧补0右移 >> :最右侧的位不要了,最左侧补符号位(正数补0,负数补1)还有一个不常见的无符号右移 >>> :最右侧的位不要了,最左侧补0PS:左移一位相当于原数字2,左移N位,相当于原数字2的N次方右移一位相当于原数字/2,右移N位,相当于原数字/2的N次方计算机移位效率高于乘除,可以用移位代替代码中的乘除2移位位
2020-12-23 23:30:52
265
原创 JAVA关于方法重载的疑问
JAVA的重载JAVA在重载时有两条规则:1、函数名相同,参数类型不同2、函数名相同,参数个数不同在此基础上会有一些疑问:1、返回值不同时是否也是重载?答:JAVA的重载与返回值无关,在调用方法时,只能捕捉到参数,处理器无法了解返回值类型2、参数位置调换时是否也是重载?答:不一定(1)假设参数是两个int类型变量,调换位置以后在调用方法时相当于还是两个int变量,无差别例如: public static int add(int a,int b) { return a+
2020-12-21 12:10:19
155
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人