/**
* Copyright (C), 2001-2022, www.bosssof.com.cn
* FileName: UtilDemo
* Author: Administrator
* Date: 2022-10-25 09:47:02
* Description:
* <p>
* History:
* <author> Administrator
* <time> 2022-10-25 09:47:02
* <version> 1.0.0
* <desc> 该文件针对(五) 常用工具类作业进行了demo开发
*/
package com.bosssoft.hr.train.j2se.util;
import com.bosssoft.hr.train.j2se.colletion.inter.Predicate;
import com.bosssoft.hr.train.j2se.pojo.entity.User;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
/**
* @ClassName: UtilDemo
* @Description: 对工具类的使用通过method 1 到 method7 进行了演示,通过作业能在后续
* 开发中充分的利用系统提供的工具类不重复发明轮子,如果组织有对其封装则调用组织封装的这点依据实际的项目要求工作
* @Author: Administrator
* @Date: 2022-10-25 09:47
**/
@Slf4j
public class UtilDemo {
/**
* method1-mehtod4 为集合工具类作业这个和作业要求对应 JDK util
* Collections
* 该方法为 sort
*/
public void method1(){
// 创建测试数据
List<Integer> integerList = createList();
/**
* 通过例子我们了解集合类的sort方法,sort方法有诸多重载
* 例如 Collections.sort(list,comparetor) 用于list内是对象需要依据对应的指定列比较
* 的情况,这点和前面的作业TreeSet的排序输出相相似
*/
Collections.sort(integerList);
for(Iterator<Integer> iterator= integerList.iterator();iterator.hasNext(); ){
log.info("元素",iterator.next());
}
}
/**
* 创建测试数据
* @return 整数数组列表
*/
private List<Integer> createList() {
List<Integer> integerList=new ArrayList<>();
// 初始化终止
Random random=new Random(1000);
for(int i=0;i<10;i++){
integerList.add(random.nextInt(100));//生成100以内数字
}
return integerList;
}
/**
* method1-mehtod4 为集合工具类作业这个和作业要求对应
* 首先在pom中引入 apache-common 下的 collection
* Apache CollectionUtils 该方法为 集合判空
* IsEmpty()
* Exist()
* AddAll()
*/
public void method2(){
List<Integer> integerList=createList();
/**
* null 或者没有内容都返回false ,通过该方法可以实现优雅的空判断
* 替代 if(null==interlist || integerList.size==0) then return true
*/
log.info("测试结果",CollectionUtils.isEmpty(integerList));
/**
* exist 判断 我们的集合langs中是否包含 Preicate指定的规则的数据如果包含返回true
*/
String[] langs = {"java", "python", "c"};
CollectionUtils.exists(Arrays.asList(langs), new Predicate<String>() {
@Override
public boolean evaluate(String s) {
return "python".equalsIgnoreCase(s);
}
});
/**
* 将另外一个langs2的数组并入本集合中,方便数组合并用词替代for循环合并数组
*/
String[] langs2 = {"java2", "python2", "c2"};
CollectionUtils.addAll(Arrays.asList(langs),langs2);
}
/**
* method1-mehtod4 为集合工具类作业这个和作业要求对应
* Arrays 该方法为 asList,sort,banarrySearch
*/
public void method3(){
Integer[] score=new Integer[]{5,2,3,4,1};
// 常用该方法把数组转化为列表
List<Integer> scoreList=Arrays.asList(score);
//数字排序 简单的支持 复杂的需要编写比较器 ,toArray 从列表转为数组
Object[] scoreChange=scoreList.toArray();
Arrays.sort(scoreChange);
// 查找,使用二分查找加快速度
Arrays.binarySearch(score,2);
// 依次拷贝3个元素到数组
Integer[] copyArray=Arrays.copyOf(score,3);
}
/**
* method1-mehtod4 为集合工具类作业这个和作业要求对应 Apache
* FileUtils
* 该方法为 listFiles
*/
public void method4(){
/**
* FileUitl 封装了 文件的各种操作,包括目录操作,文件操作(文件删除,文件内容读取,文件写入等)
* 下面例子演示了遍历某一个指定目录下的所有的文件,第2个代表类型,第3个参数代表递归遍历
* 在项目开发中经常碰到文件操作因此有必要熟悉该工具类
*/
Collection files= FileUtils.listFiles(new File("/"),new String[]{"*.java"},true);
}
/**
* method5 字符串操作是项目中参见操作,建议使用字符串工具类操作
* StringUtil ,该类在apache-common-lang3,
* 该方法为 isEmpty 替代 string==null || string 内容为“”的判断
*/
public void method5(){
// 这个视为空
StringUtils.isEmpty("");
String hello=null;
//这个视图为空
StringUtils.isEmpty(hello);
}
/**
* method6对象拷贝是项目中参见操作例如 service层参数 DTO 转mapper操作的 entity,建议使用字符串工具类操作
* ,BeanUtil
* 该方法为 copyProperties 替代逐个的setXX方法
*/
public void method6() throws InvocationTargetException, IllegalAccessException {
User user=new User();
user.setCode("BS0001");
user.setName("同学1");
/**
* 如果对象列的太多没有使用copy则要单个赋值代码太繁琐,项目中多处用到对象拷贝
* 注意 如果对象内部包含对象和链表数组则只是拷贝应用,需要引入手动完成拷贝
* 对象拷贝库众多,效率上有所差别,如果对象数量比较大可以考虑其他的库,如果量不大
* apache BeanUtil.copy可以满足
* */
User userCopy=new User();
BeanUtils.copyProperties(user,userCopy);
}
/**
* method7对象拷贝是项目经常需要对用户输入的敏感数据加密例如 密码 等一些隐私数据,建议使用字符串工具类操作
* ,DigestUtils 替代 个人封装
* 该方法为 copyProperties 替代逐个的setXX方法
*/
public void method7() throws UnsupportedEncodingException {
// MD5 加密 部分网站可以暴力破解
String password="helloworld";
byte[] bytePassword=password.getBytes("utf-8");
DigestUtils.md5(bytePassword);
// SH3 加密 安全性更好不可逆
DigestUtils.sha3_256(bytePassword);
}
}
j2se练习代码 Java学习资料
需积分: 0 33 浏览量
更新于2023-06-25
收藏 27KB ZIP 举报
Java SE(标准版)是Java开发平台的核心部分,主要用于桌面应用程序和服务器端程序的开发。J2SE(Java 2 Platform, Standard Edition)是它的早期版本称呼,现在通常称为Java SE。本压缩包"bosssoft-train-j2se-master"包含的是一份关于Java SE的学习资源,特别适合那些想要提升Java编程技能或者进行Java基础练习的人。
Java语言以其跨平台、面向对象、安全性和高效性而受到广泛欢迎。J2SE提供了丰富的API,包括I/O流、网络编程、多线程、集合框架、数据库连接等,这些都是Java程序员必须掌握的基础知识。在这个压缩包中,你可以找到一系列针对这些主题的练习代码,通过实践来加深对Java的理解。
在"bosssoft-train-j2se-master"中,可能包含以下内容:
1. **基础语法**:如变量、数据类型、运算符、流程控制语句(if、switch、for、while)、方法定义与调用等,这是Java编程的基石。
2. **面向对象**:包括类、对象、封装、继承、多态等概念,以及接口和抽象类的使用。
3. **集合框架**:如ArrayList、LinkedList、HashSet、HashMap等容器的使用,理解它们的实现原理和应用场景。
4. **异常处理**:学习如何使用try-catch-finally语句块来捕获和处理程序运行时可能出现的错误。
5. **多线程**:掌握Thread类的使用,理解同步和异步的概念,以及synchronized关键字的应用。
6. **I/O流**:包括文件操作、字节流、字符流、对象流等,以及NIO(New I/O)框架的使用。
7. **网络编程**:TCP和UDP协议的使用,Socket编程,HTTP客户端和服务器的实现。
8. **数据库编程**:JDBC(Java Database Connectivity)的使用,包括数据库连接、SQL语句执行、结果集处理等。
9. **反射机制**:了解如何在运行时动态地获取类的信息并操作类的对象。
10. **泛型**:学习如何使用泛型来提高代码的类型安全性和重用性。
11. **枚举和注解**:理解枚举类型及其在程序中的应用,以及注解的作用和自定义注解的创建。
12. **设计模式**:如单例、工厂、装饰器、代理等经典设计模式的实现和应用。
通过这个压缩包中的练习代码,你可以逐步熟悉和掌握Java SE的各项核心特性,并且能够将所学应用到实际项目中。不断实践和调试代码是提升编程技能的关键,所以不要怕犯错,勇敢去尝试和解决问题。同时,结合理论学习,如阅读相关书籍或在线教程,将有助于你更好地理解这些代码背后的原理。
哆啦哆啦S梦
- 粉丝: 193
- 资源: 517
最新资源
- 建筑工程消防验收现场评定表.docx
- 交叉检查记录表(急救分中心).doc
- 交叉检查记录表(社区服务中心和乡镇卫生院).doc
- 居家适老化改造补贴实施细则产品功能表.docx
- 井田勘探探矿权出让收益评估报告( 模板).doc
- 髋关节功能丧失程度评定表.docx
- 买断式回购应急确认对话报价申请单.docx
- 每月质量安全调度会议纪要.docx
- 每月电梯安全调度会议纪要.docx
- 每周电梯质量安全排查报告.docx
- 每周电梯安全排查报告.docx
- 每月质量安全调度会议纪要表.docx
- 排水管网情况表.docx
- 聘请服务审批表(表格模板).docx
- 培训班次计划表.doc
- 密闭式输液表格、注意事项.docx