
零基础学Java
咸鱼塘塘主
我只是不想我的未来黯淡无光
展开
-
Java中迭代器的实现
此处用链表来示范1.先创建一个链表类public class LinkedList<T> implements Iterable<T> { private Node<T> head; private Node<T> tail; public static <T> LinkedList<T> ne...原创 2018-11-25 12:46:16 · 659 阅读 · 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 评论 -
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 评论 -
24-咸鱼学Java-栈的应用-波兰式转逆波兰式
波兰式介绍波兰式是在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之前,所以,这种表示法也称为前缀表达式。逆波兰式介绍逆波兰式(Reverse Polish notation,RPN,或逆波兰记法),也叫后缀表达式(将运算符写在操作数之后)其不同的地方只是运算符的位置不同 举个例子2+3为波兰式,23+就为逆波兰式 其转换方法为 这种操作类似于...原创 2018-05-08 13:04:50 · 451 阅读 · 0 评论 -
34-咸鱼学Java-快速排序递归与非递归
简介快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。—–百度百科 其主要原理是每次都能确定一个元素的确定位置。 时间复杂度 好情况(无序) O(nlog2n) ...原创 2018-05-15 00:22:42 · 842 阅读 · 0 评论 -
杂论-Java中打印一个类所出来的信息
当你打印一个类的引用的时候会发现出现这种东西time20180520.Derive@15a6029 其实际为 当前引用对象的类信息+@地址 而且Java中栈的地址不能被打印,只能打印引用所指引的堆上的地址...原创 2018-05-21 14:34:46 · 818 阅读 · 0 评论 -
杂论-Java中的invoke
代码public class T1 { public void show() { System.out.println(&quot;实例方法&quot;); } public static void show1() { System.out.println(&quot;类方法&quot;); }public static void main(Str...原创 2018-05-21 14:30:42 · 314 阅读 · 0 评论 -
38-咸鱼学Java-面向对象编程核心之继承
继承继承主要是为了代码的复用,其关系如同Is-a,就如同狗是一个动物,狗就是子类,动物就是基类(父类),其就存在一定的继承关系,此篇文章主要讨论父类和子类直接的关系。 父类/** * 人类(基类) * @author * */public class Person { /** * 姓名 */ String name ; /**...原创 2018-05-21 14:21:34 · 200 阅读 · 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 评论 -
31-咸鱼学Java-BF字符串匹配算法Java版本
简介BF算法,即暴风(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。———百度百科 BF算法就如同算法中的暴力破解法,虽然可以解决问题,但是效率不高,字符...原创 2018-05-14 17:03:13 · 267 阅读 · 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 评论 -
37-咸鱼学Java-归并排序
简介归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 —–百度百科 先红色的归并,再蓝色的,再紫色代码这里写代码片...原创 2018-05-20 13:03:09 · 191 阅读 · 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 评论 -
咸鱼学Java-多线程基础
实现多线程的方法1.继承Thread,并且重写run方法(线程体) 2.实现Runnable接口,实现run方法(线程体) 必须重写run1.继承Threadclass MyThread extends Thread{ public MyThread(String name) { //此处调用父类的构造方法,在父类中有个构造方法可以传入名称,作为线程的...原创 2018-07-28 12:15:09 · 193 阅读 · 0 评论 -
咸鱼学Java-Java中的枚举类
枚举类的定义枚举类的个数和属性是固定的不允许被修改的。如人只有男人和女人。自己实现的枚举类个数固定属性固定,根据这个需求我们可以知道 在自己实现枚举类的时候需要注意 1.private修饰构造器,让此对象不能在外部创建 2.属性前要用private final修饰防止被恶意修改 3.该类的所有实例应该用public static final修饰 我们可以自己写一个人类的枚举类...原创 2018-07-22 23:48:31 · 176 阅读 · 0 评论 -
咸鱼学Java-Java中的注解
注解定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。使用方法我们平时在进行Junit单元测试的时候,需要加上@Test这个就是一种注解。此注解用于Junit识别测试方法。自定义注解注解的定义和类接...原创 2018-07-23 13:15:53 · 219 阅读 · 0 评论 -
45-通过jmap来分析Java的内存泄露
初始代码/** * 泛型栈 * @author 焦焱 * * @param <T> */public class TStack<T> { /** * 泛型数组 */ private T[] data = null; /** * 栈顶 */ private int top; /...原创 2018-06-01 19:45:34 · 10669 阅读 · 0 评论 -
44-咸鱼学Java-通配符
通配符的定义通配符用?表示,其具有上界而且具有下界,定义方式分别为 上界&amp;amp;lt; ? extends Object&amp;amp;gt; 下界&amp;amp;lt; ? super Object&amp;amp;gt;原创 2018-06-01 19:15:48 · 266 阅读 · 0 评论 -
43-咸鱼学Java-泛型编程
简介泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。泛型的使用先将之前写过的栈转换为泛型栈/** * 泛型栈 * @author 14831 * * @param &lt;T&gt; */public class TStack&lt;T&gt; { /** * 泛型数组 ...原创 2018-06-01 01:45:58 · 222 阅读 · 0 评论 -
接口练习作业-模拟银行存取款
题目模拟银行存取款1、 创建基接口BankAccount,包含 存款方法playIn(), 取款方法withdraw(), 查询余额方法getBalance()。2、 创建接口ITransferBankAccount(继承基接口BankAccount) 包含转账方法transferTo(). 类中包含 私有数据成员:名字name和余...原创 2018-05-24 21:00:31 · 1686 阅读 · 0 评论 -
39-咸鱼学Java-面向对象编程核心之抽象类,密封类和接口
抽象类abstract class Animal{ abstract public void cry(); //抽象方法不实现 //抽象类中可以有非抽象方法 public void fun1() { System.out.println("Animal fun1"); }}//当一个类实现某个抽象类的时候,必须实现其抽象方...原创 2018-05-24 20:37:38 · 330 阅读 · 0 评论 -
Java测试技术-JUnit单元测试
在使用Junit之前,先需要导入相应的jar包或者配置相应的依赖,在普通的Java工程中如下配置 1.先右击项目名 2.导入Jar 3.选择版本,此处用默认的 4.点击ok返回 打开项目后会发现多了一个JUnit4的东西 此处说明已经导入成功 对于Maven项目呢,只需要添加一个依赖 在pom.xml中添加 &lt;groupId&gt;junit&l...原创 2018-06-05 16:40:21 · 655 阅读 · 1 评论 -
42-咸鱼学Java-详解反射中的Class对象
Class中的方法 MethodName 作用 getName() 获得类的完整路径 getDeclaredFields() 获得类的所有属性(包括私有成员变量) getDeclaredMethods() 获得类的所有方法 getConstructors() 得到构造函数 newInstance() 获得对象 g...原创 2018-05-27 16:31:06 · 221 阅读 · 1 评论 -
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 评论 -
29-咸鱼学Java-Java中的优先队列
简介优先队列,显而易见,主要的是优先性,其次是队列,其优先性可以通过插入位置的不同进行判断,其队列性,决定了其可用原来的队列进行改造,来实现优先队列。 其图解为 代码/** * 优先队列 * @author 焦焱 * */public class PrioLinkQueue { /** * 内部类 * @author 14831 ...原创 2018-05-13 18:25:23 · 229 阅读 · 0 评论 -
28-咸鱼学Java-Java中的链式队列
简介链式队列也符合队列的基本模式,及先进先出,后进后出的原则,只是实现方式发生了改变,其图解为 红色的为引用,黑色的为节点 其具体实现方式见代码。代码/** * 链式队列 * @author 焦焱 * */public class LinkQueue { /** * 队头 */ private Entry front = n...原创 2018-05-13 16:38:43 · 180 阅读 · 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 评论 -
9-咸鱼学Java-一些例题
1.如何排序数组并搜索某个元素,返回下标?package homework;public class one { public static int maopaoSelect(int[] a,int x) { int temp; for (int i = 0; i &lt; a.length; i+...原创 2018-04-13 01:08:08 · 246 阅读 · 0 评论 -
8-咸鱼学Java-冒泡排序算法优化
先上代码import java.util.Arrays;public class maopaoyouhua { public static void maopao(int[] a) { long start =System.currentTimeMillis(); int temp; boolean t = true; //添加标志位...原创 2018-04-12 23:24:39 · 197 阅读 · 0 评论 -
7-咸鱼学Java-Java中的数组
数组的定义初始化 int [] array = {0,1,2,3,4,5,6,7,8,9}; int [] array1 = new int[]{0,1,2,3,4,5,6,7,8,9}; int [] array2 = new int[10];3种定义方式,其中前两种都已经初始化完成,第三中数组中的元素默认是0,需要手动输入其每个下标对应的值。array...原创 2018-04-12 23:08:05 · 200 阅读 · 0 评论 -
6-咸鱼学Java-Java中函数交换两个数的补充
上次运用了数组进行交换此次运用java类的引用进行交换值 代码class Swap{ public int data=0; public Swap(int a) { data = a; }}public class 优快云 { public static void swap(Swap a,Swap b) { ...原创 2018-04-12 00:46:56 · 316 阅读 · 1 评论 -
1-咸鱼学Java-第一个Java程序
ps:请先配置好Java环境,jdk可以从Java官网进行下载http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html然后进行环境变量的配置 先添加JAVA_HOME变量名:JAVA_HOME变量值:C:\Program Files (x86)\Java\jdk1.7.0_80原创 2018-03-29 01:00:41 · 424 阅读 · 1 评论 -
13-咸鱼学Java-递归与斐波拉契,汉诺塔
递归简介详细规则等,见递归简论 递归简而言之即为自己调用自己。最不适合递归之斐波拉契递归解法public static int fabonic(int n){ if(n==1||n==2) return 1; else return fabonic(n-1)+fabonic(n-2);}非递归解法publ...原创 2018-04-17 00:13:00 · 184 阅读 · 0 评论 -
12-咸鱼学Java-数组排序之选择,插入
选择排序public static void selectSort(int[] a){ int temp = 0; //交换使用的临时变量 int minIndex = 0; //最小数的下标 for (int i = 0; i &lt; a.lengt...原创 2018-04-16 23:37:44 · 196 阅读 · 0 评论 -
5-咸鱼学Java-Java的控制语句及简单杂论
If-elseif是java中主要的控制语句 其语法为 if (a &gt; b) { a&gt;b为真,程序执行语句 } else { a&gt;b为假,程序执行语句 }例题/** * 比较两个数大小 * @author 焦焱 * */public ...原创 2018-04-10 22:38:50 · 145 阅读 · 0 评论 -
11-咸鱼学Java-简单二分查找
代码/** * 二分查找 * @author 焦焱 * */public class binarySearch { /** * 查找函数 * @param a int型的数组 * @param x 需要查找的数 * @return 如果找到返回下标,没找到返回-1 */ public static int fun(...原创 2018-04-15 15:53:42 · 197 阅读 · 0 评论 -
10-咸鱼学Java-Java中的二维数组
二维数组的定义和初始化 //规则数组 int[][] a = new int[2][3]; int[][] a2 = {{1,2,3},{4,5,6}}; int[][] a3 = new int[][]{{1,2,3},{4,5,6}}; //不规则数组 int[][] a4 = new int...原创 2018-04-15 14:57:47 · 225 阅读 · 0 评论 -
3-咸鱼学Java-Java的引用类String解析
String是不是Java的基本类型。它是由char数组组成。 我们来解析一下这个类。 共分为5种情况 1 //One在常量池,str1和str2都指向常量池的One String str1 = "One"; String str2 = "One"; System.out.println(str1==str2);结果为true,因为 2...原创 2018-03-31 00:55:08 · 258 阅读 · 0 评论 -
4-咸鱼学Java-Java简单的运算符
运算符顺序[]运算符 int[] array = {1,2,3,4}; //[] 声明一个数组 array[0] = 2; //[] 属性获取,下标所指内容 System.out.println(array); System.out.println(array[2]); int length = array.length; //获取数组长...原创 2018-04-06 21:22:48 · 239 阅读 · 0 评论