![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaSE
小胡同学~
一个热爱代码的小猿~
展开
-
爬虫项目Java
什么是爬虫?爬虫就是一个HTTP客户端。当我们在浏览器地址栏输入一个URL时,浏览器就会给服务器发送一个HTTP请求,服务器接收到后会返回给浏览器一个HTTP响应。爬虫就是根据需要构造请求,并且再根据需要简单的解析一下响应数据。爬虫的优势就是可以根据需要批量的获取数据。爬取的数据爬取的是GitHub上项目的一些具体信息。例如:star,fork,open_issue。然后收集这些项目的这些属性,衡量出这些项目中哪些是比较活跃/流行的。项目最终需求给awesome-java 这个项目中提到的所有的原创 2020-05-19 11:10:27 · 882 阅读 · 1 评论 -
JavaSE总结 ---思维导图
用思维导图的方式进行对 JAVA 语法知识的总结。原创 2019-11-28 23:34:59 · 216 阅读 · 0 评论 -
对象的比较 Java
什么是比较?在计算机领域中,比较分为两种:身份的比较值的比较而在Java中主要有三种比较方式:Object.equalsComparableComparator下面我们逐个总结:== VS equalsp == q 表示的是 p 和 q 两个引用指向同一个对象p.equals(q) 表示 p 指向的对象 和 q 指向的对象是否是值语义相等的覆写前public cl...原创 2019-11-18 21:29:13 · 154 阅读 · 0 评论 -
归并排序 Java
归并排序的原理归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子 序列段间有序。归并排序的实现public class Sort { public static void mergeSort(int[] arra...原创 2019-11-18 19:59:08 · 217 阅读 · 0 评论 -
快速排序 Java
快速排序原理从待排序区间选择一个数,作为基准值(pivot);Partition: 遍历整个待排序区间,将比基准值小的(可以包含相等的)放到基准值的左边,将比基准值大的(可以包含相等的)放到基准值的右边;采用分治思想,对左右两个小区间按照同样的方式处理,直到小区间的长度 == 1,代表已经有序,或者小区间的长度 == 0,代表没有数据。快速排序的实现public class S...原创 2019-11-18 19:40:28 · 175 阅读 · 1 评论 -
冒泡排序 Java实现
冒泡排序的原理在无序区间,通过相邻数的比较,将最大的数冒泡到无序区间的最后,持续这个过程,直到数组整体有序冒泡排序实现public class Sort { public static void bubbleSort(int[] array) { for (int bound = 0; bound < array.length; bound++) { ...原创 2019-11-18 19:20:47 · 138 阅读 · 0 评论 -
堆排序 Java
堆排序的原理基本原理也是选择排序,只是不在使用遍历的方式查找无序区间的最大的数,而是通过堆来选择无序区间的最大的 数。注意: 排升序要建大堆;排降序要建小堆。堆排序实现升序为例public class heapSort { public static void heapSort(int[] array) { //根据给的数组来创建堆 creatHeap...原创 2019-11-18 19:12:53 · 142 阅读 · 0 评论 -
Java实现堆
什么是堆?要想实现堆,先要知道什么是堆和堆都有那些操作。**堆(英语:heap)**是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。通俗的说堆是使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。 一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪...原创 2019-11-18 18:59:18 · 555 阅读 · 0 评论 -
选择排序 Java
直接选择排序-原理每一次从无序区间选出最大(或最小)的一个元素,存放在无序区间的最后(或最前),直到全部待排序的数据元素排完 。//升序public static void selectSort(int[] array) { for (int bound = 0; bound < array.length; bound++) { //待排序区间[bound, a...原创 2019-11-13 22:52:39 · 132 阅读 · 0 评论 -
希尔排序 Java
希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有 距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取重复上述分组和排序的工作。当到达=1时, 所有记录在统一组内排好序。希尔排序是对直接插入排序的优化。当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就会很快。这样整体...原创 2019-11-13 22:42:36 · 270 阅读 · 0 评论 -
插入排序 Java
插入排序的原理:将整个数组分为两个区间:已排序区间 [0 bound);待排序区间 [bound cur);具体操作:每次在待排序区间选择第一个元素,在有序区间从后往前和这个元素进行比较,在符合排序规则的位置进行插入。如果不满足,那么就将已经排序区间的元素往后挪一位。...原创 2019-11-13 22:05:06 · 144 阅读 · 0 评论 -
LeetCode 155. 最小栈
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);min...原创 2019-11-07 22:21:34 · 122 阅读 · 0 评论 -
杨辉三角Java
什么是杨辉三角?杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。这样的三角形排列就被称为杨辉三角。我们能发现一些规律:每一行的第一个元素和最后一个元素是1每一行除了第一个和最后...原创 2019-11-07 21:34:50 · 228 阅读 · 0 评论 -
Java"二叉树"小结
二叉树总结1.树形结构什么是树形结构树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起 来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父 结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。节点的度:一个节点含有的子树的...原创 2019-11-03 17:31:46 · 219 阅读 · 0 评论 -
Java"栈"和"队列"总结
栈什么是栈?栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。我们可以把压栈和出栈这个过程想像成我们在地上放了一个箱子,这时候我们给箱子里面一本书,当我们再想给箱子里放一本书的时候,我们只能把新放的一本书放在之前那本的上面...原创 2019-11-02 17:17:19 · 282 阅读 · 0 评论 -
Java"异常"总结
Java中什么是异常?异常通常指的是可能是你的代码在编译的时候没有任何错误,但是在运行时会出现一些异常。也可能是一些无法预料到的异常。有些错误是这样的, 例如将 System.out.println 拼写错了, 写成system.out.println. 此时编译过程中就会出 错, 这是 “编译期” 出错.而运行时指的是程序已经编译通过得到 class 文件了, 再由 JVM 执行过程中出现...原创 2019-10-30 21:06:09 · 138 阅读 · 0 评论 -
"泛型"和"包装类"的总结
泛型泛型是怎么来的?或者可以说泛型是满足我们的什么需要才会产生泛型?问题: 当我们创建一个只能保存 int 类型的元素的顺序表时,现在我们的需求变了,现在要保存一个 double 类型的元素或者更难一点的自己创建的 Book 类型的元素时,我们该怎么办呢?面对这个问题时,我们首先想到的就是把顺序表的元素类型定义成 object 类型。例如:public class MyArrayLi...原创 2019-10-29 21:15:46 · 179 阅读 · 0 评论 -
一个简单的发扑克牌小项目
这个小项目是:给三名玩家轮流分发 5 张扑克牌,并且扑克牌可以重洗。首先我们要现有一副新的扑克牌,然后我们对这副牌进行洗牌操作。下来给三名玩家轮流分发。首先扑克牌具有的属性:花色大小我们先创建一个 Card 类:class Card { public String suit;//花色 public String rank;//大小 @Override ...原创 2019-10-29 17:47:56 · 526 阅读 · 0 评论 -
单纯的想要1024勋章~~~
每年都要有,不能有遗憾~~~原创 2019-10-24 21:01:47 · 147 阅读 · 0 评论 -
Java面向对象小结。
Java是一门面向对象编程语言,那么什么是面向对象呢?百度百科中这样描述:面向对象(Object Oriented)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。面向对象是相对于面向过程...原创 2019-10-21 18:13:35 · 154 阅读 · 0 评论 -
Java实现简单图书馆管理系统
编写图书馆管理系统思路要编写这个程序我们首相要清楚这个程序中有哪些对象,不考虑复杂情况,基本的对象有三个:书用户那么我们就分别讨论这三个对象有哪些属性和有哪些动作。书籍 它会有书名,编号(id), 作者, 类别, 价格, 是否被借 这些简单的属性用户包括:管理员和普通用户,管理员它会有姓名, 增加书籍, 删除书籍, 查找书籍, 打印所有书籍信息, 退出系统 这些简单属性。普通...原创 2019-10-20 22:09:57 · 42519 阅读 · 39 评论 -
Java实现无头双向有环链表
双向有环链表意思是我们能通过当前节点可以保存上一个节点和下一个节点的信息,并且各个节点连接成一个环形,也就是说我们可以通过正向(next)遍历这个链表,也可以逆向(prev)遍历这个链表。这样我们就可以完成无头双向有环链表的基本操作了。class DLinkedNode { public int val = 0; public DLinkedNode prev = null;...原创 2019-10-13 22:02:23 · 221 阅读 · 0 评论 -
实现交换两个变量的值。要求:需要交换实参的值。Java
现在我们设计一个交换两个变量值(exchange)的类,通过类来实现交换参数的值具体代码实现如下:public class Exchange { public double num1; public double num2; //实现交换两个数的值 public void exchange() { double temp = num1; ...原创 2019-09-24 12:09:23 · 462 阅读 · 0 评论 -
编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输入,最多输入三次。三次均错,则提示退出程序。Java实现
这道题我们需要注意的是以下几点:1.最多输入3次2.要在输入后有对应的提示信息3.怎么判断是否输入正确主要难点是如何判断是否输入正确,首先密码是一个字符串,在java中我们不能简单的一位判断字符串是否相等就简单的用 if(字符串1 == 字符串2 ) 这样的代码来判断字符串是否相等。在java中用 equals 来判断字符串是否相等。//equals 用法String a = "123...原创 2019-09-13 15:45:04 · 865 阅读 · 1 评论 -
求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。)
这到底关键是我们如何取到一个数的某一位。一个数字模(%)上10取得是这个数字的个位,那么取十位我们可以先用这个数字除以10,再去模上10,这样就得到原数字的十位,百位同理。那么这道题就可以做了。具体代码实现如下:public class NarcissisticNumber { public static void main(String[] args) { int n...原创 2019-09-13 15:29:19 · 407 阅读 · 0 评论 -
编写程序数一下 1到 100 的所有整数中出现多少个数字9。Java实现
这道题我们需要注意的是 1 到 100 中含9的数字有:9、19、29、39、49、59、69、79、89、90、91、92、93、94、95、96、97、98、99。我们不仅需要注意个位上的 9 ,也要注意十位上的 9 。所以我们的代码分开判断,判断十位上是否有 9 ,并且判断个位上是否有 9 。具体代码实现如下:public class Counting9 { public st...原创 2019-09-13 15:23:58 · 1126 阅读 · 0 评论 -
给定一个十进制整数, 如何转成二进制形式? 如何转成十六进制形式? Java
一个数字如何表示?我们平时说的1,2,3,4,11…这样的数字都是以十进制的方法表示,而什么是进制。通俗地讲就是二进制就是逢二进一,八进制就是逢八进一,十进制就是逢时进一。计算机中的数据都是以二进制来保存的。那么他们之间是如何转换呢?在java中如何实现将一个十进制整数,转换为一个二进制数具体代码实现如下:public class ConversionOfSystems { pub...原创 2019-09-10 15:37:15 · 247 阅读 · 0 评论 -
Java变量和运算符的基本知识点
上图为 Java 数据类型的基本分类,下民逐个来进一步进行总结。int在 java 中 int 不分系统,固定为 4 个字节。并且在 java 中没有无符号数,只有有符号数 。 int 表示的范围大小为 -2147483648 —— 2147483647 。可以用 Integer.MAX_VALUE 取到 int 的最大值,取最小值则为 Integer.MIN_VALUE 。long在 ...原创 2019-09-09 22:22:10 · 140 阅读 · 0 评论 -
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
我们发现当底数为偶数时,为负数,底数为奇数时,为正数。同时要注意我们结果是浮点数,所以不能用 1 / i;而要用 1.0 / i 。具体代码实现如下:public class NumSum { public static void main(String[] args) { int i = 1; double sum = 0.0; int...原创 2019-09-08 22:33:30 · 110 阅读 · 0 评论 -
求两个正整数的最大公约数。 Java实现
我们需要知道求两个数的最大公约数时,最大公约数最大的可能就是两个数其中较小的那一个,不可能超过这个数。所以我们只需要让这两个数共同模上同一个数直到这个数等于较小的那个数就行了。具体代码实现如下:public class GreatestCommonDivisors { public static void main(String[] args) { int num1 =...原创 2019-09-08 22:30:08 · 793 阅读 · 0 评论 -
输出乘法口诀表.Java实现
实现乘法口诀表我们需要注意每一行的结尾是第二个数字小于等于第一个数字时就要换行,并且第一个数字要加 1 。具体代码实现如下:public class MultiplicationTable { public static void main(String[] args) { int a = 0; int b = 0; for (a = 1...原创 2019-09-08 22:26:28 · 660 阅读 · 0 评论 -
输出 1000 - 2000 之间所有的闰年。Java实现
这道题核心是如何判断是否为闰年?闰年判定有两种规则:普通闰年:能被 4 整除但不能能被 100 整除世纪闰年:能被 400 整除这样这道题就能解决了具体代码实现如下:public class IsLeapYear { public static void main(String[] args) { int IsLeapYear = 0; for (...原创 2019-09-08 22:24:37 · 1081 阅读 · 0 评论 -
打印 1 - 100 之间所有的素数。Java实现
如果我们会了怎样判断一个数是不是素数,这道题就很简单了。我们只需要将判断条件放入 1 到 100 的循环中就可以了.具体代码实现如下:public class IsPrimePlus { public static void main(String[] args) { int isPrime = 0; int check = 0; for...原创 2019-09-08 22:21:43 · 1324 阅读 · 0 评论 -
判定一个数字是否是素数。Java实现
首先我们知道什么是素数或者是素数的条件是什么。只能被 1 和 自己本身整除的数称为素数。具体代码实现如下:public class IsPrime { public static void main(String[] args) { int num = 4; int i = 2; for (i = 2; i < num; i++) ...原创 2019-09-08 22:15:41 · 384 阅读 · 0 评论 -
根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)。Java 实现
由题意可知这是用多分支语句实现,可用 if 条件语句实现。具体代码实现如下:public class AgeGroup { public static void main(String[] args) { int age = 100; if (age > 0 && age <= 18) { System....原创 2019-09-08 22:10:49 · 466 阅读 · 0 评论 -
给定三个 int 变量, 求其中的最大值和最小值。 Java 实现。
我们最先能想到的方法就是将他们全部比较一遍,这样就能得到最大值和最小值,这样做实际上也对他们进行了一次排序,我们可以得到一个从大到小或者从小到大的顺序(只是比较的条件改动一下就可以转换),这样我们就可以直接输出最大的数和最小的数,这样就解决的这道题。具体代码实现如下:public class Max_And_Min { public static void main(String[] a...原创 2019-09-08 20:39:51 · 933 阅读 · 0 评论 -
写一个函数返回参数二进制中 1 的个数。Java实现
这道题题如果会移位操作符,那我们就有三种方法做了。首先第一种方法:将这个数字先模上2,如果是1,那么计数器加1,然后这个数字在除2.模上二在除以二看是否是1,相当于我们把这这个数字以二进制方式写了出来,因为模2的结果就是1和0。但是不好的一点是我们不能用这个方法求负数二进制位有多少个1.方法二(位操作):例如:23的二进制序列是:0000 0000 0000 0000 0000 0000...原创 2019-09-13 16:18:42 · 181 阅读 · 0 评论 -
获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。Java实现
如果我们会判断一个数的二进制位有多少个1,那么这道题就很简单,只需要判断完后,把结果按照题目要求打印出来就行了。具体代码实现如下:public class BinaryNumber { public static void main(String[] args) { //首位为奇数位 int num = 14; int check = 0...原创 2019-09-13 16:20:58 · 479 阅读 · 1 评论 -
设计一个包含多个构造函数的类,并分别用这些构造函数来进行实例化对象。
首先我们要设计一个 Person 类,那么 Person 具有最基本的属性就是name(姓名)age(年龄)sex(性别)isSingle(是否单身)具有两个简单的动作就是 吃饭和睡觉(仔细想想这样也挺好~哈哈哈)下面就用代码来实现 Person 类:public class Person { public String name; public String s...原创 2019-09-24 12:02:13 · 1924 阅读 · 0 评论 -
Java:编写一个类Calculator,有两个属性num1,num2,这两个数据的值,不能在定义的同时初始化,最后实现加减乘除四种运算.
Calculator 要实现加减乘除,要注意的是,再除法时,我们可能得到的是小数,所以需要转换成 double,或者在开始是就定义成 double。具体代码实现如下:public class Calculator { public double num1; public double num2; //实现加法 public void add () { ...原创 2019-09-23 20:02:51 · 2751 阅读 · 0 评论