
Java
咸鱼塘塘主
我只是不想我的未来黯淡无光
展开
-
一个HelloWorld引发的疑问
HelloWorld.javapublic class HelloWorld {public static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.println("arg["+i+"]="+args[i]); } System...原创 2018-03-08 00:13:04 · 318 阅读 · 1 评论 -
一个神奇的题目。。。。
这个神奇的题目是这样的。。。package com.xatu;public class Text { public static int k = 0; public static Text t1 = new Text("t1"); public static Text t2 = new Text("t2"); public static int i = p...原创 2018-05-01 10:00:22 · 731 阅读 · 3 评论 -
35-咸鱼学Java-快速排序的几种优化方式
快速排序介绍 在此文章之前请先阅读快速排序 快速排序的优化主要是再基准的选择上和尽量减少partition的运行。 其基准选择有几种方法1.随机选择法2.三分取中法,等等。 减少partition的方法主要输相同元素聚合。 其实现方法为1.随机选择法原来的选择基准为一直选择low下标的元素,所以在处理某些大量有序的序列的时候就会造成大量的元素在一侧,使得快排没有任何效果。 此时...原创 2018-05-18 00:33:51 · 261 阅读 · 0 评论 -
36-咸鱼学Java-堆排序
简介堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。——百度百科 在说堆之前...原创 2018-05-18 14:24:42 · 206 阅读 · 0 评论 -
21-咸鱼学Java-Java中的循环单链表
循环单链表图示 代码/** * 循环单链表 * @author 焦焱 * */public class LoopLink { class Entry{ /** * 数据域 */ int data; /** * 指向下一个节点的地址域 */ ...原创 2018-05-05 21:32:57 · 162 阅读 · 0 评论 -
22-咸鱼学Java-Java中的双向链表
双向链表图示 代码/** * 双向链表 * @author 焦焱 * */public class DoubleLink {class Entry{ int data; /** * 后继 */ Entry next; /** * 前驱 */ Entry pre; /** ...原创 2018-05-05 22:05:28 · 186 阅读 · 0 评论 -
23-咸鱼学Java-Java中的栈
栈的图示 代码/** * 栈 * @author 焦焱 * */public class Stack { /** * 栈顶标记 */ int top; /** * 栈内元素 */ int[] elem; /** * 无参构造 */ public Stack() ...原创 2018-05-05 22:53:11 · 181 阅读 · 0 评论 -
32-咸鱼学Java-KMP字符串匹配算法Java版
题目为 abcabdca 答案为 -1,0,0,0,1,2,0,0 i k 图解 执行操作 操作后i 操作后k 操作后next数组 2 0 k=next[k] 2 -1 -1,0 2 -1 判断为-1 next[i++]=++k 3 0 -1,0,0 3 0 k=ne...原创 2018-05-14 17:03:21 · 298 阅读 · 0 评论 -
28-咸鱼学Java-Java中的链式队列
简介链式队列也符合队列的基本模式,及先进先出,后进后出的原则,只是实现方式发生了改变,其图解为 红色的为引用,黑色的为节点 其具体实现方式见代码。代码/** * 链式队列 * @author 焦焱 * */public class LinkQueue { /** * 队头 */ private Entry front = n...原创 2018-05-13 16:38:43 · 180 阅读 · 0 评论 -
29-咸鱼学Java-Java中的优先队列
简介优先队列,显而易见,主要的是优先性,其次是队列,其优先性可以通过插入位置的不同进行判断,其队列性,决定了其可用原来的队列进行改造,来实现优先队列。 其图解为 代码/** * 优先队列 * @author 焦焱 * */public class PrioLinkQueue { /** * 内部类 * @author 14831 ...原创 2018-05-13 18:25:23 · 229 阅读 · 0 评论 -
37-咸鱼学Java-归并排序
简介归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 —–百度百科 先红色的归并,再蓝色的,再紫色代码这里写代码片...原创 2018-05-20 13:03:09 · 191 阅读 · 0 评论 -
30-咸鱼学Java-两个队列实现栈
队列的代码详情双队列栈的代码/** * 双栈队列 * @author 14831 * */public class TwoQueueStack { /** * 1号队列 */ private LinkQueue q1 = new LinkQueue(); /** * 2号队列 */ private L...原创 2018-05-14 16:22:46 · 174 阅读 · 0 评论 -
31-咸鱼学Java-BF字符串匹配算法Java版本
简介BF算法,即暴风(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。———百度百科 BF算法就如同算法中的暴力破解法,虽然可以解决问题,但是效率不高,字符...原创 2018-05-14 17:03:13 · 267 阅读 · 0 评论 -
33-咸鱼学Java-Shell排序
简介希尔排序是一种插入排序算法,它出自D.L.Shell,因此而得名。Shell排序又称作缩小增量排序。Shell排序的执行时间依赖于增量序列。 其主要操作是插入排序,不过其通过分组来进行插入。 其基本思想是 采用分组的策略 让组内有序 组内使用直接插入排序 1,尽量让每组数据变得有序 2,因为越有序越快 时间复杂度 时间复杂度O(n^1.3–1.5) 不稳定代码...原创 2018-05-14 18:02:32 · 215 阅读 · 0 评论 -
38-咸鱼学Java-面向对象编程核心之继承
继承继承主要是为了代码的复用,其关系如同Is-a,就如同狗是一个动物,狗就是子类,动物就是基类(父类),其就存在一定的继承关系,此篇文章主要讨论父类和子类直接的关系。 父类/** * 人类(基类) * @author * */public class Person { /** * 姓名 */ String name ; /**...原创 2018-05-21 14:21:34 · 200 阅读 · 0 评论 -
杂论-Java中的invoke
代码public class T1 { public void show() { System.out.println("实例方法"); } public static void show1() { System.out.println("类方法"); }public static void main(Str...原创 2018-05-21 14:30:42 · 314 阅读 · 0 评论 -
杂论-Java中打印一个类所出来的信息
当你打印一个类的引用的时候会发现出现这种东西time20180520.Derive@15a6029 其实际为 当前引用对象的类信息+@地址 而且Java中栈的地址不能被打印,只能打印引用所指引的堆上的地址...原创 2018-05-21 14:34:46 · 818 阅读 · 0 评论 -
34-咸鱼学Java-快速排序递归与非递归
简介快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。—–百度百科 其主要原理是每次都能确定一个元素的确定位置。 时间复杂度 好情况(无序) O(nlog2n) ...原创 2018-05-15 00:22:42 · 842 阅读 · 0 评论 -
24-咸鱼学Java-栈的应用-波兰式转逆波兰式
波兰式介绍波兰式是在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之前,所以,这种表示法也称为前缀表达式。逆波兰式介绍逆波兰式(Reverse Polish notation,RPN,或逆波兰记法),也叫后缀表达式(将运算符写在操作数之后)其不同的地方只是运算符的位置不同 举个例子2+3为波兰式,23+就为逆波兰式 其转换方法为 这种操作类似于...原创 2018-05-08 13:04:50 · 451 阅读 · 0 评论 -
25-咸鱼学Java-Java中的链式栈
数组栈及栈的结构 详情链式栈代码/** * 链式栈 * @author 焦焱 *入栈使用头插法 *出栈只需要删除头结点第一个元素 */public class LinkStack {class Entry{ int data; Entry next; public Entry(int data) { this.data ...原创 2018-05-08 13:29:02 · 186 阅读 · 0 评论 -
26-咸鱼学Java-两个栈实现队列
栈的代码详情双栈队列代码代码/** * 双栈队列 * @author 焦焱 * */public class TwoStackQueue {private LinkStack t1 = new LinkStack();private LinkStack t2 = new LinkStack();private int size=0;public int g...原创 2018-05-08 14:11:10 · 169 阅读 · 0 评论 -
Java泛型链表实现
链表简介代码实现package com.chenxixuexi;/** * 泛型链表 * 单链表逆置数据--节点 * 求单链表倒数第K节点 * 求两个单链表 是否相交 相交交点 * 判断单链表是否有环?有求出环的入口点 求环的长度? * 合并两个递增的单链表 * @author 14831 * * @param <T> */public cl...原创 2018-04-24 21:58:36 · 1157 阅读 · 0 评论 -
17-咸鱼学Java-内部类实际应用-Java链表
内部类 ,未使用内部类的链表可以点击名字查看。 此篇文章主要介绍运用内部类的Java链表的写法。 链表正如其名,就像一个一个珠子被串起来,只有前一个珠子和后一个珠子和当前珠子有关系,是一种一对一的数据结构。 这样的数据结构,在插入和删除节点的时候,会显的特别方便,因为不像数组一样要移动大量的元素,而只需要改变一些引用就可以实现增删。链表的增加1)头插法 顾名思义头插法及每次...原创 2018-04-24 21:56:35 · 348 阅读 · 0 评论 -
18-咸鱼学Java-特殊的链表(环和交)
链表是一长串的数据,可是当一长串的数据相交或者相互环绕的时候就变成了相交的链表和有环的链表,此文主要说明一下有环链表和相交链表的一些基本操作。 链表的代码有环链表创建实验条件 public void createLoop() { Entry cur = head; while(cur.next!=null) {...原创 2018-04-30 23:34:23 · 199 阅读 · 0 评论 -
19-咸鱼学Java-两个有序链表的合并
如图 黑色的线为合并前的链表,蓝色的为合并后。 分析这个问题,可以发现此问题符合递归的四条基本法则。1.基准情形。必须总要有某些基准情形,他无需递归就能解出。 2.不断推进。对于那些需要递归求解的情形,每一次递归调用都必须要使状况朝向一种基准情形推进。 3.设计法则。假设所有的递归调用都能运行。 4.合成效益法则。在求解一个问题的同一实例时,切勿在不同递归调用中做重复性的工作。...原创 2018-05-01 09:34:06 · 253 阅读 · 0 评论 -
27-咸鱼学Java-Java中的循环队列
队列介绍队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。—–百度而循环队列的结构如图所示 其本质类似于将一个数组弯折,首尾相连,这样的话。可是这样的话因为需要判断数组是否满,是否空,所以需要手动浪费掉一个空间,最标志位这样...原创 2018-05-08 19:19:00 · 197 阅读 · 0 评论 -
40-咸鱼学Java-String,StringBuilder,StringBuffer的异同
String String str1 = "hello"; str1 = str1 + "world"; System.out.println(str1);对此代码进行反汇编 可以看出来在其中调用了invokespecial 构造了一个StringBuilder对象,说明String字符串相加其实是通过StringBuilder的append方法进行的。其顺...原创 2018-05-26 14:42:33 · 174 阅读 · 0 评论 -
41-咸鱼学Java-Java中的反射和类加载机制
反射反射的核心Class类在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。 对于Class类有几点要注意的: 1.这个class不能人为手动生成,只能由系统生成。 2.这个JVM(Java虚拟机)中每个类的Class类只能有一个。 3.任何一个类都有一...原创 2018-05-26 15:57:53 · 247 阅读 · 0 评论 -
42-咸鱼学Java-详解反射中的Class对象
Class中的方法 MethodName 作用 getName() 获得类的完整路径 getDeclaredFields() 获得类的所有属性(包括私有成员变量) getDeclaredMethods() 获得类的所有方法 getConstructors() 得到构造函数 newInstance() 获得对象 g...原创 2018-05-27 16:31:06 · 221 阅读 · 1 评论 -
Java测试技术-JUnit单元测试
在使用Junit之前,先需要导入相应的jar包或者配置相应的依赖,在普通的Java工程中如下配置 1.先右击项目名 2.导入Jar 3.选择版本,此处用默认的 4.点击ok返回 打开项目后会发现多了一个JUnit4的东西 此处说明已经导入成功 对于Maven项目呢,只需要添加一个依赖 在pom.xml中添加 <groupId>junit&l...原创 2018-06-05 16:40:21 · 655 阅读 · 1 评论 -
Java-蓝桥杯-入门训练 Fibonacci数列
题目问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。输入格式输入包含一个整数n。输出格式输出一行,包含一个整数,表示Fn除以10007的余数。说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,原创 2018-01-17 00:02:32 · 213 阅读 · 0 评论 -
Java-蓝桥杯-入门训练 圆的面积
题目问题描述给定圆的半径r,求圆的面积。输入格式输入包含一个整数r,表示圆的半径。输出格式输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。说明:在本题中,输入是一个整数,但是输出是一个实数。对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。原创 2018-01-17 00:05:08 · 321 阅读 · 0 评论 -
Java-链表的实现
代码Data.java/** * 数据类 * @author 焦焱-16060211104 *主要用于存储数据,可以根据需求不同放入不同数据 */public class Data {/** * Int型数据 */private int i;public Data(int i) { super(); this.i = i;}public in原创 2018-01-17 15:42:26 · 198 阅读 · 0 评论 -
Java-链表的交并运算
链表部分在前面文章此文只阐述交并部分。代码/** * 计算类 * @author 焦焱-16060211104 *主要用于计算交并集运算 */public class Calculation {/** * 并运算 * @param a * @param b 两个链表 * @return 并后的链表 */static Link Combine(Link a,Link b){原创 2018-01-17 19:10:33 · 330 阅读 · 0 评论 -
Java-蓝桥杯-入门训练 序列求和
题目问题描述求1+2+3+...+n的值。输入格式输入包括一个整数n。输出格式输出一行,包括一个整数,表示1+2+3+...+n的值。样例输入4样例输出10样例输入100说明:有一些试题会给出多组样例输入输出以帮助你更好的做题。一般在提交之前所有这些样例都需要测试通过才行,但这不代表这几组样例数据都正确了你的程序就是完全正确的,潜在的错误可能仍然导致你的得分较低原创 2018-01-17 19:38:05 · 324 阅读 · 0 评论 -
Java-蓝桥杯- 基础练习 数列排序
题目问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1=n<=200输入格式 第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式 输出一行,按从小到大的顺序输出排序后的数列。样例输入58 3 6 4 9样例输出3 4 6 8 9代码import java.util.Scanner;原创 2018-01-17 20:59:28 · 1202 阅读 · 0 评论 -
Java-蓝桥杯- 基础练习 十六进制转八进制
题目问题描述 给定n个十六进制正整数,输出它们对应的八进制数。输入格式 输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式 输出n行,每行为输入对应的八进制正整数。 【注意】 输入的十六进制数不会有前导0,比如012A。 输出的八原创 2018-01-17 21:39:13 · 501 阅读 · 0 评论 -
Java-蓝桥杯- 基础练习 十六进制转十进制
题目问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入FFFF样例输出65535代码import java.util.Scanner;public class Main {public static void main(String[]原创 2018-01-17 21:54:00 · 1459 阅读 · 0 评论 -
Java-栈的封装
代码Stack.java/** * 栈 * @author 焦焱-16060211104 *栈的主要操作 */public class Stack {/** * 栈底 */private int base=0;/** * 栈顶 */private int top=0;/** * 栈内总元素数 */private int Num = 0; /** *原创 2018-01-18 17:47:06 · 601 阅读 · 0 评论 -
Java-表达式求值
代码NewStack.javaimport java.util.LinkedList;/** * 泛型栈 * @author 焦焱-16060211104 * * @param <T> 需要存储的类型 */public class NewStack<T> {private LinkedList<T> St = new LinkedList<T>(); //存数据/** * 入栈原创 2018-01-18 21:23:14 · 538 阅读 · 0 评论