自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 JDK1.8新特性

JDK1.8新特性:1.接口:早期版本的接口已经有很多子类实现了,此时发现接口中的方法需要改动甚至新增方法,无法修改接口(全局常量+抽样方法) 将接口做了扩充:支持default定义的普通方法以及静态方法 default(不能省略)定义的普通方法,通过子类对象调用,所有子类均拥有此方法。 static定义的静态方法通过接口名称直接调用。 ...

2019-03-19 19:59:02 132

原创 JDK1.5新特性--注解

注解:@标识符 @Override @Controller @DataJDK内置三大注解: 1.准确覆写 @Override:在编译期检查当前覆写方法是否满足要求; 2.过期声明 @Deprecated:在早期版本的代码(方法),表示该方法在当前版本已经不推荐使用,但是使用了 也不报错,只是起到了一个警示和提示的作用。 3.压制警告:@S...

2019-03-19 19:54:44 175

原创 JDK1.5新特性--枚举

枚举:单例&&多例单例: 饿汉式单例: class Singleton{ private static Singleton singletion = new singletion(); private Singleton(){}//构造方法私有化 public static Singleton getIn...

2019-03-19 19:53:43 190

原创 JDK1.5新特性--泛型

泛型:1.方法的可变参数:数组 【在方法中使用 ... 表示可变参数】,可变参数必须放在方法参数最后一个,并且有且只有一个。2.foreach循环 for(数据类型 临时变量 : 数组(集合)) { // 循环次数为数组长度,而每一次循环都会顺序取出数组中的一个元素赋值给临时变量 }3.静态导入(import) import sta...

2019-03-19 19:49:25 135

原创 8种基本排序的比较

8种基本排序的比较:视觉感受几种算法:http://blog.jobbole.com/11745/

2019-03-15 23:24:56 207

原创 基于快速排序:如何在O(n)时间内,找到一个无序数组的第K大元素?

如何在O(n)时间内,找到一个无序数组的第K大元素? 基本思路:利用快排的思想,将无序数组array[]【左下标l,右下标r】分为三个区间,【小于第k个元素】、【等于第k个元素】、【大于第k个元素】,选取一个基准值的下标p与k相比,若比k大,则继续在【l,p-1】之间递归,若比k小,则在【p+1,r】之间递归。平均时间复杂度:O(n+n/2+n/4+...+...

2019-03-15 23:13:24 2070

原创 交换排序--快速排序(图示)

快速排序:21世纪最重要的算法之一,基于分治思想O(nlogn)算法思想:从待排序的数组中选取任意一个元素【l...r】,成为分区点(基准值)开始遍历过程,每当发现比基准值小的元素就放在基准值左边,大于等于基准值的元素放在基准值右边,当结束一次遍历时,基准值一定在最终位置。一:默认以最左边为基准值( 图示 ):private static int partition(int...

2019-03-14 21:51:56 455

原创 三种方法实现链表反转(图示)

例子:1->2->3->4->5->null 反转之后:5->4->3->2->1->null一:示例代码:public class LinkedListPractice { class ListNode { int val; ListNode next; ...

2019-03-12 23:39:20 11899

原创 归并排序

归并排序:O(nlogn)归并排序和快速排序都用到了分治思想分治思想:将一个大的问题分成若干个足够小的问题,当所有小问题解决后,将结果合并起来就是整个问题的求解。 所有使用分治思想解决的问题均可以利用递归的技巧完美解决。一:归并排序算法思路:将待排序的 n个元素序列分解成两个子序列,每个里面含有n/2个元素; 对每个子序列分别调用mergeInternal函数进...

2019-03-11 14:24:23 118

原创 选择排序--选择排序

选择排序:选择排序算法的实现思路类似插⼊排序,也分已排序区间和未排序区间。但是选择排序每次会从未排序区间中找到最⼩的元素,将其放到已排序区间的末尾。图示:代码实现:class SortWork { public static void printArray(int[] array) {//工具方法 for (int i : array) { ...

2019-03-11 11:13:47 405

原创 插入排序-直接插入

直接插入排序:将一个序列分为两个区间:(1)已排序好的区间;(2)未排序的区间思想:算法刚开始时,默认第一个元素为已排序好的区间,在未排序的区间中取出【第一个数array[ i ]】和已排序区间的【最后一个数array[ j ]】行比较,若array[ i ]比array[ j ]大,直接放在以排序空间的的最后一个位置即array[ j+1 ],否则需要找到合适的位置插入。图示理解:...

2019-03-11 10:17:36 149

原创 插入排序--希尔排序及复杂度分析(图解)

希尔排序(缩小增量排序):1959年Shell发明,第⼀个突破O(n^2)的排序算法,是简单插⼊排序的改进版。基本思想:设待排序元素序列有n个元素,首先取一个整数【temp=n/2】作为间隔将全部元素分为temp个子序列,所有距离为temp的元素放在同一个子序列中,在每一个子序列中分别实行直接插入排序。然后缩小间隔temp,重复上述子序列划分和排序工作。直到最后取temp=1,将所有元素放...

2019-03-10 23:41:06 1318

原创 插入排序--二分折半插入排序:

二分折半插入排序:只是对插入排序算法的一种改进。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。示例代码:class SortWork { public static void printArray(...

2019-03-10 20:36:40 108

原创 交换排序--冒泡排序

冒泡排序:(low) 只会操作相邻的两个元素,每次对相邻的两个元素进行大小比较,看是否满足大小要求,一次冒泡至少会让 一个元素移动到最终位置。例如:对一组数 4 5 6 3 2 1,进行从小到大的排序。它的第一次冒泡过程:经过6次这样的冒泡过程,6个元素就会变成 1 2 3 4 5 6例外:如果是 1 3 2 4 5 6 这样的序列,只需遍历一次...

2019-03-10 20:11:17 193

原创 内部类的使用

内部类分类:1.成员内部类2.局部内部类(包含匿名内部类)3.静态内部类成员内部类:以身体和心脏的关系为例:/* * 成员内部类定义格式: * 修饰符 class 外部类名称{ * 修饰符 class 内部类名称{ * //... * } * //... * } * * 注意:内用外,随意访问;外用内,一定需要借助内部类对象。...

2019-03-06 23:28:28 176

原创 Java中的final关键字

final关键字代表最终,不可改变的。常见的四种方法:1.可以用来修饰一个类当final关键字用来修饰一个类,格式:public final class 类名称{ ...}含义:当前这个类不能含有任何子类。注意:一个类如果是final的,那么其中的所有成员方法都无法进行覆盖重写。2.可以用来修饰一个方法当final关键字修饰一个方法的时候,不能够被覆盖重写。...

2019-03-03 23:28:52 91

原创 接口

1.接口基本格式:接口就是多个类的公共规范。接口是一种引用数据类型,最重要的类容就是抽象方法。定义一个接口的格式:public interface 接口名称{ //接口的类容}备注:换成了关键字interface之后,编译生成的字节码文件仍然是:.java --> .class。如果是java 7,接口中可以包含的类容有:1.常量2.抽象方法如果是jav...

2019-01-23 14:05:12 696 1

原创 一个发红包的案例

案例分析:  实现案例:import java.util.ArrayList;import java.util.Random;class User { private String name;//姓名 private int money;//当前用户余额 public User() { } public User(String ...

2019-01-21 14:01:28 422

原创 抽象类和抽象方法

1.抽象的概念:图示: 2.抽象类和抽象方法:代码一:abstract class Animal { public Animal() { System.out.println("抽象父类构造方法执行!"); } //这是一个抽象方法,代表吃东西,但是具体吃什么(大括号的内容)不确定。 public abstract void...

2019-01-21 13:52:40 158

原创 Java中的super关键字和this关键字

super关键字的用法有三种:1.在子类的成员方法中,访问父类的成员变量。2.在子类的成员方法中,访问父类的成员方法。3.在子类的构造方法中,访问父类的构造方法。super关键字用来访问父类内容,而this关键字用来访问本类内容。用法也有三种:1.在本类的成员方法中,访问本类的成员变量。2.在本类的成员方法中,访问本类的另一个成员方法。3.在本类的构造方法中,访问本类的...

2019-01-20 17:03:03 192

原创 重写与重载的区别

1.重写与重载的区别:重写(Override)概念:在继承关系当中,方法的名称一样,参数列表也一样重写(Override):方法的名称一样,参数列表【也一样】。覆盖、覆写重载(Overload):方法的名称一样,参数列表【不一样】。方法覆盖重写特点: 创建的是子类对象,则优先使用子类方法。方法覆盖重写的注意事项:1.必须保证父子类之间方法的名称相同,参数列表也相同。...

2019-01-20 16:52:05 371

原创 Java中的继承

1.继承的概述 2.继承的格式在继承的关系中,“子类就是一个父类”。即,子类可以被当作父类看待。例如:父类是员工,子类是讲师,那么“讲师就一个员工”。关系:is-a。定义父类的格式:(一个普通的类定义)public class 父类名称{ //......}定义子类的格式:public class 子类名称 extends 父类名称{ //......

2019-01-20 16:40:22 95

原创 静态static的内存图

 

2019-01-19 19:03:25 136

原创 Math类

java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作。public static double abs(double num):获取绝对值public static double ceil(double num):向上取整(12.9-->13.0)public static double floor(double num):向下取整(1...

2019-01-19 18:42:00 98

原创 Arrays类

java.util.Arrays:是一个与数组相关的工具类,里面提供了大量的静态方法,用来实现数组常见的操作。public static String toString(数组):将参数数组变成字符串(按照默认格式:[元素1,元素2,元素3])。public static void sort(数组):按照升序(从小到大)对数组的元素进行排序。备注:1.如果是数值,sort默认按照升序从小...

2019-01-19 18:39:26 83

原创 static关键字

一旦使用static修饰成员方法,那么就成了静态方法。静态方法不属于对象,而是属于类的。如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它。如果有了static关键字,那么不需要创建对象,直接就能通过类名称来使用它。无论成员变量还是成员方法,如果有了static关键字修饰,都推荐使用类名称进行调用。静态变量:类名称.静态变量静态方法:类名称.静态方法()注...

2019-01-19 18:36:40 80

原创 Java中String类

java.lang.String类代表字符串API中:Java程序中的所有字符串面值(如:"abc")都作为此类的实例体现。即:程序中所有的双引号字符串,都是String类的对象。(就算没有new)也照样是。字符串的特点:1.字符串的内容永不可变。(字符串是常量)【重点】2.正是因为字符串不可改变,所以字符串是可以共享使用的。3.字符串效果上相当于是char[]字符数组,但底层...

2019-01-18 19:57:31 113

原创 ArrayList集合

数组的长度不可以发生改变。但是ArrayList集合的长度是可以随时变化的对于ArrayList来说,有一个尖括号<E>代表泛型。泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。注意:泛型只能是引用类型不能是基本类型注意事项:对于ArrayList来说,直接打印得到的不是地址值,而是内容。如果内容是空,得到的是空的中括号:[ ]public class...

2019-01-18 13:53:41 186

原创 匿名对象的使用

创建对象的标准格式:类名称 对象名 = new 类名称();匿名对象就是只有右边的对象,没有左边的的名字和赋值运算。new 类名称();注意事项:匿名对象只能使用唯一的一次,下次再使用不得不创建一个新的对象。由于匿名对象不会有任何的栈空间所指向,所以使用一次后就成为垃圾空间。class Person{ String name; public void sho...

2019-01-17 21:00:04 200

原创 猜数字游戏

Random类和Scanne类结合使用:import java.util.Random;import java.util.Scanner;/*题目:用代码模拟猜数字小游戏思路:1.首先需要产生一个随机数字,并且一旦产生不在变化。用Random的nextInt方法。2.需要键盘输入,用到Scanner3.获取键盘输入的数字,用Scanner当中的nextInt方法4.已经得...

2019-01-17 20:54:14 110

原创 Scanner类

Scanner类的功能:可以实现键盘输入数据道程序当中。引用类型的一般使用步骤:1.导包import 包路径.类名称;如果使用的目标类和当前类位于同一个包下,则可以省略包语句不写。只有java.lang包下的内容不需要导包,其他包都需要import语句。2.创建类名称 对象名 = new 类名称();3.使用对象名.成员方法名()获取键盘输入的一个int数字:int ...

2019-01-17 20:51:05 317

原创 Random类

Random类用来生成随机数字,使用时有三个步骤:1.导包import java.util.Random2.创建Random ran = new Random();//小括号当中留空即可3.使用获取一个随机的int数字(范围是int所有范围,有正负两种):int num = ran.nextInt();获取一个随机的int数字(参数代表了范围,左闭右开区间):int num ...

2019-01-17 20:46:43 153

原创 构造方法

构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用 构造方法。格式:public 类名称(参数类型 参数名称){ 方法体}注意事项:1.构造方法的名称,必须和所在的类名称完全一样,大小写也一样。2.构造方法不要写返回值类型,连void不要写。3.构造方法不能return一个具体的返回值,即不能有return出现。4.若果没有编写任何构...

2019-01-16 19:55:54 112

原创 当类中成员变量出现Boolean型时

对于基本类型当中的boolean值:       ​​​​​Getter方法一定要写成isXxx的形式,而Setter不变。package peng.day04.practice01;/** 对于基本类型当中的boolean值Getter方法一定要写成isXxx的形式,而Setter不变。* */public class Student { private String ...

2019-01-16 19:50:28 685

原创 面向对象三大特征之一的封装性

封装在Java中的体现1.方法就是一种封装2.关键字private也是一种封装封装就是将一些细节信息隐藏起来,对于外界不可见。1.public class Test1 { public static void main(String[] args) { int[] array = new int[]{23,42,123,43,45}; in...

2019-01-16 19:44:54 141

原创 对象数组

对象数组:就是指包含了一组相关的对象,但是在对象数组的使用中一定要清楚一点:数组一定要先开辟空间,但是因为其是引用数据类型,所以数组里面的每一个对象都是null值,则在使用的时候数组中的每一个对象必须分别进行实例化操作。对象数组的声明1.先定义,再开辟空间类名称 对象数组名[] = null;对象数组名 = new 类名称[长度];2.定义并开辟类名称 对象数组名[] = ne...

2019-01-15 15:40:53 194

原创 数组排序和拷贝

 数组排序:java.util.Arrays.sort(arrayName);public class Test4{ public static void main(String[] args){ int[] intData=new int[]{13,123,43,121,43}; char[] charData=new char[]{'q'...

2019-01-15 15:24:33 162

原创 数组练习

数组 :一组相关类型的变量集合并且这些变量可以按照统一的方式进行操作数组动态初始化:数据类型[ ] 数据名称 =new数据类型 [长度]eg:1.int [ ]x = new int [3];public class Test3 { public static void main(String[] args){ int[] x = new i...

2019-01-14 21:27:24 117

原创 Java方法重载和方法递归

方法重载:方法名称相同,参数的类型、顺序或个数不同(参数类表 不同)注:不能有两个名字相同,参数类型也相同但返回不同类型的方法开发原则:在进行方法重载时,要求:方法的返回类型相同。public class Test1 { public static void main(String[] args){ System.out.println(add(5,5));...

2019-01-13 20:05:53 312 2

原创 Java练习

用Java写乘法口诀表:public class Test1 { public static void main(String[] args){ for(int i=1;i<10;i++){ for(int j=1;j<=i;j++){ System.out.print(i+"*"+j+"="+i*j...

2019-01-13 19:53:26 72

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除