Java语法基础
文章平均质量分 89
Java语法基础
solololo
这个作者很懒,什么都没留下…
展开
-
Java语言12之时间类
Instant表示时间线上的某个时刻/时间戳。可以用来记录代码的执行时间,或用于记录用户操作某个事件的时间点。传统的Date类,只能精确到毫秒,并且是可变对象;新增的Instant类,可以精确到纳秒,并且是不可变对象,推荐用Instant代替Date。LocalDateTime兼容了LocalDate和LocalTime,几乎拥有二者的所有API,用法也相同。LocalTime和LocalDate用法差不多,直接贴代码。API根据用途的不同,大概可以分为如下几类。相差的年数、月数、天数。原创 2024-05-22 22:19:25 · 265 阅读 · 1 评论 -
Java语言11之Optional
举例来说,如果你知道一个人可能有也可能没有车,那么Person类内部的car变量就不应该声明为Car,遭遇某人没有车时把null引用赋值给它,而是应该直接将其声明为Optional类型。orElseGet(Supplier other):如果optional不为空,则返回optional中的对象;orElse(T other):如果optional不为空,则返回optional中的对象;get():获取optional实例中的对象,当optional容器为空时报错。原创 2023-09-26 22:03:32 · 101 阅读 · 0 评论 -
Java语言10之Stream
分支/合并框架的目的是以递归方式将可以并行的任务拆分成更小的任务,然后将每个子任务的结果合并起来生成整体结果。第三,你需要在恰当的时候对它们进行同步来避免不希望出现的竞争条件,等待所有线程完成,最后把这些部分结果合并起来。可以用工厂的流水线生产来比喻Stream流编程,一般一个产品需要多步加工操作,通过流水线可以大大提高生产效率。Java8使用stream()可以得到一个串行流,而使用parallelStream()可以得到一个并行流,并行流可以通过开启多个线程并行计算从而提到计算效率。原创 2023-09-25 21:57:11 · 35 阅读 · 0 评论 -
Java语言09之函数式编程
可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表。可以把一个Lambda表达式看成一个接口的实现类(更准确的说是一个函数式接口的实现类,函数式接口是一个只拥有一个抽象方法的接口)。换句话说,方法引用就是Lambda表达式,也就是函数式接口的一个实例,通过方法的名字来指向一个方法,可以认为是Lambda表达式的一个语法糖。函数式接口指的是有且仅有一个抽象方法的接口。原创 2023-09-25 21:55:49 · 47 阅读 · 0 评论 -
Java语言08之JDBC
存储过程预先存储在MySQL服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列SQL语句全部执行。在SSC中,key为SQL语句,value为对应的执行计划。其实是因为SQL语句在程序运行前已经进行了预编译,在程序运行时第一次操作数据库之前,SQL语句已经被数据库解析、优化和编译,因此,PreparedStatement类的本质就是缓存执行计划,跳过SQL语句的编译过程并重用执行计划,以达到减轻数据库的负担、提高访问数据库的速度的目的。原创 2023-09-24 20:32:04 · 113 阅读 · 0 评论 -
Java语言07之异常体系
Java把所有的非正常情况细分为三类:Error(错误),RuntimeException(运行时异常),checked Exception(受检异常、编译时异常)。原创 2023-09-23 22:39:35 · 17 阅读 · 0 评论 -
Java语言06之注解
只要理解和记住jdk内置的四个注解即可 (@Target,@Retention,@Documented,@Inherited)@Retention:保留的时间范围 (RetentionPolicy)SOURCE源文件保留(如@Override保留在源文件,编译后注解消失)CLASS编译时保留(如lombok生成get/set)RUNTIME运行时保留(如切面记录日志,或验证参数信息等)@Target:使用范围@Documented:保留注解信息。原创 2023-09-21 22:38:11 · 20 阅读 · 0 评论 -
Java语言05之反射与动态代理
动态代理的作用就是在不改变源码的基础上,实现对方法级别上的增强。在被代理的类的每个方法时,都会被拦截,此时可以在代理类中添加代码实现对方法的增强,可以看做是对类的横向扩展。Java的动态代理有两种形式:基于接口的动态代理、基于子类的动态代理。与之对应的是基于JDK实现的动态代理和基于CGLIB实现的动态代理。Java的反射机制是指在程序的运行状态中,可以构造任意一个类的对象,可以调用任意对象的属性和方法。就二者的效率来说,大部分情况都是JDK动态代理更优秀,随着JDK版本的升级,这个优势更加明显。原创 2023-09-20 23:22:29 · 29 阅读 · 0 评论 -
Java语言04之泛型
Java泛型是JDK 5中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型包括泛型类、泛型接口、泛型方法。Java的泛型是伪泛型,这是因为Java在运行期间,所有的泛型信息都会被擦掉,这也就是通常所说的类型擦除。不管为泛型的类型形参传入哪一种类型实参,对于Java来说,它们依然被当成同一个类处理,在内存中也只占用一块内存空间,因此在静态方法、静态初始化块或者静态变量的声明和初始化中不允许使用类型形参。换句话说,Java并不存在泛型类!Java提供的泛型只原创 2023-09-19 21:51:21 · 49 阅读 · 0 评论 -
Java语言03之集合体系
这其实是一个数学计算上的优化,如果HashMap的长度是2的n次方,那么与key的hash值对长度取余的操作等价于key的hash值与长度减一的与操作,可以加快计算速度。如果长度为2的幂次方,则长度减一转化为二进制必定是11111……的形式。原创 2023-09-18 21:48:34 · 56 阅读 · 0 评论 -
Java语言01之基础语法
数组引用变量只是一个引用,这个引用变量可以指向任何有效的内存,只有当该引用指向有效内存后,才可通过该数组变量来访问数组元素。在存储的过程中,由于浮点数存储空间不足,无限循环只能被截断,就会导致浮点数精度发生损失的情况。一旦为数组的每个数组元素分配了内存空间,每个内存空间里存储的内容就是该数组元素的值,即使这个内存空间存储的内容是空,这个空也是一个null值。增强for循环中的循环变量相当于一个临时变量,系统会把数组元素依次赋给这个临时变量,而这个临时变量并不是数组元素,它只是保存了数组元素的值。原创 2023-09-16 23:33:04 · 44 阅读 · 0 评论 -
Java语言02之面向对象编程
首先,实际保存字符串内容的value[]数组被final修饰且为private的,并且String类没有提供修改这个字符串的方法。其次,String类被final修饰导致其不能被继承,进而避免了子类破坏String的不可变。原创 2023-09-17 14:36:27 · 24 阅读 · 0 评论