java api提供了防止CSV注入

   日期:2024-12-13    作者:ohxia 移动:http://qyn41e.riyuangf.com/mobile/quote/7334.html


java api提供了防止CSV注入

作用
一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类
Object类的方法是一切子类都可以直接使用的

Object类的常用方法

toString存在意义
父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息

equals存在的意义
父类equals方法存在的意义就是为了被子类重写,以便子类自己来定制比较规则

Object类与Object还是继承关系,Objects类是从JDK1.7之后才有的
官方在进行字符串比较时,没有对象自己的equals方法,而是选择了Objects的equals方法来比较两个对象
Objects的equals方法比较的结果是一样的,但是更安全
Objects的常见方法

StringBuilder是一个可变的字符串类,可以把它堪称是一个对象容器
作用:提高字符串的操作效率,如拼接,修改等

StringBuilder构造器

StringBuilder常用方法

案例:打印整型数组的内容

包含执行基本数字运算的方法,Math类没有提供公开的构造器
Math类的常用方法

System的功能是通用的,都是直接用类名调用即可,所以System不能被实例化
System类的常用方法

用于解决浮点型运算精度失真问题

使用步骤
创建对象BigDecimal

BigDecima常用API

Date类的对象在Java中代表的是当前所在系统的此刻日期时间
Date的构造器

Date的常用方法

时间毫秒值->日期对象

SimpleDateFormat类作用
可以把对象或时间毫秒值格式化成常用的时间格式
也可以把字符串时间形式解析成日期对象

SimpleDateFormat的构造器

SimpleDateFormat的格式化方法

SimpleDateFormat解析字符串时间成为日期对象

需求:秒杀开始时间为 2022年 6月18日 00:00:00 - 2022年6月18日 00:10:00
小明下单并付款的时间为 2022年6月18日 00:03:58
小张下单并付款的时间为 2022年6月18日 00:10:38
判断他们是否秒杀成功

Calendar代表了系统此刻日期对应的日历对象
Calendar是一个抽象类,不能直接创建对象

Calendar常用方法

注意:calendar是可变日期对象,一旦修改后其对象本身表示的时间将产生变化

从Java8开始,Java.time包提供了新的日期和时间API,主要涉及的类类型有

LocalDate: 不包含jurisdiction时间的日期
LocallTime: 不含日期的时间
LocalDateTime: 包含了日期及时间
Instant: 代表的是时间戳
DateTimeFormatter 用于做时间的格式化和解析的
Duration: 用于计算两个“时间”间隔
Period:用于计算两个“日期”间隔

新增的API严格区分了时刻、本地日期、本地时间,并且,对日期和时间进行运算更加方便
其次,新API的类类型几乎全部是不变类型(和String的使用类似),可以放心使用不必担心被修改

LocalDate、LocalTime、LocalDateTime
分别表示日期、时间、日期时间对象,它们的类的实例是不可变的对象
它们构建对象和API都是通用的

LocalDateTime综合了LocalDate和LocalTime里面的方法
这些方法返回的是一个新的实例的引用

Instant时间戳
时间戳是包含日期和时间的,与java.util.Date很类似,事实上Instant就是类似JDK8之前的Date
Instant和Date这两个类可以进行转换

DateTimeFormatter
在JDK8中,引入了一个全新的日期与格式器DateTimeFormatter
正反都能调用format方法

Period
在Java8中。可以使用java.time.Period
主要是Period类方法getYear(), getMonths() 和getDays() 来计算,只能精确到年月日
用于LocalDate之间的比较

Duration

包装类就是8种基本数据类型对应的引用类型

为什么提供包装类
Java为了实现一切皆对象,为8种基本类型提供来了对应的引用类型
集合和泛型其实也只能支持包装类型,不支持基本数据类型

自动装箱:基本类型的数据和变量可以直接赋值给包装类型的变量
自动拆箱:包装类型的变量可以直接赋值给基本数据类类型的变量
包装类的特有功能
包装类的变量的默认值可以是null,容错率更高
可以把基本类型的数据转换成字符串类型

调用toString() 方法得到字符串结果
调用Integer.toString(基本类型的数据)

可以把字符串类型的数值转换成真是的数据类型

Integer.parseInt(“字符串类型的整数”)
Double.parseDouble(“字符串类型的小数”)
valueOf() 效果一样

正则表达式可以用一些规定的字符来指定规则,并用来校验数据格式的合法性

字符串对象提供了匹配正则表达式规则的API

案例:使用正则表达式完成如下需求
1.便且程序模拟用户输入手机号码,验证格式是否正确,并给出提示,直到格式输入正确为止
2.便且程序模拟用户输入邮箱号码,验证格式是否正确,并给出提示,直到格式输入正确为止
3.便且程序模拟用户输入电话号码,验证格式是否正确,并给出提示,直到格式输入正确为止

正则表达式在字符串方法中的使用

正则表达式爬取信息

数组操作工具类,专门用于处理数组元素
Array类的常用API

自定义排序规则
设置Comparator接口对比的比较器对象,来定制比较规则

如果认为左边数据大于右边数据返回正整数
如果认为左边数据小于右边数据返回负整数
如果认为左边数据等于右边数据返回0

选择排序
每轮选择当前位置,开始找出后面的较小值与该位置交换

二分查找
在数据量特别大的时候,基本查找从前往后寻找的性能是很差的
二分查询性能好,二分查找的前提是必须是排序好的数据
二分查找正常的检索条件应该是开始位置min<= 结束位置max

步骤

定义变量记录左边和右边位置
使用while循环控制查询(条件是左边位置<=右边位置)
循环内部获取中间元素索引
判断当前要找的元素如果大于中间元素,左边位置=中间索引+1
判断当前要找的元素如果等于中间元素,右边位置=中间索引-1
判断当前要找的元素如果等于中间元素,返回当前中间元素索引

Lambda表达式是JDK 8开始后的一种新语法形式
作用:简化匿名内部类的代码写法
Lambda表达式的简化形式

注意:Lambda表达式只能简化函数时接口的匿名内部类的写法形式

首先必须是接口、其次接口中有且仅有一个抽象方法的形式
通常会在接口上加上一个@FunctionalInterface注解,标记该接口满足函数式接口

好处:Lambda是一个匿名函数,可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使Java语言表达能力得到了提升

Lambda表达式的省略规则
参数类型可以不写
如果只有一个参数,参数类型可以省略,同时()也可以省略
如果Lambda表达式的方法体代码只有一行,可以省略大括号不写,同时要省略分号
如果Lambda表达式的方法体代码只有一行代码,可以生路大括号不写,此时,如果这行代码是return语句,必须省略return不屑,同时也必须省略分号不写


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号