自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java:异常

(1)所有异常都继承了Throwable类,都是可抛出的(2)Error是无法处理的,如果出现只有一个结果:JVM终止(3)Exception是可以处理的(4)异常的分类1.所有的类的子类,这种异常也叫做运行时异常非受控异常未检查异常(UncheckedException)2.Exception的子类(除RuntimeException外),这种异常也叫做编译时异常受控异 常检查异常(CheckedException。

2024-06-17 22:05:56 937

原创 Java:Arrays工具类中常用方法

基于分治的归并排序算法,支持多核CPU排序,适合大数据量排序(未测试)将一组数据转换成List集合(未测试)基于快速排序算法,适合小型数据量排序。可以将二维数组转换成字符串。判断两个二维数组是否相等。判断两个数组是否相等。可选择数组拷贝的范围。

2024-06-13 21:53:15 232

原创 Java:数组扩容

2.如果想对数组进行扩容,只能创建一个新的数组,将原数组的数据全部拷贝到新数组中,这样就完成扩容操作了。3.尽量减少扩容操作,可以预测数据量,创建一个容量大小合适的数组。System.arraycopy()方法。4.扩容的时候需要使用数组的拷贝,怎么用?1.数组的长度一旦确定,不可变。

2024-06-10 19:09:46 173

原创 Java:关于main()方法形参里的String[] args

以上面命令为例,如果用户通过命令行运行java Test xxx yyy zzz,JVM会将"xxx","yyy","zzz"作为字符串存储在args数组中,并在调用main()方法时将这个数组传进去。当JVM加载完Program类并准备调用main()方法时,它会解析命令行参数,并将其通过空格进行分隔,作为字符串存储在数组中。JVM在准备String[]数组时,并不知道具体的命令行参数,但是它会为String[]数组分配足够的空间来存储参数。2.JVM负责调用类中的main()方法。

2024-06-10 18:49:29 234

原创 Java:数组

(2)数组缺点:随机增删元素的效率极低,当一个元素被移出数组或者想添加到数组中,因为数组的长度是不变的,元素内存地址是连续的,所以就涉及到后续元素移动的问题,时间复杂度是O(n),O(n)表示的是线性阶,随着规模问题n的不断增大,时间复杂度是不断增大的,算法的执行效率降低,需要注意的是如果增删的是末尾元素,则对执行效率没有影响。(2)例如存放int元素的数组 int[] nums = {8,2,3,5,3,5,6};(6)数组变量存储着数组对象在堆内存中的内存地址,数组对象的内存地址是首元素的内存地址。

2024-06-06 08:49:52 406

原创 Java:匿名内部类的使用

创建了一个实现接口的类的对象。2.和类联合起来时,

2024-06-04 09:54:47 177

原创 Java:内部类

局部内部类在访问外部类中的局部变量时,这个局部变量必须要有final修饰(在JDK8之后,不需要我们手动提供final了,系统会自动提供)(1)当一个类和另一个类联系比较密切,都定义成独立的类的话,不但类的数量增加,还会增加我们阅读的难度,不便于维护。(2)内部类可以访问外部类的私有属性,这样可以将相关的类和接口隐藏在外部类的内部,提高了封装性。(3)匿名内部类是没有名字的内部类,通常定义一个只使用一次的类,比如用于处理事件中。匿名内部类:没有名字的内部类,通常定义一个只使用一次的类。

2024-06-04 09:19:50 197

原创 Java:访问控制权限

protected:受保护的,子类中可以访问。private: 私有的,只能在本类中访问。public:公开的,所有类都可以访问。3.访问权限控制符不能修饰局部变量。缺省:默认的,可以在同一包下访问。访问控制权限一共有四种。

2024-06-02 16:08:29 432

原创 Java:interface接口

引入默认方法是为了解决接口演变的问题:"接口可以定义方法,但不能实现方法,当一个类实现接口时,必须实现它的所有抽象方法",这就导致出现了接口升级的问题:"当接口删除或添加方法时,这会破坏所有类的实现,所有该接口的用户必须修改代码才能适应更改",这就是所谓的“接口演变”问题。修饰常量的static final可以省略不写,修饰抽象方法的abstract也可以省略不写,接口中所有的属性和方法都是public公开的(public也可以省略)6.类和接口之间的关系叫做实现,用implements来进行接口的实现。

2024-06-01 23:50:04 162

原创 Java:abstract关键字

这个实例方法即使方法体里什么都没写,只有一个大括号{ },这其实也是一种方法的实现,而上段话说过,是因为父类不知道怎么去实现,才定义成抽象方法的,目的就是为了。归根结底,这三个都是导致方法不能进行重写,才不能和abstract联合使用的,因为abstract修饰的方法继承过去必须进行方法重写。在一些父类中,无法确定这个方法怎么实现,而子类才知道怎么实现,这时候将这个方法定义为抽象方法。1.abstract修饰的方法叫做抽象方法,没有方法体,abstract属于修饰符。修饰符列表 返回值类型 方法名();

2024-05-31 16:22:18 283

原创 Java:final关键字

静态方法本就不能被重写,所以final多余了,但在语法上允许这种组合,我在使用idea工具时这样写,只会报警告,但不会报错。注意引用保存的是内存地址,只是赋值一次后保存的内存地址不能再变了,跟内存地址指向的对象没有关系。那么该静态变量就是常量,被static final联合修饰的变量称为常量。那么该实例变量必须在构造方法执行完之前手动赋值。那么该局部变量一旦赋值,不能重新赋值。那么该引用一旦赋值,不能重新赋值。1.final修饰实例变量。2.final修饰实例方法。5.final修饰引用。

2024-05-29 23:41:00 214

原创 Java:super关键字

当子类中定义了和父类同名的属性,想在子类中访问父类的这个属性,super.不能省略。当子类中定义了和父类相同的方法,想在子类中访问父类的这个方法,super.不能省略。只能出现在构造方法的第一条语句,通过子类构造方法去调用父类的构造方法,从而对父类型特征进行初始化。代表当前对象的父类型特征,它不是引用,不保存对象的内存地址,它也不指向任何对象。大部分情况下可以省略,那什么时候不能省略?可以出现在构造方法和实例方法中。super的语法 (1)不能出现在静态方法中。不能共存,如果既没有。

2024-05-29 22:44:47 99

原创 Java:方法覆盖和多态的基础语法

假设A类继承B类,但B类中有个方法对A类来说不太合适,那么A类就要重写这个方法,重写之后就相当于把之前继承过来的方法覆盖掉了。当A类调用这个方法,一定是执行重写后的。形式参数列表:相同(个数相同,顺序相同,类型相同)(2)重写之后的方法和重写之前的方法必须满足下面的条件。(1)编译阶段绑定的是父类里的方法,这叫做静态绑定。(2)运行阶段绑定的是子类里的方法,这叫做动态绑定。(2)方法覆盖与实例方法有关,和静态方法无关。(3)方法覆盖与实例方法有关,和实例变量无关。(1)方法覆盖与方法有关,与属性无关。

2024-05-29 09:27:57 179

原创 Java:继承的基础语法

2.Java中继承只支持单继承,不支持多继承(例如 A extends B 可以,但 A extends B,C 不行)例如 B继承了A 这时 C继承B ,相当于C间接继承了A,直接继承了B。5.Java中的类没有显示继承任何类,则默认继承Object类(这是JDK类库中的根类)6.继承存在缺点,例如:B类继承A类,会导致它们之间的耦合度变高,A类改变就会改变B类。3.Java虽然不支持多继承,但可以多重继承(多层继承),从而达到间接继承的效果。1.B类继承A类,则A是父类,B是子类。

2024-05-29 08:44:08 159

原创 浅谈JVM规范和JVM的具体实现(HotSpot)

堆是Java虚拟机所管理的最大的一块内存,堆内存存放着java对象实例以及数组,也是垃圾收集器收集垃圾的主要区域。Java虚拟机栈存储的是栈帧,栈帧里有局部变量表,操作数栈,动态链接,方法出口等信息。方法区存储的是被虚拟机加载过的类信息,常量,静态变量,即时编译器编译后的代码等数据。运行时常量池是方法区的一部分,用于存放编译时生成的各种字面量和符号引用。在本地方法执行时,会用到本地方法栈,与java虚拟机栈十分相似。程序计数器存储的是正在执行的虚拟机字节码指令的地址。JDK6的HotSpot。

2024-05-27 17:06:57 121

原创 Java:static关键字

静态代码块在类中,可以有多个,它在类加载时执行,在main方法执行之前执行,并且每个静态代码块只执行一次,如果编写了多个静态代码块,它按照自上而下的顺序去执行,在我们写代码时,虽然写 引用.静态变量名 或者 引用.静态方法名 程序也能够正常运行,但实际上这种写法是不规范的,代码在运行时会自动把。静态变量和静态方法也在类加载时执行,要注意静态数据和静态代码块一起按照自上而下的顺序执行。被static修饰的变量叫做静态变量,2.静态变量和静态方法是类级别的,通过。1.static意思为"静态的",

2024-05-27 16:30:03 123

原创 Java:this关键字

因为静态方法中没有对象,而this表示当前对象,都没有对象,怎么用this呢。1.this表示当前对象,从内存图上来看跟引用一样,存储当前对象的内存地址。2.通过this可以访问当前对象的实例变量和实例方法。3.this存储在栈帧的局部变量表的0号槽位上。可以通过当前构造方法调用本类中其他的构造方法。用来区分实例变量和局部变量,如图。5.this不能出现在静态方法中。4.this主要两种用法。(1)用在实例方法中,(2)用在构造方法中,

2024-05-26 20:34:35 188

原创 Java:构造方法执行的两个阶段

对象创建完成后,构造代码块会执行(如果有的话),然后紧接着就是构造方法执行,当构造方法体执行完毕,也标志着对象完成初始化。在构造方法执行前,"new"这个运算符会先创建一个对象,放到堆内存当中,并且系统会对象中的所有属性赋默认值。this不是指当前对象吗,还没构造结束呢,哪来的对象。第二个阶段:对象的初始化。第一个阶段:对象的创建。在java中,构造方法执行有两个阶段。所以this才能在构造方法里使用。其实在构造方法执行时有两个阶段。例如图中的有参构造方法里。这里就涉及到对象的创建。

2024-05-26 17:30:26 97

空空如也

空空如也

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

TA关注的人

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