自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 揭秘Java构造器的真实作用

在之前的学习中我们了解到java中的构造器是不允许有返回值的,void也不行,如果加上会导致该方法变成一个普通方法,而不是一个构造函数。其实这都是java虚拟机在操作。java中的构造器其实并不承担创建实例对象的工作,他的工作其实是将java虚拟机创建好的实例对象进行初始化操作。到这里,我们的对象就已经存在在堆空间中了,但是内部数据还并未初始化,接下来就是我们的构造器出场的时候了。然后虚拟机会为这个对象设置"对象头"信息,包含:对象的哈希码,GC分代年龄,锁状态等运行时数据,指向所属类的元数据指针。

2025-10-16 17:19:06 284

原创 jsDOM编程以及正则表达式

①如果想校验一个字符串是否以某个规则开头,在规则的开头处加上^,如果想校验是否以这个为结尾,就要在规则的结尾处加上$,如: var reg=/^java/;如果想定义这个规则重复多少次,及符合要求的项要有几个,可以在后面加上大括号,里面写上范围: var reg=/[a-zA-Z0-9_]{5,9}/;--->有逗号表示范围,即必须是5到9位的字符,如果只写一个数字,代表只能多少位,不能变。--->根据元素的class属性获取多个元素。--->根据元素的name属性获取多个元素。--->替换旧元素。

2025-01-21 16:47:18 762

原创 尚硅谷javase拓展项目考试系统难点解析

在这里只要用户输入的不是A、B、C、D等被承认的字符,这里就不会将用户的输入返回,而是一直循环,直到输入的是正确的字符。添加构造器来将外部文件中的题目和答案以item的形式存储在声明在内部的item[]中。因为在本题中的题目.txt中题目和四个选项都是各自独占一行,并且每一道题的所有元素加起来正好占用了6行,所以可以使用readLine()。然后就是题目要求我们定义一个getItem()方法,这个直接返回数组对应的元素就行,但是要注意题目要求序号是从1开始,而不是0。打的有点乱,见谅:)

2024-12-08 13:54:10 484

原创 TCP和UDP编程(java)

但是改动之后传输文件的操作完成之后还有一个接收的操作,但是服务端不知道你是否还需要传输数据,就不会结束接收文件的进程,导致进程卡死,有点类似于死锁。一般来说我们创建输出流只需要调用相应的构造器就行了,但是这里由于需要通过网络来传输,所以需要通过创建的Socket的实例来获取——调用getOutputStream()方法来获取,返回值是OutputStream类型的。服务端需要创建一个ServerSocket类的实例,在调用构造器的时候要传入自己设定好的端口,这个端口必须和客户端的一致,否则会接收不到文件。

2024-11-28 19:34:59 605

原创 java中泛型通配符的读取、写入问题

extends A>的返回值类型是A类,但是写入是不被允许的。super A>的返回值是Object类,写入时只能写入A类的子类。extends A>表示该属性只能是A类的子类,而你给他添加元素的时候可能会添加一个?通配符是泛型中非常重要的一个概念,它的作用是标明某些属性的类型是不确定的,比如说ArrayList<?>表示你可以给它赋值为ArrayList<String>,或者是ArrayList<Long>。super A>的时候,读取与写入是与平常的ArrayList<String>不一样的。

2024-11-21 19:57:19 442

原创 java多线程中继承Thread类的run()方法重写问题

而Thread类的run方法实际上就是调用传入参数的run方法。但是当我们传入一个同样继承于Thread类的子类的时候,使用start方法并不会调用传入的子类的run方法,而是直接使用了当前方法重写过的run方法。此时我们调用的并不是父类Thread类的run方法,而是子类中的run方法,因此也不会去执行传入的实参的run方法。这样在传入形参,使用start方法的时候就会调用父类Thread类的run方法。而查看源码可以得知父类中的run方法其实就是用来调用子类的run方法的。

2024-11-12 19:32:23 447 1

原创 java中的“匿名“问题

在上面的例子中,Animal是一个接口,按照正常流程来说我们应该先写出它的实现类的类名,再将其实例化。但是我们这里并没有这样做,而是直接将Animal接口中的方法重写.然后利用多态性将它的名字"an"作为它的实现类的名字传入了对应方法。这不难看出我们没有使用Person类,而是使用了它的父类,Animal类,也是Animal接口。得益于Java的多态性,我们在进行类的调用或是类中方法的调用的时候我们可以不去给需要实例化的类取名,甚至连实例化的类的类名都可以省略,这就是"匿名调用"。

2024-11-07 12:36:25 356

原创 抽象类以及抽象方法(Java)

比如“几何体”这个类,我们在编写程序的时候根本不会使用这个过于概念化的类,一般都会使用它的子类,如正方体、球体等。此时将所有的几何体求面积的方式都当作一个方法写出来显然是不现实的,这时就可以定义一个抽象方法,只定义一个名字,剩下的由子类进行重写。补充:在使用对象数组的时候会遇见被abstract修饰的类被当作存储数据的类的时候,由于对象数组在存入数据之前必须要先实例化,而抽象类又不能够使用new来进行实例化,此时该怎么办呢?答案是利用它的子类。final,final的方法无法被重写,修饰的类又没有子类。

2024-11-05 21:10:29 570

原创 对象数组(java)

在这里我想创建一个装了10个人的数据的对象数组,我就将其的长度设置为10。如果没有这一步那么对象数组是没有第二层的。首先,当数组中的元素是引用数据类型中的类时,我们就将之称为对象数组。其实可以将其抽象理解为一个二维数组,但是第二维度中可以含有多个数据,甚至可以不同类型。第一次将数组的第一层new出来,确定第一层的长度以及第二层会用到哪些属性。然后在另外一个类中先将你这个对象数组的第一层给new出来。1、先在一个类中定义好你在这个对象数组需要装的属性。这样就可以将第二层的对应的数据打印出来。

2024-10-28 19:28:24 826

原创 螺旋矩阵的解题方法及思路(java)

例如在while中嵌套if的话它必须要完成一整个过程,即从1-4的过程之后才会对n的值进行条件判断,会造成n的值即使大于num*num但循环仍然在进行,最终导致赋的值大于num*num。解题思路:首先要知道螺旋过程是在重复向右、向下、向左、向上一直到填入的数字等于n*n。而由于我们明确知道要循环螺旋过程到什么时候,即当填入的数字大于了n*n时循环停止,所以将整个循环过程用for循环限制起来。题目要求:从键盘中获取一个1-20的一个整数n作为一个正方形矩阵的边长,将1-n*n的数字螺旋填入正方形矩阵内。

2024-10-24 15:05:25 591

原创 java中i=i++问题的解释

首先我们要知道java文件是在jvm里运行的,而对于jvm来说,一个表达式要等它完全计算完成之后才会返回一个结果。而对于i=i++来说将i赋值为0并不是这个表达式的最后一步,将i自增一之后才是最后一步。但是将i自增一之后i的值变了,再将其当作返回值赋值给i的话那就不符合++本身的定义了。这样才是i=i++的完整计算过程。由上可以得出即使i会自增一,但是在最后返回结果的时候i又被重新赋值为了0,导致输出结果还是0。上面这串代码的结果应该有人会觉得是1,但其实是0。

2024-10-17 16:01:32 448

原创 Java中的变量与标识符

数据类型 变量名=变量值(定义的变量只能作用于最近的一个大括号内,出了作用域就失效了。3.不可使用java中的保留字以及关键字,但是能包含,比如hpublic中包含了保留字public,但这样仍然是合法的。2.类名、接口名有多个单词组成时,所有单词首字母大写,如:String,System。如果在变量名前面说明了数据类型就是定义变量,但是没有变量名就是重新赋值,是允许的。注意:给变量赋的值必须要满足你定义的数据类型且在有效的范围内变动。三个要素:数据类型(整形,浮点等)、变量名、存储的值。

2024-10-15 16:04:49 324

空空如也

空空如也

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

TA关注的人

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