自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (2)
  • 收藏
  • 关注

原创 小知识点1:栈内存与堆内存

小知识点1:栈内存与堆内存当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁。因此,所有在方法中定义的局部变量都是放在栈内存中的;在程序中创建一个对象时,这个对象将被保存到运行时数据区中,一边反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。堆内存中的对象不会随方法的结束而销毁,即使方法结束后,这个对象还可能被另一个引用变量所引用(在方法的参数传递时很常见),则这个对象依然不会被销毁。只有当一

2021-02-08 14:34:13 117

原创 55、如何制作API

如何制作API只需要在自己所定义的类中,做出特定的注释即可:package lee;/** * Description: * 网站:<a href="http://www.cctv.com">CCTV频道</a><br> * Copyright(c),1999-2021,Eric<br> * This program is protected by copyright laws. <br> * Program Name:Eric&

2021-02-07 14:54:25 2029

原创 54、集合工具类Collections

集合工具类Collections常用方法:addAll():往集合中添加一些元素。(比add()方法更好用,可以一次性添加多个元素)shuffle():打乱集合顺序。sort():将集合中的元素按默认升序排序。sort()方法中可以将小于号重载,重新制定排序规则,对对象进行排序,类似于c++中结构体之间的比较,重载了小于号。way1:Comparable使用前提:被排序的集合里存储的元素,必须实现Comparable,重写接口中的方法compareTo定义排序的规则C

2020-12-28 16:20:29 109

原创 53、可变参数

可变参数如果定义一个方法需要接受多个参数,并且多个参数类型一致,可以将其简化成如下格式://JDK1.5之后出现的新特性(我觉得可变参数就是指的是:传递的相同类型参数的个数可变,就是创建了一个变长数组把这些参数接收进去了 )//修饰符 返回值类型 方法名(参数类型...形参名){ } 或//修饰符 返回值类型 方法名(参数类型[] 形参名){ }原理:可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组来存储这些参数。注意事项:一个方法的参数列表只能有一个可变参数如

2020-12-28 14:53:22 89

原创 52、LinkedHashSet集合

LinkedHashSet集合HashSet保证元素唯一,但是元素存放进去可能是没有顺序的,LinkedHashSet可以保证顺序+唯一(存进去什么顺序,取出来就是什么顺序)。底层是一个哈希表(数组+链表/红黑树)+链表:多了一条链表(记录元素的存储顺序)。它是HashsSet的子类。public class DemoLinkedHashSet { public static void main(String[] args) { HashSet<String>

2020-12-24 16:51:20 172 1

原创 51、set集合若存进去重复的对象:解决措施

set集合若存进去重复的对象:解决措施如果set集合中能存储进去重复的对象,就是说明没有重写hashCode方法和equals方法,用Alt+Insert就能自动重写hashCode方法和equals方法。//主方法调用public class HashSetPerson { public static void main(String[] args) { HashSet<Person> set = new HashSet<>();

2020-12-24 16:43:04 2424 1

原创 51、set集合报错元素唯一

set集合报错元素唯一如果set集合中能存储进去重复的对象,就是说明没有重写hashCode方法和equals方法,用Alt+Insert就能自动重写hashCode方法和equals方法。//主方法调用public class HashSetPerson { public static void main(String[] args) { HashSet<Person> set = new HashSet<>(); Person p

2020-12-24 11:23:19 393

原创 50、哈希值

哈希值哈希值:是一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来得到的地址,不是数据实际存储的物理地址)方法:int hasCode():返回该对象的哈希码值,属于Object类中的方法。String类的哈希值:String类重写Object类的hashCode方法。哈希表=数组+链表哈希表=数组+红黑树(提高查询速度)如果链表的长度超过了8位,那么就会把链表转换为红黑树。public class HashCode { public

2020-12-24 11:21:57 249

原创 49、HashSet集合

HashSet集合set接口的特点:不允许存储重复的元素没有索引,没有带索引的方法,也不能使用普通的for循环遍历Set集合在调用add方法的时候,add方法会调用元素的hashCode方法和equals方法,判断元素是否重复HashSet的特点:不允许存储重复的元素没有索引,没有带索引的方法,也不能使用普通的for循环遍历是一个无需的集合,存储元素和取出元素的顺序有可能不一致底层是一个哈希表结构(查询速度非常快)public class DemoSet { pub

2020-12-24 11:19:51 118

原创 48、LinkedList集合

LinkedList集合LinkedList集合是List接口的实现类。LinkedList集合的特点:底层是一个链表结构:查询慢,增删快里边包含了大量操作首位元素的方法注意:使用LinkedList集合特有的方法 ,不能使用多态。LinkedList集合中常用的方法:public void addFirst(E e):将指定元素插入此列表的开头。//等效于push()方法public void addLast(E e):将指定元素添加到此列表的结尾。public E getF

2020-12-24 08:53:57 98 1

原创 47、List集合

List集合特点:有序的集合,存储元素和取出元素的顺序是一致的(存储123 取出123)有索引,包含了一些带索引的方法允许存储重复的元素List接口中带索引的方法(特有)public void add(int index,E element):将指定的元素,添加到该集合中的指定位置上。public E get(int index):返回集合中指定位置的元素。public E remove(int index):移除列表中指定位置的元素,返回的是被移除的元素。public E se

2020-12-23 17:12:32 70

原创 46、斗地主案例

斗地主案例1. 案例介绍具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。2. 案例分析准备牌:牌可以设计为一个ArrayList,每个字符串为一张牌。每张牌由花色数字两部分组成,我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装。牌由Collections类的shuffle方法进行随机排序。发牌将每个人以及底牌设计为ArrayList,将最后3张牌直接存放于底牌,剩余牌通过对3取模一次发牌看牌直接打印每个集合public

2020-12-23 14:19:21 120

原创 45、泛型

泛型泛型含有泛型的类含有泛型的方法含有泛型的接口泛型的通配符通配符高级使用--受限泛型泛型泛型是一种未知的数据类型,当我们不知道使用什么数据类型的时候,可以使用泛型。泛型也可以看作是一个变量,用来接收数据类型。​ E e:Element 元素​ T t:Type 类型public class ArrayList<E>{ public boolean add(E e){} public E get(int index){}}创建集合对象的时候,就会确定泛型的数

2020-12-23 12:04:27 74

原创 44、增强for循环

增强for循环增强for循环:底层使用的也是迭代器,只是使用for循环的格式,简化了迭代器的书写。作用:用来遍历集合和数组。使遍历变得简洁。格式: for(集合/数组的数据类型 变量名:集合名/数组名){ sout(变量名); }public class Demo { public static void main(String[] args) { int[] arr = {5,4,3,2,1}; //for(集合/数

2020-12-21 14:02:39 185

原创 43、Iterator接口(迭代器)

Iterator接口迭代:即Collection集合元素的通用获取方式。在取元素之前先判断集合中有没有元素,如果有,就把这个元素取出来,继续判断,一直到把集合中的所有元素全部取出。、Iterator迭代器是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,而Collection接口中有一个方法,叫iteration(),这个方法返回的就是迭代器的实现类对象。Iterator接口的常用方法:public E next():返回迭代的下一个元素。public boolean

2020-12-21 13:38:20 105

原创 42、Collection集合

Collection集合数组vs集合:数组长度是固定的,集合的长度是可变的。数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。List接口:(Vector集合,ArrayList集合,LinkedList集合的共性抽取)有序的集合(存储和取出元素顺序相同)允许存储重复的元素有索引,可以使用普通的for循环遍历List集合:有索引,可以存储重复元素,可以保证存取顺序ArrayList:底层是数组实现的,查询快,增删慢LinkList:底层是链表实现的

2020-12-21 12:35:11 63

原创 41、包装类

包装类包装类是为了方便对基本数据类型进行操作,包装类可以解决一些基本类型解决不了的问题。基本类型不是对象,而引用类型是对象。包装类在后期需要学习的泛型上经常会使用到,例如创建一个Arrays集合,而集合之中只能存储引用数据类型,如果想存储int型(基本类型)的整数,就需要对应int型的包装类了。基本类型对应的包装类byteByteshortShortintIntegerlongLongfloatFloatdoubleDouble

2020-12-18 16:06:48 77 2

原创 40、StringBuilder类(字符串缓冲区)

StringBuilder类常用构造方法:(跟String类型用法上很像,但比String类型更加节约资源)public StringBuilder():空参构造public StringBuilder(String str):String型字符串作为参数进行构造public class StringBuilderDemo { public static void main(String[] args) { StringBuilder sb1 = new String

2020-12-18 14:45:27 106

原创 39、System类

System类常用的方法:public static long currentTimeMillis():返回以毫秒为单位的当前时间。可以用来测试程序的效率。public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):将数组中指定的数据拷贝到另一个数组中。src-源数组srcPos-源数组中的起始位置dest-目标数组destPos-目标数据中的起始位置length-要复制

2020-12-17 16:32:23 59

原创 38、日历类(Calender类)

Calender类日历类,也是用来处理时间日期的,与Date类似。由于Calendar类是个抽象类,所以无法直接定义Calendar对象,要用getInstance()方法定义父类对象引用子类对象,即多态。对象定义的方法:Calendar calendar = Calendar.getInstance();//getInstance()方法,可以得到Calendar类的子类Calendar类中常用的成员方法:public int get(int field):返回给定日历字段的值。p

2020-12-17 15:28:31 1841

原创 37、日期时间类(Date、DateFormat)

日期时间类Date类空参构造方法:​ Date():空参构造方法,获取的是当前系统的日期和时间实参构造方法:​ Date(long date):传递毫秒值,把毫秒转换成Date日期成员方法:​ long getTime():Date类的成员方法,把日期转化成毫秒//Date():空参构造方法,获取的是当前系统的日期和时间Date date1 = new Date();System.out.println(date1);//Date(long date):传递毫秒值,把好眠转换成D

2020-12-17 12:46:06 233 3

原创 36、Object类,及其常用的方法的覆盖重写(toString,equals)

Object类,及其常用的方法的覆盖重写(toString,equals)Object类toString()方法equals()方法Objects类中的equals()方法Object类类Object是类层次结构的根(最顶层)类。每个类都使用了Object类作为父类。所有对象(包括数组)都实现这个类的方法。toString()方法作用:打印对象的信息重写前:打印的是包名类名@地址值重写后:打印的是对象中的属性值@Override public String toString

2020-12-15 16:00:04 200

原创 35、匿名内部类

匿名内部类如果接口的实现类(或者是父类的子类)只需要使用唯一的一次,那么这种情况下就可以省略掉该类的定义,而改为使用【匿名内部类】。匿名内部类的定义格式:接口名称 对象名 = new 接口名称(){ //覆盖重写所有抽象方法};//最后的分号别忘了//使用匿名内部类MyInterface obj = new MyInterface() { @Override public void method() { System.out.println("匿名内部类实现了方法!");

2020-12-15 13:02:51 73

原创 34、局部内部类

局部内部类如果一个类是定义再一个方法内部的,那么这就是一个局部内部类。“局部”:只有当前所属的方法才能使用它,出了这个方法就不能使用了。定义格式:修饰符 class 外部类名称{ 修饰符 返回值类型 外部类方法名称(参数列表){ class 局部内部类名称{ //... } }}public class Outer { public void methodOuter(){ class Inner{//局部内部类 int nu

2020-12-11 17:05:34 137

原创 33、成员内部类

成员内部类如果一个事务的内部包含另一个事务,那么这就是一个类内部包含另一个类。例如:身体和心脏的关系,汽车和发动机的关系。分类:成员内部类局部内部类(包含匿名内部类)成员内部类的定义格式:修饰符 class 外部类名称{ 修饰符 class 类名称{ //... } //...}注意:内用外,随意访问;外用内,需要内部类对象。如何使用成员内部类:间接方式:在外部类的方法中,使用内部类,然后main只是调用外部类的方法。直接方式

2020-12-11 16:00:46 100

原创 32、权限修饰符

权限修饰符:Java中有四种权限修饰符:public > protected > (default) > private注意:(default)并不是关键字“default”,而是根本不写。能否访问该权限修饰符修饰的成员变量publicprotected(default)private同一个类(我自己)√√√√同一个包(我邻居)√√√×不同包子类(我儿子)√√××不同包非子类(陌生人)√×××同一

2020-12-11 13:25:26 110

原创 31、final关键字

final关键字final关键字代表最终、不可改变的。常见的四种用法:可以用来修饰一个类可以用来修饰一个方法还可以用来修饰一个局部变量还可以用来修饰一个成员变量当final关键字用来修饰一个类的时候,格式:public final class 类名称{ //...}含义:当前这个类不能有任何的子类(太监类)注意:一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写(因为没儿子。)当final关键字用来修饰一个方法的时候,这个方法就是最终方法。也就是

2020-12-10 15:12:33 70

原创 30、接口案例

接口案例接口:public interface USB { public abstract void open(); public abstract void close();}电脑类:public class Computer { public void powerOn(){ System.out.println("笔记本电脑开机"); } public void powerOff(){ System.out.print

2020-12-10 12:17:25 137

原创 29、对象的转型

对象的向上转型(无条件正确)对象的向上转型,其实就是多态写法:格式:父类名称 对象名 = new 子类名称();eg:Animal animal = new Cat();对象的向下转型(需要前提条件)格式:子类名称 对象名 = (子类名称) 父类对象;将父类对象,【还原】成为本类的子类对象。eg: Animal animal = new Cat();​ Cat cat = (Cat) animal类似于: int num=(int) 10.0;注意:必须保证对象本来创

2020-12-09 19:28:51 73

原创 28、多态性

多态性面向对象三大特征:封装性、继承性 、多态性。extends继承或implements实现,是多态性的前提。小明是一个学生(学生形态),同时也是一个人(人类形态)。小明是一个对象,这个对象既有学生形态,也有人类形态。一个对象拥有多种形态,这就是对象的多态性。代码中体现多态性,其实就是一句话:父类引用指向子类对象,即父类变量引用子类对象。格式: 父类名称 对象名 = new 子类名称(); 或者 接口名称 对象名 = new 实现类名称();多态性中,如果调用的是重名的成员方

2020-12-09 19:25:52 98

原创 27、接口中的方法重名问题以及接口的多继承

接口使用的注意事项及其重要特点:使用接口时,应注意:接口时没有静态代码块或者构造方法的。public interface MyInterface { static{ } public MyInterface(){ }}//此乃错误写法一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。public class MyInterfaceImpl implements MyInterfaceA,MyIn

2020-12-08 20:06:33 662 1

原创 26、接口中的各类方法及其常量

接口中的各类方法及其常量接口接口中包含的内容接口中的抽象方法接口中的默认方法接口中的静态方法接口中的私有方法接口中的成员变量(常量)总结接口接口就是多个类的公共规范。接口是一种引用数据类型,最重要的内容,就是其中的:抽象方法。接口的格式:public interface 接口名称{ //接口内容}接口中包含的内容如果是Java 7,那么接口中可以包含的内容有:常量(不能改变的量)抽象方法如果是Java 8,还可以额外包含有:默认方法静态方法如果是Java 9,还

2020-12-08 14:54:43 537

原创 25、【案例】发红包案例-有关继承的使用

发红包案例分为三个类:用户类用来共性抽取用户类{ 姓名; 余额;}群主类 extends 用户类{ 发红包的方法;}普通成员类 extends 用户类{ 收红包的方法;}发红包的逻辑,三要素:返回值类型:ArrayList方法名称:send参数列表:总共发多少钱 int totalMoney 2. 分成多少份 int countpublic ArrayList<Integer> send(int totalMon

2020-12-07 15:19:37 71

原创 24、抽象方法和抽象类的写法

抽象方法和抽象方法的格式抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束抽象类:抽象方法所在的类,必须是抽象类才行,在class之前协商abstract即可public abstract class Animal { //这是一个抽象方法,代表吃东西,但是具体吃什么(大括号的内容)不确定 public abstract void eat();}如何使用抽象类和抽象方法:不能直接创建new抽象类对象。必须用一个子类来继承抽象父亲。子

2020-12-06 22:03:47 3728

原创 23、java继承的三个特点

java继承的三个特点:单继承:一个类的直接父类只能有唯一一个class A{}class B extends A{}//正确class C{}class D extends A,C{}//错误多级继承:一个类可以有一个父类,父类还能有父类的父类class A{}class B extends A{}class C extends B{}//正确一个类只能有一个直接父类,但是一个父类可以有多个子类class A{}class B extends A{}class C

2020-12-06 20:39:53 63

原创 22、this关键字的三种用法

this关键字的三种用法在本类的成员方法中,访问本类的成员变量在本类的成员方法中,访问本类的另一个成员方法在本类的构造方法中,访问本类的另一个构造方法在用this来调用构造方法时,要注意this(…)调用也必须是构造方法的第一个语句,唯一一个super和this两种构造调用不能同时使用,因为二者都要求自己是唯一一个语句public class Zi extends Fu{ int num=20; public Zi(){ this(1)

2020-12-06 20:04:23 87

原创 21、super关键字的用法

super关键字的用法在子类的成员方法中,访问父类的成员变量。在子类的成员方法中,访问父类的成员方法。在子类的构造方法中,访问父类的构造方法。public class Fu { int num=10; public void method(){ System.out.println("父类方法"); }}public class Zi extends Fu{ int num=20; public void methodZi()

2020-12-04 21:37:58 128

原创 20、父子类的构造方法

继承关系中,父子类构造方法的访问特点:子类构造方法中有一个默认隐含的"super()"调用,所以一定是先调用的父类构造,后执行子类构造。可以通过super关键字在子类中调用父类重载构造。super的父类构造调用,必须是子类构造方法的第一个语句。不能一个子类构造调用多次super子类必须调用父类构造方法,不写则赠送super(),写了则用写的指定的super调用,super只能有一个,还必须是第一个。public class Fu { public Fu(){ Sy.

2020-12-04 20:55:15 249

原创 19、重写(Override)vs重载(Overload)

重写vs重载重写(Override):方法的名称一样,参数列表【也一样】。//覆盖、覆写。重载(Overload):方法的名称一样,参数列表【不一样】。方法的覆盖重写特点:创建的是子类对象,则优先用子类方法。方法覆盖重写的注意事项:必须保证父子类之间方法的名称相同,参数列表也相同。@Override:写在方法前面,用来检测是不是有效的正确覆盖重写。它是写在子类里面的(这个注解就算不写,只要满足要求,也是正确的方法覆盖重写。)public class Fu { public

2020-12-04 20:20:46 182

原创 18、继承以及继承中成员变量和成员方法的重名问题

继承继承类别写法:定义父类格式:public class 父类名称{​ //…}定义子类格式://extends 扩大;扩展public class 子类名称 extends 父类名称{​ //…}父类子类中访问成员变量的规则:(父类子类中变量重名问题)在父子类的继承关系中,如果成员变量重名,则创建子类对象时,访问有两种方式:直接通过子类对象访问成员变量规则:等号左边时谁,就优先用谁,没有则向上找间接通过成员方法访问成员变量规则:该方

2020-12-04 19:31:21 468 2

Mysql5.7安装配置.md

Mysql5.7安装配置.md

2021-03-04

JDK1.8安装配置.md

JDK1.8安装配置.md

2021-03-04

空空如也

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

TA关注的人

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