自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 堆和栈的空间差异

可以看出打印之后乱码了(或者是空),这是因为函数执行结束之后,它的栈空间受操作系统的管理,栈空间会被释放,来给下一个函数使用。因为堆空间申请以后不会因为函数结束以后得到释放,只要进程没有消亡就会一直存在。

2024-03-29 23:24:34 168

原创 Stream流(Java)

Stream也叫Stream流,是JDK8开始新增的一套API,可以用于操作集合或者数组的数据。Stream流大量的结合了Lambda的语法风格来编程,提供了更加简单的方式操作集合或者数组中的数据,代码更简洁。

2024-03-04 23:41:43 544

原创 Map集合的底层原理

第一次添加数据的时候,会生成一个16的数组,然后作为一个Entry对象放在一起,利用键计算哈希值,与底层数组的长度进行某个计算然后放入数组,如果有新元素也要放在老元素的位置,会把新元素挂在老元素的下面,一旦到了12,会把数组扩容成原来的两倍,然后把数据重新算到新的数组里,如果长度超过8&数组长度>=64,会转换成红黑树。HashMap跟HashSet的底层原理是一模一样的,都是基于哈希表实现的,只是Set集合中的元素只要键数据,不要值数据而已。实际上Set集合就是基于Map实现的。

2024-03-04 13:08:09 217

原创 Map集合的遍历方式

常见形式:1.键找值:先获取全部键,然后再遍历键来找值2.键值对:把“键值对”看成一个整体进行遍历3.Lambda。

2024-02-27 13:55:53 330

原创 Map集合概述、常用方法

Map是双列集合,格式:{key1=value1,key2=value2,key3=value3,...},一次需要存异地数据作为一个元素,Map集合的每个元素"key=value"称为一个键值对/键值对对象/一个Entry对象,Map集合也被叫做"键值对集合"。Map集合的所有键不允许重复,但是值可以重复,键和值是一一对应的,每一个键只能找到自己对应的值。需要存储一一对应的数据的时候适合使用Map。Map体系:Map体系的特点:Map系列集合的特点都是由键决定的,值只是一个附属品,不做要求。

2024-02-25 20:41:46 247

原创 集合的并发修改异常问题

使用迭代器遍历集合时,同时在删除集合中的数据,程序就会出现并发修改异常的错误。注意:使用增强for或者lambda也会引起异常的错误并且无法解决。

2024-02-25 17:40:18 210

原创 可变参数、Collections类

是一种特殊的形参,定义在方法、构造器的形参列表里。

2024-02-24 22:12:27 172

原创 Set集合(Java) 及底层原理

SET<E>是一个接口,添加的元素是无序的:添加数据的顺序和获取出的数据顺序不一致;不重复,无索引。实现类:1.HashSet:无序不重复无索引2.LinkedHashSet:有序不重复无索引3.TreeSet:排序不重复无索引。

2024-02-24 00:11:46 916

原创 LinkedList应用场景(队列、栈)

入队操作:出队操作:注意:对于栈来说,可以直接使用push()方法入栈,不过push()的源代码还是addFirst(),同样的pop()方法出栈的源代码也是removeFirst():

2024-02-22 17:11:10 156

原创 List集合

List系列集合特点:有序、可重复、有索引ArrayList:有序、可重复、有索引LinkedList:有序、可重复、有索引List集合因为支持索引,所以多了很多与索引相关的方法,Collection的功能List也都继承了。

2024-02-22 16:52:06 220

原创 Java集合1——Collection

单列集合体系Collection:常用的两个接口:List、SetList又分为一些实现类比如ArrayList和LinkedListSet分为一些实现类比如HashSet、TreeSet@Override'}';//1.创建一个集合容器负责存储多个电影对象mm.add(new Movie("电影1",1,"演员1"));mm.add(new Movie("电影2",2,"演员2"));

2024-02-22 15:08:50 417

原创 异常(Java)

Java无法为全部的问题都提供异常类来代表,如果某种问题想通过异常来表示,就需要自定义异常1.定义一个异常类继承RuntimeException2.重写构造器3.通过 throw new 异常类来创建异常对象并抛出在生成中选择构造函数,一般选择前两个://需求:保存一个合法的年龄try {System.out.println("底层执行成功");System.out.println("底层出现了bug");System.out.println("年龄成功被保存:" + age);

2024-02-21 16:10:45 414

原创 正则表达式(Java)

正则表达式是由一些特定的字符组成,代表一个规则,可以用来检验数据格式是否合法,也可以在一段文本中查找满足要求的内容。

2024-02-18 23:27:05 739

原创 JDK8新特性:方法引用

进一步简化Lambda表达式。

2024-02-18 15:49:31 299

原创 Lambda表达式

Lambda表达式是jdk8开始新增的一种语法形式;作用:用于简化匿名内部类的代码写法格式:(被重写方法的形参列表)->{被重写方法的方法体代码注意:大部分函数式接口上面都可能会有一个@Functionallnterface的注解,有该注解的接口就一定是函数式接口。

2024-02-17 17:51:20 441

原创 Arrays类及其API

Arrays是用来操作数组的一个工具类。

2024-02-17 16:35:12 229

原创 JDK8新增的时间

设计更合理,功能更丰富,使用更方便,都是不可变的对象,修改后会返回新的事件对象不会丢失最开始的时间,线程安全,能精确到毫秒、纳秒。

2024-02-16 23:39:27 533

原创 Calendar的使用(Java)

Calendar是一个抽象类,不能直接使用,Calendar提供了一个类方法getInstance,用于获取此类型的通用对象。如果不使用Calendar的话,我们需要定义字符串记住这个日期,然后把字符串解析成Date日期对象,通过Date日期对象获取其毫秒值,然后增加一个月的毫秒值,再格式化时间毫秒值得到结果。但是我们用Calendar来解决的话就很简单,Calendar代表的是系统此刻时间对应的日历,通过它可以单独获取、修改时间中的年月日时分秒。直接从需求来理解:将2024年2月16日增加一个月。

2024-02-16 18:01:02 347

原创 Date类(Java)、SimpleDateFormat

Date代表的是日期和时间。

2024-02-16 11:56:30 160

原创 BigDecimal的常用API

BigDecimal用于解决浮点型运算时结果出现失真的问题。这里0.2+0.1等于0.3就出现了失真。

2024-02-15 22:45:32 190

原创 Math、System、Runtime类的方法使用

代表数学,是一个工具类,里面提供的都是对数据进行操作的一些静态方法。abs():获取参数绝对值ceil():向上取整floor():向下取整round():四舍五入max():获取两个整型值中的较大值pow(double a, double b):返回a的b次幂的值random():返回值为double的随机值,范围[0.0,1.0)

2024-02-15 14:06:43 288

原创 StringJoiner

JDK8开始有,用来操作字符串,不仅可以提高字符串的操作效率,而且在某些场景使用它操作字符串,代码会更加简洁。toString():返回一个字符串。add():添加数据返回对象本身。length():返回长度。

2024-02-15 12:08:35 168

原创 StringBuilder

StringBuilder代表可变字符串,相当于一个容器,里面的字符串可以改变,用来操作字符串。用法与StringBuilder一模一样,但StringBuilder是线程不安全的,StringBuffer是线程安全的。相关案例:设计一个方法返回任意整型数组的内容,要求返回的数组内容格式如[1,2,3]6. toString():转换成String类型。5. substring():截取一段字符串。3. length():返回字符串长度。1. append():拼接方法。4. reverse():反转。

2024-02-15 11:59:40 290

原创 Objects类、包装类

Objects类是一个工具类,包含static使用程序方法,是一个最终类不能被继承,提供了很多操作对象的静态方法。

2024-02-14 15:44:57 511

原创 toString()、equals()、clone()用法

克隆分两种类型,一种是浅克隆,一种是深克隆,前者是数据一模一样,如果是引用类型拷贝的只是地址,比如字符串的常量池中的地址;后者基本类型的数据直接拷贝,字符串数据拷贝的还是地址,但如果对象中包含的其他对象,比如数组之类的,不会拷贝地址,而是会创建新对象。super去调用父类Objected中的clone方法,同时要注意克隆类对象的话得实现一个Cloneable的接口,这个接口称为一个标记接口,实现了这个规则才拥有clone的能力,实现了这个类才能克隆。克隆的对象会返回Object类型。

2024-02-14 12:50:41 450

原创 泛型(Java)

如下需要的结果类型是String,实际的是obj,那么我们来看看强制类型转换以后会发生什么:报错:类型转换异常,不能把对象直接转换成字符串为了避免这种异常,可以用泛型解决:当我们在ArrayList后面加上<String>以后,可以看到add提示中就是String变量了。

2024-02-13 23:57:57 499

原创 stata学习(2)

先导入自带数据,保留几个变量方便操作。row(N)也就是矩阵N的行数。qfit是曲线,lfit是直线。

2024-02-07 11:23:56 310

原创 Stata学习(1)

实现人机交互来导入一个自带数据:sysuse是导入系统自带的数据,auto导入该数据的名称,后面的clear是清除之前的数据:展示计算结果、查找功能在Edit的find可以实现查找功能,或者ctrl+f;

2024-02-06 22:19:01 291

原创 枚举(Java)

枚举是一种特殊的类。格式:修饰符 enum 枚举类名{对象名称1,对象名称2,....;其他成员...

2024-02-05 00:57:12 235

原创 内部类(Java)

如果一个类定义在另一个类的内部,那么这个类就是内部类。:成员内部类、静态内部类、局部内部类、匿名内部类。

2024-02-02 14:15:44 230

原创 接口的多继承

2.一个类继承了父类,又同时实现了接口,如果父类和接口中有同名的默认方法,实现类 会优先用父类的。接口的多继承的好处:假如有一个实现类要继承三个接口,现在只需要将多个接口“合并”为一个接口,就可以便于实现类实现。接口的多继承也就是一个接口可以同时继承多个接口,也是使用extends关键字实现。注意:1.如果一个接口或者类继承了两个拥有同样名字的方法的接口,会报错。

2024-01-31 22:01:58 258

原创 JDK8新增的接口方法

私有方法也是对象的方法,但直接用实现类对象使用不了,可以通过在默认方法里面访问私有方法。新增了这三种方法,意味着接口的功能增强,更易于拓展和维护。

2024-01-31 21:32:44 221

原创 Java--接口、关键字implements

Java提供了一个关键字interface,使用这个关键字可以定义出接口。接口不能创建对象:那么接口不能用来创建对象,那么应该怎么被使用呢?接口是用来被类实现的,实现接口的类称为实现类,关键字implements。实现可以理解为继承,一个类可以实现多个接口,实现类实现多个接口的话,需要重写全部接口的全部抽象方法,否则要定义为抽象类:重写完便不会报错:提示一下直接alt+enter选:就可以快速重写了。顺便说一句,为什么方法重写要用public修饰,自然是父类的public被省略了。

2024-01-31 17:30:37 322

原创 抽象类(Java)、模板方法设计模式

在Java中有abstract关键字,就是抽象的意思,可用来修饰类和成员方法。用abstract来修饰类,那这个类就是抽象类;修饰方法,那这个方法就是抽象方法。1.抽象类中不一定有抽象方法,但只有抽象类是有抽象方法的类2.类该有的成员变量、方法、构造器抽象类都可以有3.抽象类不可以创建对象,只能作为一种特殊的父类,让子类继承并实现4.一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。

2024-01-30 19:34:23 988

原创 常量(Java)

使用了static final修饰的成员变量就被成为常量;不过命名时最好用大写英文单词,多个单词使用下划线连接起来。优点:代码可读性维护性更好。作用是记录系统的配置信息。

2024-01-30 14:42:18 87

原创 final关键字

final是最终的意思,修饰类时表示不能被继承,修饰方法时表示不能被重写,修饰变量时表示只能被赋值一次。

2024-01-30 14:35:26 257

原创 多态、多态的特点、类型转换(Java)

多态是在继承/实现情况下的一种现象,表现为:对象多态、行为多态。对象多态就比如水果可以是苹果也可以是西瓜。行为多态如何分辨呢,编译的时候会看People类中是否有run方法,运行的时候看Teacher中或者Student中的run方法。:有继承/实现关系;存在父类引用子类对象;存在方法重写。:多态是对象、行为的多态,Java中的属性(成员变量)不谈多态。:在多态形式下,右边对象是解耦合的,更便于拓展和维护。并且定义方法时,使用父类类型的形参,可以接收一切子类对象,拓展性更强。

2024-01-30 00:12:55 209

原创 使用this调用兄弟构造器

在任意类的构造器中,都可以通过this(...)去调用该类的其他构造器。这样可以复用兄弟构造器的代码。

2024-01-29 22:48:50 153

原创 子类构造器的特点

原理:在每个子类构造器的第一行都会隐藏super();的代码,写不写都默认存在,这个就是用来调用父类无参构造器的。说明在创建子类对象调用自己无参数构造器的时候,会先调用父类的无参数构造器然后再执行自己的。子类的全部构造器,都会先调用父类的构造器,再执行自己。子类的有参构造器会先调用父类的无参构造器。这样子类的全部构造器就不会报错了。

2024-01-29 22:34:10 168

原创 子类访问成员的特点、super关键字

在子类方法中访问其他成员(成员变量、成员方法),是依照的。例如:这样会输出子类名字但是如果在方法中再加一个名字:这样再执行这个成员方法就会输出局部名称同时要记住当局部变量和成员变量冲突的时候可以加this:这样还是会打印子类名字。

2024-01-29 13:48:18 523

空空如也

空空如也

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

TA关注的人

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