- 博客(15)
- 收藏
- 关注
原创 JVM详解
我们平时写的Java代码是一个.java文件,通过javac编译成.class文件,既然是文件,那么都是存储在硬盘上的,当运行Java进程的时候,JVM就需要读取.class中的内容,并且执行里面的指令,这就是类加载的过程,也就是把类涉及到的字节码从硬盘上读取到内存中(元数据区),.class中的指令转变为类对象,类对象中就包含了.class文件的各种信息,比如:类的名字,类中定义的属性,方法,实现的接口和继承关系等。下次垃圾回收时,交换From区和To区的角色。
2025-01-19 22:20:14
924
原创 Java——图书管理系统
删除图书只需要把要删除的图书从书架上移除即可,由于是用顺序表存储的图书,所以当删除其中的一本书之后,这本书后面的图书都要往前移,并且如果查找不到删除的图书的信息,那么就需要给出提示。创建书架的类,书架上肯定不止一本书,所以这里选择数组来存储多个book对象,因为在一开始就有了一部分书,所以在创建书架的对象时,就要把图书的对象放进去。借阅图书首先需要在书架上找到这本书才能借阅,所以就需要对书架进行遍历,并查看书的状态,借阅之后也需要及时的更新书架信息,还有书籍的状态。之后创建各种功能的接口。
2025-01-19 22:19:33
587
原创 Java——反射&枚举
idea中的提示功能就是使用了反射的机制,获取到了构造方法的权限修饰符,这里只提示了除空参构造之外,可以使用的两种构造方法,private由于在其他类中不能调用,这里就没有显示。还按照之前反射的方法获取构造方法并创建对象时,会发现报错了,并且给出的异常是没有找到这个构造方法,但是我们的EnumDemo2类中是存在这个方法的。getMethods()获取的是该类所有公有的方法的数组,包括继承的,所以显示出了很多Person类本身没有定义的方法。可以获取方法的修饰符,名字,方法的形参,以及方法抛出的异常。
2025-01-19 22:19:02
870
原创 Java——方法的引用
对于抽象方法中的形参:第一个参数表示被引用方法的调用者,决定了可以引用哪些类中的方法,在Stream流中,第一个参数一般都表示流里面的每一个数据,如果说流里面的是字符串类型,那么使用这种方式进行方法引用,只能用String这个类中的方法。这里的规则是要稍微变一下的,在刚开始提到的第三条中“被引用的方法的形参和返回值要和抽象方法保持一致”要更改为被引用方法的形参要和抽象方法的第二个参数到最后一个形参保持一致,返回值需要保持一致。方法的引用:把已经存在的方法拿来使用,当作函数式接口中抽象方法的方法体。
2025-01-19 22:18:30
828
原创 Java——IO流:字节流
打开文件,其实是在该进程的文件描述符表中,创建了一个新的表项,描述了该进程要执行哪些操作,文件描述表,可以认为是一个数组,数组中的每一个元素就是一个structfile对象(Linux内核),每一个结构体就描述了对应操作的文件信息,数组的下标,就被称为文件描述符。文件拷贝就是把读取和写入结合起来,把读取到的数据再写入另一个文件中,所以也有两种方式进行拷贝,一种是一个字节一个字节的拷贝,另一种就是直接定义一个大容量的数组,一次拷贝完成,很显然,后者更加高效。
2025-01-19 22:16:37
818
原创 Java——文件操作
File对象表示路径,可以是文件,也可以是文件夹,这个路径可以是存在的,也可以是不存在的绝对路径:是从文件系统的根目录开始,到指定文件或目录的完整路径,它通常包含盘符相对路径:是相对于当前工作目录或某个已知目录的路径首先第一个,就是传入一个完整的路径创建文件对象第二个:父级路径就是指包含该文件或目录的上一级目录的路径字级路径是是某个目录下的文件或子目录例如:"E:\java\a.txt"中的父级路径就是E:\java,子路径就是后面的a.txt//根据文件路径创建文件对象。
2025-01-19 22:16:06
757
原创 Java——Stream流详解
作用:Stream流就是结合了lambda表达式,简化集合和数组的操作1.获取Stream流对象2.使用中间方法处理数据3.使用终结方法处理数据。
2025-01-19 22:15:36
1107
原创 Java——包装类和泛型
首先定义了两个具有继承关系的类,method方法里边所限定的类型是Fu类型,它的子类型所创建的对象并不能使用该方法,如果想要子类型也能使用,就需要把方法定义为泛型方法,但是如果是其他类型也可以使用,怎么去限定只有这种具有继承关系的类才能使用。当使用包装类的时候,该怎么去进行计算呢,首先要把对象转化为基本数据类型,再进行计算,再转化为引用数据类型,这样手动的去转化就非常麻烦,所以在JDK5的时候就出现了自动装箱和自动拆箱的机制。当一个类中,某个变量的类型不确定,就可以定义带有泛型的类。
2025-01-19 22:15:04
931
原创 Java——异常
创建自定义异常类:声明一个继承自Exception类或其子类的类,作为自定义异常类。根据需要添加构造方法和其他方法。例如,可以添加一个带有错误消息的构造方法,以便在抛出异常时提供有关异常的详细信息。当直接继承Exception类来创建自定义异常时,创建的是一个受检异常。受检异常是那些必须在方法签名中使用throws关键字声明,并且在调用该方法的地方使用try-catch块捕获或继续向上抛出的异常。编译器会强制要求这样做,以确保处理了所有可能的异常情况super();
2025-01-19 22:14:25
593
1
原创 Java——String类详解
String也就是字符串类型,并不是基本数据类型,String在Java中是一个类,属于引用数据类型可以看出String类实现的接口和一些属性,既然是类,我们先去了解它的构造方法可以看出,String类又很多构造方法,下面介绍一下常用的定义方法直接赋值内存中其实还有一块专门用来存放字符串常量的区域,叫做串池,只有通过直接赋值的方式创建的字符串才会被存储到串池中,通过new关键字获取到的对象就不会存储在这里。
2025-01-19 22:13:54
1048
原创 Java——接口的使用实例
这就用到了Comparable接口,接口中定义的就是一种规范,通过重写接口中的compareTo方法,定义比较规则,就实现了自定义类型的比较。当把之前的注释取消,源码底层就会把Man强转为Comparable,调用compareTo方法,而此时由于compareTo重写了,就会调用重写后的方法,排序也会根据重写之后的compareTo方法进行排序。点进源码发现Cloneable接口没有写任何方法,是一个空接口,空接口也叫做标记接口,表示当前类是可以被克隆的。谁调用compareTo方法,this就代表谁。
2025-01-19 22:13:16
484
原创 Java——抽象类和接口
成员内部类也就是写在成员位置的,属于外部类的成员,上面的代码就是一个成员内部类的例子,成员内部类可以被一些修饰符所修饰,例如private,默认,protexted,public,static等。接口中的成员变量默认是publicstaticfinal修饰的,用static修饰调用方便,接口名.方法名调用,用》>final修饰,不可更改,所以也说明了接口中定义的是一种规范。大括号和前面的内容要么是实现关系,要么是继承关系,整体是一个类的子类对象或接口的实现类对象,大括号里面的是类。
2025-01-19 22:12:46
719
原创 Java——类与对象(继承和多态)
privateprivate很好理解,同一个包中的其它类就不能访问了,只能本类中才能访问空着不写空着不写也就是不加任何权限修饰符Strings1;inta;同一个包中的其他类能访问也就是上面Textdemo中定义的变量,在Textdemo2中也能访问protect下面就是不同包中的子类的例子:那么能用super去访问吗很明显,编译器直接报错了,因为main方法也是static修饰的,不能用superpublicpublic字面意思就是公开的的,谁都能访问。
2025-01-19 22:12:14
675
原创 Java——类与对象(封装)
/这样写也是可以的*表示通配符,表示导入了java.util包下的所有类和接口但是这样写虽然更简洁了,但是并不推荐这样写例如上面的例子,util和sql包底下都有Date类,这样就不知道写的是哪个包中的Date,所以编译器直接报错了,还是推荐导包的时候要导全。
2025-01-19 22:11:41
873
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人