Java基础知识
文章平均质量分 74
Java基础及语言使用
weixin_49274713
这个作者很懒,什么都没留下…
展开
-
Java基础——反射
反射提供了一种运行时获取类信息并操作的机制,增大了Java代码的灵活性,但是同时也破坏了封装特性,因为可以反射获取private类型的数据。反射主要涉及Class、Field、Constructor、Method这几个对象的使用。原创 2023-09-09 16:48:47 · 135 阅读 · 0 评论 -
Java基础——注解
public @interface 注解名称 {public 属性类型 属性名() default 默认值;属性类型支持Java中的所有数据类型自定义注解使用注解@MyBook(name = "《Java基础1》" , authors = "Bill" , price = 123) public class Main {原创 2023-08-06 11:54:55 · 111 阅读 · 0 评论 -
Java基础——异常
异常是程序在“编译”或者“执行”过程中可能出现的问题,所以可以分为编译时异常和运行时异常。异常一旦出现而没有处理,则程序会退出JVM虚拟机而终止。处理系统的异常外,也可以自定义异常类。定义一个类继承Exception或者RuntimeException,继承前者为编译时异常,继承后者为运行时异常重写构造器在出现异常的地方通过抛出异常对象try {super(msg);} }异常都继承自Throwable类Throwable类下分Error错误和Exception异常。原创 2023-07-24 21:36:14 · 64 阅读 · 0 评论 -
Java基础——Stream类
Stream类用于简化集合和数组操作的API。Stream类提供了很多可以简化集合操作的api,比如过滤元素示例如下:假如一个List集合中存储着字符串,从这些字符串中找到以“1”开头并长度为3的字符串加入一个新的List集合中。使用stream可以简化上面的写法Stream流其中的一些接口返回的还是Stream对象,可以支持链式编程。通常使用步骤可以分为:获取集合和数组的Stream流放置元素使用Stream流的api方便操作元素。原创 2023-07-23 23:01:16 · 278 阅读 · 0 评论 -
Java基础——不可变集合
可以通过List、Set、Map接口的of方法构造不可变集合不可变集合通过父类抽象类实现能够变动的接口,并在其中直接抛异常实现不可变集合由于改动会抛异常,所以使用是安全的。原创 2023-07-20 20:54:53 · 247 阅读 · 0 评论 -
Java基础——Lambda表达式
Lambda表达式是JDK8开始支持的语法,其他语言中也有Lambda表达式,但不同语言的Lambda表达式之前还是存在一些差异。Java中Lambda表达式作用是简化匿名内部类的代码写法。需要注意的是Lambda只能简化函数式接口的匿名内部类写法。函数式接口是指接口中只有一个抽象方法的接口。原创 2023-06-28 21:29:46 · 154 阅读 · 0 评论 -
Java算法——排序算法
以升序为例,冒泡排序的思想是通过比较临近两个值的大小,如果左边值大于右边值,则交换两个值,这样一趟比较下来,最大值就被冒泡到了数组的末尾。所以对于存在长度为n的数组,需要冒泡n-1次。第一次冒泡,需要比较n-1次,第二次为n-2次,最后一次为1次。所以冒泡排序的时间复杂度是O(n^2)。由于没有使用额外的空间,所以空间复杂度为O(1)。冒泡排序由于只交换相邻两个值,所以是稳定的排序。原创 2023-06-27 18:12:30 · 501 阅读 · 0 评论 -
Java基础——Arrays类常用API
Arrays类中的sort方法默认升序排序,且不支持没有实现Comparable接口的对象的排序。可以重写Comparator来自定义排序规则。} }报错如下在比较时,可以重写Comparator// 1、Arrays的sort方法对于有值特性的数组是默认升序排序 int [ ] ages = {// 2、需求:降序排序!(自定义比较器对象,只能支持引用类型的排序!!// 指定比较规则。// 默认升序 return o2 - o1;// 降序 } });原创 2023-06-25 22:36:13 · 357 阅读 · 0 评论 -
Java基础——正则表达式
正则表达式用于匹配规定格式的字符串。除了上面的以外,还有一个符号就是括号,括号括起来的表示一个捕获组,一个捕获组可以作为一个重复单位来处理。原创 2023-06-25 22:07:59 · 510 阅读 · 0 评论 -
Java基础——日期API
JDK8开始,java.time包提供了新的日期和时间API,新增的API严格区分了时刻、本地日期、本地时间。并且,对日期和时间的计算更加方便。常用的构造方法就是这两个,一个获取当前时间,一个根据输入的毫秒值设置初始时间,是计算的从1970年1月1日零时开始计算的毫秒值。上面包含了Calendar类的常用方法,由于是抽象类,不能创建对象,所以通过自身提供的getInstance方法获取对象。可以根据字段来获取日历中的年、月、日、一年中的第几天、一月中的第几天等时间数字。可以操作日期的加减,以及日期的判断。原创 2023-06-25 22:04:54 · 511 阅读 · 0 评论 -
Java基础——多线程
java基础——多线程原创 2023-01-02 22:33:45 · 130 阅读 · 0 评论 -
Java基础——IO流
方法直接或间接调用自己的形式称为方法递归,是一种算法。直接递归:方法自己调用自己间接递归:方法调用其他方法,其他犯法又回调方法自己存在问题:如果没有控制好终止条件,会出现死循环,导致栈内存溢出。递归的公式递归的终止条件递归的方向必须走向终止条件计算机底层是二进制,字符的存储需要进行编码成为二进制数据进行存储。常见的字符集有ASCII、GBK、Unicode等。1 ASCII包含数字、英文和符号,使用一个字节来存储一个字符,总共可以表示128个字符信息。2 GBK。原创 2022-10-12 16:09:32 · 336 阅读 · 0 评论 -
Java基础——基本数据类型及包装类
Java是一种面向对象的语言,有时候需要对象操作才比较方便,所有的基本数据类型都有其对应的包装类。基本数据类型和其包装类之间可以直接赋值,会自动装箱和拆箱。查看运行的汇编指令,发现自动装箱其实调用的是Integer类中的valueOf方法,自动拆箱调用的是Integer类中的intValue方法。所以我们也可以调用包装类中的类似这两个方法来转换基本数类型和包装类型。原创 2022-10-12 14:56:02 · 1805 阅读 · 1 评论 -
Java基础——Object类
Object类是Java中所有类的父类,所有的类都是继承自Object或其子类。即使自己编写的类没有继承任何类,也会在编译的时候默认添加继承Object类。Object类既然是都有类的父类,那么所有类都能够使用Object类中的方法,同样的Object类的设计也是提取所有类都可能使用的方法。这个方法主要是用于获取类对象,在反射的时候很常用,这是一个native方法。这两个方法是用于判断对象是否是同一个对象设计的。hashCode值用于标识一个特定对象,equals默认判断两个对象的地址是否相同。原创 2022-10-12 14:55:36 · 205 阅读 · 0 评论 -
Java基础——内部类
概念及规则定义在类内部的类称为内部类。内部类特点内部类可以直接访问外部类的成员,包括私有成员外部类想要访问内部类成员,必须创建对象。内部类可以对同一个包中的其他类隐藏内部类的对象会有一个隐式引用,指向实例化这个对象的外部类对象。但是对于静态内部类却是没有这个附加的指针只有内部类可以是私有的,而常规类可以是包权限和public的内部类中声明的所有静态字段都必须是final的,并初始化为一个编译时常量内部类不允许有static方法,编译报错。内部类是一个编译器现象,与虚拟机无关。编译器将会把原创 2022-05-09 22:29:04 · 801 阅读 · 0 评论 -
面向对象编程
Java语言是一种面向对象的编程语言,号称一切皆对象。面向对象语言就会存在三个特性,封装,继承和多态。封装封装将代码的实现细节封装在类中,对外只暴露公共的接口。Java中的封装是通过private等权限修饰符来实现的。标准JavaBean...原创 2022-04-09 15:43:57 · 1406 阅读 · 0 评论 -
Java基本输入与输出
标准输入流System.in为标准输入流,需要联合Scanner类一起使用。Scanner sc = new Scanner(System.in);Scanner类提供了多种读取的方式,nextInt读取下一个整数,nextLine读取下一行等。注意:因为此种输入方式是可见的,所以Scanner类不适用于从控制台读取密码。Java6特别引入了Console类来实现这个目的。Console cons = System.console();String username = cons.readLi原创 2022-04-17 10:23:16 · 2355 阅读 · 0 评论 -
包装类、可变参数类型和枚举类
包装类每个基本数据类型都有对应的包装类,与基本数据类型名字像似。Integer、Long、Float、Double、Short、Byte、Character、Boolean。这八个包装类都有一个公共的父类Number。包装类由final修饰,不能继承,创建后也不能改变其中的值。list.add(3);将会自动转化为list.add(Integer.valueOf(3));上面就是基本数据类型自动装箱成包装类。调用的是相应包装类的valueOf方法。int n = list.get(i);将原创 2022-04-18 22:07:39 · 89 阅读 · 0 评论 -
接口与抽象类
抽象类当对子类共性功能抽取时,有些方法在父类中没有具体的体现,此时可以将这些方法定义为抽象类,让其在子类中实现。在Java中,一个方法没有具体的实现就是抽象类,在类中拥有抽象方法该类就必须定义为抽象类。抽象类特点抽象类和抽象方法必须使用abstract进行修饰//抽象类定义public abstract class 类名 {}//抽象方法定义public abstract void 方法名)();抽象类不一定有抽象方法,有抽象方法必须定义成抽象类抽象类不能实例化抽象类的实例化通过原创 2022-04-10 20:19:14 · 204 阅读 · 0 评论 -
JShell
JShell是Java9引入的另一种使用Java的方式。输入一个Java表达式,Jshell会评估你的输入,并打印出结果,等待你的下一个输入。PS D:\Users\jdk17.0.2> jshelljshell> "Hello world!".length()$1==>12$1是该输出值的一个代号,可以作为输入进行下一次的运算。jshell> $1*5$2==>60如果需要多次使用一个变量,可以给他指定一个容易识别的变量名。jshell> int原创 2022-04-15 17:14:54 · 110 阅读 · 0 评论 -
ArrayList源码分析(基于JDK11)
ArrayList源码分析(基于JDK11)类字段ArrayList的类字段中定义了序列化ID、初始容量、最大容量、元素存储数组、元素数量等信息。从类字段中可以分析出,ArrayList的底层使用的是Object数组来存储元素,至于他的数组长度的可变性则是在该类中自己实现的逻辑。初始容量为10,最大容量为接近于2的32次方,当超过这个后,最大容量扩大到2的32次方。构造函数1、无参构造函数public ArrayList() { this.elementData = DEFAUL原创 2022-04-01 21:13:47 · 2692 阅读 · 0 评论