版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章
Java实用类库目录CONTENTS01字符串的奥秘02Math类与Random类03系统交互通道04综合实战演练05回顾与练习指引字符串的奥秘01String不可变设计与创建方式String不可变性Java中String对象一旦创建便不可更改,任何修改操作都会生成新实例。这一特性保证了字符串的哈希值恒定,从而确保线程安全,避免多线程环境下的数据冲突。创建方式创建String对象有多种方式,最常见的是使用字面量直接赋值,如`Stringstr="Hello";`。这种方式简单高效,且相同的字面量会共享内存,节省空间。构造方法String类还提供了多种构造方法,例如`String(char[]a)`可以根据字符数组创建字符串,`String(char[]a,intoffset,intlength)`则可以根据字符数组的一部分创建字符串,提供了灵活的创建选项。String高频方法速查常用方法String类提供了丰富的常用方法,如`length()`获取字符串长度,`charAt(intindex)`获取指定索引处的字符,`equals(ObjectanObject)`比较字符串内容等,这些方法是字符串处理的基础工具。StringBuffer与StringBuilder选型01StringBufferStringBuffer是一个线程安全的可变字符序列,适合在多线程环境中使用。它的方法是同步的,因此在并发场景下可以保证数据的正确性。02StringBuilderStringBuilder是Java5新增的可变字符序列类,与StringBuffer功能类似,但它是非线程安全的,因此在单线程环境下性能更高,是更常用的选择。03性能差异由于StringBuffer的同步机制,它在多线程环境下虽然安全,但会带来一定的性能开销。而StringBuilder去掉了同步锁,因此在单线程场景下速度更快。04选择建议在选择StringBuffer还是StringBuilder时,主要考虑线程安全性和性能。如果需要在多线程环境下操作字符串,应使用StringBuffer;在单线程环境下,推荐使用StringBuilder。Math类与Random类02Math类常量与绝对值取整数学常量Math类提供了两个重要的数学常量:Math.PI表示圆周率π,其值约为3.141592653589793;Math.E表示自然对数的底e,其值约为2.718281828459045。这些常量在数学计算中非常有用。绝对值与取整Math类提供了多种绝对值方法,如`Math.abs(inta)`返回int值的绝对值,`Math.abs(doublea)`返回double值的绝对值。此外,还有`Math.ceil(doublea)`向上取整,`Math.floor(doublea)`向下取整,以及`Math.round(doublea)`四舍五入等方法。Math类幂根与三角对数幂运算Math类中的`Math.pow(doublea,doubleb)`方法用于计算a的b次幂。例如,`Math.pow(2.0,3.0)`返回8.0,表示2的3次幂。开方运算Math类提供了`Math.sqrt(doublea)`用于计算a的正平方根,`Math.cbrt(doublea)`用于计算a的立方根。例如,`Math.sqrt(16.0)`返回4.0,`Math.cbrt(27.0)`返回3.0。三角函数Math类还提供了丰富的三角函数方法,如`Math.sin(doublea)`、`Math.cos(doublea)`和`Math.tan(doublea)`分别计算正弦、余弦和正切值。这些方法的参数是以弧度为单位的。Random类构造与种子控制构造方法Random类提供了两种构造方法:无参构造方法`Random()`使用当前系统时间的毫秒数作为种子,每次运行时生成的随机数序列不同;带参构造方法`Random(longseed)`使用指定的种子,可以生成可重复的随机数序列。种子的作用种子在随机数生成中起着关键作用。使用相同的种子创建多个Random实例,它们将生成相同的随机数序列。这在需要可重复的随机数序列时非常有用,例如在测试或模拟中。Random类多类型随机数生成整数随机数Random类的`nextInt()`方法返回一个随机整数,`nextInt(intn)`方法返回一个在0(包括)和指定值n(不包括)之间的随机整数。长整型随机数Random类的`nextLong()`方法返回一个随机长整数。浮点数随机数Random类的`nextFloat()`方法返回一个在0.0和1.0之间的随机浮点数,`nextDouble()`方法返回一个在0.0和1.0之间的随机双精度浮点数。布尔型随机数Random类的`nextBoolean()`方法返回一个随机布尔值,`nextGaussian()`方法返回一个呈高斯分布的随机双精度浮点数。系统交互通道03System标准流与环境属性标准流System类提供了三个静态的PrintStream对象:System.in代表标准输入流,通常与键盘输入关联;System.out代表标准输出流,通常与控制台输出关联;System.err代表标准错误输出流,用于输出错误信息。环境属性System类的`getProperty(Stringkey)`方法用于获取系统属性。例如,`System.getProperty("java.version")`返回Java运行时环境版本,`System.getProperty("")`返回操作系统名称。System时间数组与虚拟机控制
01时间获取System类的`currentTimeMillis()`方法返回当前时间的毫秒数,从1970年1月1日00:00:00GMT开始计算。该方法常用于测量代码执行时间和生成时间戳。02数组复制System类的`arraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)`方法用于将源数组中指定范围的元素复制到目标数组的指定位置。这是一个高效的数组复制方法。03虚拟机控制System类的`exit(intstatus)`方法用于终止当前正在运行的Java虚拟机。非零的状态码通常表示异常终止。`gc()`方法用于运行垃圾回收器,但不能保证立即执行。综合实战演练04日志记录器需求与类结构设计日志记录器需求日志记录器需要支持INFO、WARNING、ERROR三种日志级别,每条日志包含时间戳、随机事件ID和消息文本。INFO和WARNING级别的日志输出到标准输出流,ERROR级别的日志输出到标准错误流。类结构设计SimpleLogger类包含三个静态方法:logInfo、logWarning和logError,分别用于记录不同级别的日志。类内使用私有静态Random实例生成随机事件ID,保证多线程复用。日志格式日志格式为`[时间][级别][事件ID]消息`,其中时间使用`%tF%tT`格式化为YYYY-MM-DD和HH:MM:SS,事件ID由Random生成,消息为用户传入的字符串。时间戳与随机ID生成实现时间戳获取在日志方法中调用`System.currentTimeMillis()`获取当前时间的毫秒数,并使用`%tF`和`%tT`格式化为日期和时间。随机ID生成使用`Random`类的`nextInt(1000)`方法生成0到999之间的随机事件ID,确保每条日志都有唯一的标识。分级输出与运行效果展示分级输出INFO和WARNING级别的日志使用`System.out.println()`输出,ERROR级别的日志使用`System.err.println()`输出,便于在控制台区分日志类型。运行效果运行示例显示,同一秒内多条日志拥有不同的事件ID,ERROR级别的日志以红色显示,方便快速定位错误信息。日志示例示例输出:`[2025-05-1107:10:00][INFO][事件ID:345]应用程序启动。`,`[2025-05-1107:10:00][ERROR][事件ID:567]发生了一个严重的错误!`。回顾与练习指引05核心概念速览与易错点提醒核心概念String的不可变性带来了安全性和复用优势,Math类提供了丰富的数学运算方法,Random类用于生成随机数,System类用于与系统交互。易错点提醒StringBuffer和StringBuilder的区别在于线程安全性和性能,Math类中的角度计算需要转换为弧度,System类的属性读取返回的是字符串,需要自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 巴音郭楞蒙古自治州和静县2025年数学三年级下学期期末学业水平测试模拟试题(含答案)
- 中国护理质量评估工具的应用与优化
- 护理服务流程与肿瘤护理
- 月子护理师产后体重管理指导
- 巢湖市2025年三年级数学下学期期中调研试题(含答案解析)
- 副高级护理实践:危重症护理新进展
- 危重患者管道护理的应急演练
- 岳阳市岳阳县2025届三下数学期中教学质量检测试题含答案解析
- ICU老年护理策略
- 中医儿科护理的伦理与法律
- 2025年山东省济南市初二学业水平地理生物会考真题试卷(+答案)
- 2026重庆渝富控股集团有限公司所属企业招聘14人笔试模拟试题及答案详解
- 高中思想政治·高一年级主题班会教学设计:铸魂立心担使命·知行合一护国安-2026年公民道德宣传日暨全民国防教育日融合主题班会教学设计
- 2026年中华人民共和国水法知识精彩试题及问题详解附答案
- 2026年中学中考高考安全工作应急预案
- (2025年)山东交通学院交通工程期末复习题及参考答案
- 2025年湖南省益阳市初二学业水平地理生物会考真题试卷(+答案)
- 2025年山东夏季高中学业水平合格考试历史试卷真题(含答案详解)
- 2026年高中学业水平考核美术复习试题及一套参考答案详解
- 2026年物流学概论第五版崔介何练习试题附答案详解(A卷)
- 2026年三年级道德与法治下册全册期末考试知识点材料
评论
0/150
提交评论