自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 八大排序——基数排序

基数排序基本思想:将所有待比较数值统一为同样的数值位长度,数位较短的在前面补零,然后从最低位开始,依次进行排序。从最低位到最高位排序完成后,数列就变成了一个有序数列。基数排序是经典的通过牺牲空间换取时间的一种排序方式,是稳定的。package com.at.sort;import java.util.Arrays;public class RadixSort { public static void main(String[] args) { int arr[] = {

2021-05-06 21:55:35 190

原创 八大排序——快速、归并排序

package com.at.sort;import java.util.Arrays;/** * @author shkstart * @creat ${2020}-${10}-${22}${14:54} *///快排public class QuickSort { public static void main(String[] args) { int[] arr = {-9, 78, 0,0,-9,0 ,23, -567, 70}; quic.

2021-05-06 21:49:29 125

原创 八大排序——插入、希尔排序

在这里插入代码片package com.at.sort;import java.util.Arrays;public class InsertSort { public static void main(String[] args) { int arr[] = {101, 34, 119, 1}; System.out.println("排序前:" + Arrays.toString(arr)); insertSort(arr); }.

2021-05-06 21:46:40 117

原创 八大排序——冒泡、选择排序

冒泡排序:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻的元素,如果发现逆序列则交换,使得值较大的元素逐渐从前向后移动。因为在排序过程中,各元素不断接近自己的位置,如果下一趟比较过程中没有发生交换,说明序列有序。可以在排序过程中设置一个flag来判断元素是否进行过交换,进而减少不必要的比较。规则:一定进arr.length-1次 大的循环;每一趟排序的次数在逐渐减少package com.at.sort;import java.util.Arrays;/** * @a

2021-05-06 21:40:38 92

原创 2021-04-19

数据节构4.19实现一个二维数组、稀疏数组的相互转换——>以五子棋为例public class SparseArray { public static void main(String[] args) { //创建一个原始的二维数组11*11 //0:表示没有棋子,1:表示黑子,2:表示蓝子 int [][] chessArr1=new int[11][11]; chessArr1[1][2]=1; che

2021-04-19 11:52:56 81 1

原创 泛型Generic

在集合中使用泛型:1.集合接口或集合类在jdk5.0时都修改为带泛型的结构2.在实例化集合类时,可以指明具体的泛型类型3.指明后,在集合类或集合接口中凡是定义类或接口时,内部结构使用到类的泛型的位置,都指定为实例化时类的类型4.泛型的类型必须是类,不能是基本数据类型,使用时用包装型5.实例化时若没有指明泛型的类型,默认类型为java.lang.Object类型public class GenericTest { //在集合中使用泛型之前的情况: @Test public

2021-03-30 21:53:57 55

原创 Calendar日历类的使用

@Test public void testCalender(){ /* 1.实例化: 1.创建其子类(GregorianCalendar)的对象 2.调用其静态方法getInstance() */ Calendar calendar = Calendar.getInstance(); System.out.println(calendar.getClass());//class java.util.GregorianCalenda

2021-03-30 20:28:58 646

原创 类型转换

基本数据类型直接的运算规则:1.自动类型提升:byte、char、short -->int–>long–>float–>double当容量小的数据类型变量与容量大的数据类型的变量作运算时,自动提升为容量大的数据类型。特别的:当byte、char、short三种类型的变量做运算时,结果为int类型。2.强制类型转换:自动类型提升的逆运算。需要增加强制转换符()。强制类型转换,可能导致精度损失。class VariableTest{ public static vo

2021-03-30 20:23:31 54

原创 Scanner 从键盘获取多种类型数据、随机数

Scanner1.导包:import java.util.Scanner;2.Scanner的实例化:Scanner scan=new Scanner(System.in)3.调用Scanner类的相关方法String next();int nextInt();boolean nextBoolean();double nextDouble();char charAt(0);获取位置字符为0如果输入的数据类型与要求的数据类型不匹配时,会异常:InputMisMatch

2021-03-30 20:21:49 126

原创 线程死锁

死锁:不同的线程分别占用对方需要的同步资源,都在等待对方放弃自己所需的同步资源,进而形成了死锁。1.出现死锁后,不会出现异常,不会出现提示,所有的线程都处于阻塞状态,无法继续2.我们在使用同步时,要避免出现死锁synchronized与Lock:1.Lock是显式锁,需要手动开启和关闭,synchronized是隐式锁,出来作用域之后会自动释放2.Lock只有代码块锁,synchronized有代码块和方法锁3.两者都可以解决线程安全问题优先使用:lock----同步代码块-----同步方法

2021-03-30 20:17:53 70

原创 String/StringBuilder/StringBuffer三者的异同

String:不可变的字符串序列,底层使用char[ ]存储;StringBuilder:可变的字符串序列,线程不安全,效率高;底层使用char[ ]存储;StringBuffer:可变的字符串序列,线程安全;底层使用char[ ]存储;源码分析:String str=new String();//char[ ] value=new char[0];String str=new String(‘a’,‘c’);//char [ ] value=new char [ ]{‘a’,’'c};Stri

2021-03-30 17:55:03 75

原创 remove(int index)与remove(Object obj)区别

public class ExerTest { @Test public void test(){ ArrayList arrayList = new ArrayList(); arrayList.add(1); arrayList.add(2); arrayList.add(3); updateList(arrayList); System.out.println(arrayList); } pr

2021-03-30 17:45:49 282

原创 比较器comparable comparator(接口)

方式一:自认排序Comparable接口强行对实现它的每个类对象进行整体排序——自然排序。方式二:定制排序使用Comparator的对象进行排序,重写compare(Object o1,Object o2)方法,比较o1和o2的大小;如果返回正整数,则o1>o2;返回0,表示两者相等;返回负整数,表示o1<o2.public class Goods implements Comparable{ private String name; private double

2021-03-30 17:17:41 106

原创 枚举类enum

类的对象只有有限个,且是确定的当定义一组常量时,建议使用枚举类public class SeasomTest { public static void main(String[] args) { Season spring = Season.SPRING; System.out.println(spring); }}//自定义枚举类class Season{ //1.声明Season对象的属性:private final来修饰 priv

2021-03-29 22:01:54 126 4

原创 Collection常用方法1

public class CollectionTest { @Test public void test1(){ Collection coll=new ArrayList();// 1.add(object e):将元素E添加到集合coll中 coll.add("AA"); coll.add("BB"); coll.add("AA"); coll.add(123);//自动装箱//

2021-03-29 21:56:22 74

原创 Collection常用方法

//Collection接口中方法的使用:// 要求:向Collection接口的实现类的对象中添加数据obj时,要求obj所在类要重写equal().public class CollectionTest1 { @Test public void test1(){ Collection coll=new ArrayList(); //6.contains(Object obj):判断当前集合中是否包含obj //7.我们在判断时会

2021-03-29 21:55:22 74

转载 TreeMap两种排序

public class TreeMapTest { //向TreeMap中添加key-value,要求key必须是由同一个类创建的对象 //因为要按照key进行排序:自然排序、定制排序 //自然排序(User 已经定义class)@Test public void test(){ TreeMap map = new TreeMap(); User u1 = new User("Tom", 23); User u2 = ne

2021-03-29 21:53:35 330

原创 Map常定义方法:

总结:添加:put(Object key,Object value)删除:remove(Object key)修改:put(Object key,Object value)查询:get(Object key)长度:size()遍历:keySet()/values()/entruSet()public class MapTest { @Test public void test(){// 1.添加 Map map = new HashMap();

2021-03-29 21:51:26 437

原创 list常用方法-增删改查插长度遍历等

public class ListTest1 { @Test public void test1(){ ArrayList list = new ArrayList(); list.add(123); list.add(456); list.add("AA"); list.add(456); list.add(new Person("TOM",12)); System.out.p

2021-03-29 21:47:29 188

原创 Map存储数据以及实现类的结构

Map存储数据的特点:双列数据,存储key-value数据key:无序的/不可重复的-----Set存储key所再的类需要重写eauql()和hashCode()value:无序的/可重复的------Collection存储value所在的类需要重写equals()key-value:无序的/不可重复的----Set存储一个键值对:key-value构成了一个Entry对象Map中的entry:无序的/不可重复的,使用Set存储entry...

2021-03-29 21:40:58 522

原创 获取两个字符串中的最大相同子串

****获取两个字符串中的最大相同子串,比如: str1="abcwerthelloyuiodefabcdef";str2="cvhellobnm" 提示:将短的那个串进行长度依次递减的子串与较长的串比较**前提:两个字符串中只有一个最大相同子串public String getMaxSameString(String str1,String str2){ if(str1!=null&&str2!=null){ String maxStr=(st

2021-03-17 15:47:26 139

原创 获取一个字符串在另一个字符串中出现的次数

public class StringDemo1 { /* 获取一个字符串在另一个字符串中出现的次数 比如:获取“ab”在"abkkcadkabkebfkaabkskab"中出现的次数 */ public int getCount(String mainStr,String subStr){ int mainLength=mainStr.length(); int subLength=subStr.length();

2021-03-17 15:45:43 196

原创 将一个字符串进行反转

public class StringDemo { //将一个字符串进行反转 //将字符串中指定部分进行反转,比如:“abcdefg”反转为“abfedcg” //方式1:转换为char[] public String reverse(String str,int startIndex,int endIndex){ if(str!=null){ char [] arr=str.toCharArray();// 将字符串转换为字符数组

2021-03-17 15:44:22 288

原创 Date

public void test(){long time=System.currentTimeMillis();//返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差//称为时间戳System.out.println(time);}java.util.Date:1.两个构造器的使用:1.Date():创建一个对应当前时间的Date对象2.创造指定毫秒数的Date对象2.两个方法的使用:1.toString():显示当前的年月日时分秒2.getTime():获取当前.

2021-03-16 22:01:59 57

原创 StringBuffer类的常用方法

@Testpublic void test(){StringBuffer s1=new StringBuffer("abc");s1.append(1); //进行字符串拼接s1.appenf('1');System.out.println(s1); //abc11//——以下均基于以上代码//s1.delet(2,4) //删除指定位置的内容——ab1//s1.replace(2,4,"hello"); //替换[2,4)上的内容为hello——abhello//s.i

2021-03-16 21:48:15 81

原创 String/StringBuilder/StringBuffer的异同

String:不可变的字符序列,底层使用char[ ]进行存储;StringBuffer:可变的字符序列;线程是安全的,底层使用char[ ]进行存储;StringBuilder:可变的字符序列,线程是不安全的,效率高,底层使用char[ ]进行存储。源码分析:String str=new String();//char[ ] value=new char[0];String str1=new String(“abc”);//char[ ] value=new char[ ]{‘a’,‘b’,‘c

2021-03-16 21:26:06 46

原创 线程的声明周期

要想实现多线程,必须在主线程中创建新的线程对象。JAVA中使用Thread类及其子类的对象来表示线程,在它的完整的生命周期一般要包括5类:新建:当一个Thread类或子类的对象被声明并创建时,新生的线程对象就处于新建状态就绪:处于新建状态的线程被start(),将进入线程队列等待CPU时间片,此时已经具备了运行的条件,只是未分配到CPU资源运行:当就绪的此案城被调度并获得CPU资源,进入运行状态,run()方法定义了线程的操作与功能阻塞:在某种特殊的情况下,被人为挂起或执行输入输出时,让出CPU并

2021-03-15 22:04:46 388

原创 单例设计模式——饿汉式与懒汉式

饿汉式:1.私有化类的构造器2.每部创建类的对象3.提供公共的静态的方法,返回类的对象4.要求此对象也必须声明为静态的懒汉式:1.私有化类的构造器2.声明当前类的对象,没有初始化3.声明公共的静态的方法,返回当前对象的方法4.次对象也必须声明为static区别饿汉式和懒汉式:饿汉式:坏处:对象加载时间过长好处:饿汉式的线性安全的懒汉式:好处:延迟了对象的创建(需要时才创建)坏处:线程不安全1、饿汉式:在程序启动或单件模式类被加载的时候,单件模式实例就已经被创建。2、懒汉式

2021-03-13 17:10:53 215

原创 2021-03-11

/**多线程的创建,方式一:继承于thread类 1.创建一个继承于thread类的子类 2.重写thread类的run()-->将此线程执行的操作声明在run()中 3.创建thread类的子类的对象 4.通过此对象调用start() **例子:遍历100以内的所有偶数***/// 1.创建一个继承于thread类的子类class MyThread extends Threa

2021-03-11 21:23:01 63

原创 JAVA异常处理

JAVA的异常处理方式方式一:try-catch-finally方式二:throws+异常类关于异常对象的产生:1.系统自动生成的异常对象2.手动的生成一个异常对象,并抛出(throw)try-catch-fianlly结构可以嵌套:体会:1.使用try-catch-fianlly处理编译时异常,使得程序在编译时不再报错,但运行时仍可能报错,相当于我们使用try-catch-finally将一个编译时可能出现的异常,延迟到运行时出现,2.开发中,由于运行时异常比较常见,所以我们通常就

2021-03-11 15:21:13 42

空空如也

空空如也

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

TA关注的人

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