学号 20175206 《Java程序设计》第七周学习总结

教材学习内容总结

第八章:

主要内容
String类
StringTokenizer类
Scanner类
StringBuffer类
Date与Calendar类
日期格式化
Math、BigInteger与Random类
数字格式化
Class类与Console类
Pattern与Match类

重点和难点
重点:字符串的常用方法;字符串分析器使用;类Date和类Calendar以及类Math的使用
难点:字符串分析器的使用;各常用类的实际运用

String类
Java专门提供了用来处理字符序列的String类。
String类在java.lang包中,由于java.lang包中的类被默认引入,因此程序可以直接使用String类。
需要注意的是Java把String类声明为final类,因此用户不能扩展String类,即String类不可以有子类。

StringTokenizer类
本节学习怎样使用StringTokenizer对象分解String对象的字符序列。
StringTokenizer类在java.util包中,有两个常用的构造方法:
StringTokenizer(String s):为String对象s构造一个分析器。使用默认的分隔标记,即空格符、换行符、回车符、Tab符、进纸符做分隔标记。
StringTokenizer(String s, String delim为String对象s构造一个分析器。参数delim的字符序列中的字符的任意排列被作为分隔标记。

StringTokenizer对象称作一个字符串分析器可以使用下列方法:

(1) nextToken():逐个获取字符串中的语言符号(单词),字符串分析器中的负责计数的变量的值就自动减一 。

(2) hasMoreTokens():只要字符串中还有语言符号,即计数变量的值大于0,该方法就返回true,否则返回false。
(3)countTokens():得到分析器中计数变量的值。

Scanner类
使用Scanner类从字符串中解析程序所需要的数据。
Scanner对象可以解析字符序列中的单词,例如,对于String对象NBA
String NBA = "I Love This Game";
为了解析出NBA的字符序列中的单词,可以如下构造一个Scanner对象。
Scanner scanner = new Scanner(NBA);
Scanner对象可以调用方法
useDelimiter(正则表达式);
将正则表达式作为分隔标记,即让Scanner对象在解析操作时,把与正则表达式匹配的字符序列作为分隔标记。如果不指定分隔标记,那么Scanner对象默认地用空白字符:空格,制表符,回行符作为分隔标记来解析String对象的字符序列中的单词。
scanner将空格做为分隔标记来解析字符序列中的单词,具体解析操作:
scanner调用next()方法依次返回NBA中的单词,如果NBA最后一个单词已被next()方法返回,scanner调用hasNext()将返回false,否则返回true。
对于被解析的字符序列中的数字型的单词,比如618,168.98等,scanner可以用nextInt()或nextDouble()方法来代替next()方法,即scanner可以调用nextInt()或nextDouble()方法将数字型单词转化为int或double数据返回。
如果单词不是数字型单词,scanner调用nextInt()或nextDouble()方法将发生InputMismatchException异常,在处理异常时可以调用next()方法返回该非数字化单词。
Scanner对象可以调用 useDelimiter(正则表达式); 方法将一个正则表达式作为分隔标记,即和正则表达式匹配的字符串都是分隔标记。

StringBuffer类
String对象的字符序列是不可修改的,也就是说,String对象的字符序列的字符不能被修改、删除,即String对象的实体是不可以再发生变化的。
StringBuffer类的对象的实体的内存空间可以自动地改变大小,便于存放一个可变的字符序列。

Date与Calendar类
Date类
Date类在java.util包中.
Date类的构造方法之一:
Date()使用Date类的无参数构造方法创建的对象可以获取本地当前时间。
Date类的构造方法之二:
Date(long time)使用long型参数创建指定的时间
计算机系统将其自身的时间的“公元”设置在1970年1月1日0时(格林威治时间),可以根据这个时间使用Date的带参数的构造方法:Date(long time)来创建一个Date对象
Calendar类
Calendar类在java.util包中。
使用Calendar类的static方法 getInstance()可以初始化一个日历对象,
calendar对象可以调用方法:
public long getTimeInMillis() 可以将时间表示为毫秒。
public final void setTime(Date date)使用给定的 Date 设置此 Calendar 的时间
public int get(int field) :可以获取有关年份、月份、小时、星期等信息

日期的格式化
format方法
Formatter类的format方法:
format(格式化模式, 日期列表)
按着“格式化模式”返回“日期列表”中所列各个日期中所含数据(年,月,日,小时等数据)的字符串表示。
Java已经将format方法做为了String类的静态方法,因此,程序可以直接使用String类调用format方法对日期进行格式化。
1)格式化模式
format方法中的“格式化模式”是一个用双引号括起的字符序列(字符串),该字符序列中的字符由时间格式符和普通字符所构成。
2)日期列表
format方法中的“日期列表”可以是用逗号分隔的Calendar对象或Date对象。
format方法默认按从左到右的顺序使用“格式化模式”中的格式符来格式“日期列表”中对应的日期,而“格式化模式”中的普通字符保留原样。
3)格式化同一日期
可以在“格式化模式”中使用“<”,比如:"%ty-%<tm-%<td"中的三个格式符将格式化同一日期,即含有“<”的格式符和它前面的格式符格式同一个日期,例如:String s = String.format("%ty年%<tm月%<td日",new Date());那么%<tm和%<td都格式化new Date(),因此字符串s就是:"11年02月10日"。
不同区域的星期格式
如果想用特定地区的星期格式来表示日期中的星期,可以用format的重载方法:
format (Locale locale,格式化模式,日期列表);
其中的参数locale是一个Locale类的实例,用于表示地域。
Locale类的static常量都是Locale对象,其中US是表示美国的static常量。

Class类与Console类
1.使用Class的类方法得到一个和某类(参数className指定的类)相关的Class 对象,
public static Class forName(String className) throws ClassNotFoundException
上述方法返回一个和参数className指定的类相关的Class对象。如果类在某个包中,className必须带有包名,例如, className="java.util.Date"。
2.步骤1中获得的Class对象调用
public Object newInstance() throws Exception,
方法就可以得到一个className类的对象
要特别注意的是:使用Class对象调用newInstance()实例化一个className类的对象时,className类必须有无参数的构造方法。
得到匹配对象

Pattern与Matcher类
Java提供了专门用来进行模式匹配的Pattern类和Matcher类,这些类在java.util.regex包中。
以下结合具体问题来讲解使用Pattern类和Matcher类的步骤。假设有字符串:
String input = "hello,good morning,this is a good idea"
我们想知道input从哪个位置开始至哪个位置结束曾出现了字符串good。
使用Pattern类和Matcher类检索字符串str中的子字符串的步骤如下:
建立模式对象
使用正则表达式regex做参数得到一个称为模式的Pattern类的实例pattern:
例如:String regex = "good";
Pattern pattern = Pattern.compile(regex);
模式对象是对正则表达式的封装。Pattern类调用类方法compile(String regex)返回一个模式对象,其中的参数regex是一个正则表达式, 称为模式对象使用的模式。
得到匹配对象
模式对象pattern调用matcher(CharSequence input)方法返回一个Matcher对象matcher,称为匹配对象
Matcher matcher = pattern.matcher(input);
Matcher对象matcher可以使用下列方法寻找字符串input中是否有和模式regex匹配的子序列(regex是创建模式对象pattern时使用的正则表达式)。
public boolean find():寻找input和regex匹配的下一子序列,如果成功该方法返回true,否则返回false。
public boolean matches():matcher调用该方法判断input是否完全和regex匹配。
public boolean lookingAt():matcher调用该方法判断从input的开始位置是否有和regex匹配的子序列。
public boolean find(int start) : matcher调用该方法判断input从参数start指定位置开始是否有和regex匹配的子序列 。
public String replaceAll(String replacement) matcher调用该方法可以返回一个字符串,该字符串是通过把input中与模式regex匹配的子字符串全部替换为参数replacement指定的字符串得到的.
public String replaceFirst(String replacement) matcher调用该方法可以返回一个字符串,该字符串是通过把input中第1个与模式regex匹配的子字符串替换为参数replacement指定的字符串得到的。

代码调试中的问题和解决过程

  • 问题1:Class与Console类区别?

class调用

console类

  • 问题1解决方案:Class 是java.lang的类,该类的示例可以帮助创建其他的实例。

  • 问题2:math类,biginteger类和random类
  • 问题2解决方案:

math类
biginteger类
random类

[代码托管]

码云学习项目链接(https://gitee.com/ldc792975996/20175206_li_dechen/tree/master/%E7%AC%AC%E4%B8%83%E5%91%A8%E4%BB%A3%E7%A0%81)

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 3500行 8篇 100小时
第五周 350/500 2/2 15/20
第六周 350/500 2/2 20/30
第七周 600/1000 2/2 25/25
第八周 0/1500 0/2 0/25

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:25小时

  • 实际学习时间:25小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

第七周java学习总结的更多相关文章

  1. 20165203《Java程序设计》第七周Java学习总结

    20165203<Java程序设计>第七周Java学习总结 教材学习内容总结 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系统,简称MySQL,是世 ...

  2. 20165223《Java程序设计》第七周Java学习总结

    教材学习内容总结 第11章-JDBC与MySQL数据库 要点 MySQL数据库管理系统 连接MySQL数据库 查询操作(基础) 更新.添加.删除(基础) 预处理语句(重点) 通用查询(难点) 事务 笔 ...

  3. 20145307第七周JAVA学习报告

    20145307<Java程序设计>第七周学习总结 教材学习内容总结 Lambda Lambda语法概述: Arrays的sort()方法可以用来排序,在使用sort()时,需要操作jav ...

  4. 2019年8月12日~8月18日 第七周JAVA学习总结

    本周主要完成了PTA代码编写的任务,将报告也完成了,但是由于同学聚会比较多所以JAVA的学习比较少,也没有学习统一建模语言.用在编程的时间平均每天5个小时,用在JAVA学习上平均每天1个小时,用在解决 ...

  5. 201521123105 第七周Java学习总结

    1. 本周学习总结 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 以下是ArrayList的contains源代码: public boole ...

  6. 201871010124王生涛第六七周JAVA学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://edu.cnblogs.com/campus/xbsf/ ...

  7. 20165236 第六周Java学习总结

    20165236 第六周Java学习总结 一. 第八章内容: 1.String 类: String对象.常量对象:字符串并置: 常用方法: length,equals,startsWith,compa ...

  8. 第五周Java学习总结(补)

    第五周java学习内容(补) 学习内容: File类方法的操作 public String getName() public boolean canRead() public boolean canW ...

  9. 20145307陈俊达第六周JAVA学习总结

    20145307陈俊达第六周JAVA学习总结 知识点梳理 第十章节 S1 ·若要将数据从来源中取出,可以使用输入串流:若要将数据写入目的地,可以使用输出串流.在java中,输入串流代表对象为java. ...

随机推荐

  1. Jinja2用法总结

    Jinja2用法总结   一:渲染模版 要渲染一个模板,通过render_template方法即可. @app.route('/about/') def about(): # return rende ...

  2. css的三种书写方式

    一.内联样式 <p style="color: sienna; margin-left: 20px"> This is a paragraph </p> 二 ...

  3. Snapde和Excel、PowerPivot、WPS打开超大CSV文件性能比较

    Snapde,一个专门为编辑超大型数据量CSV文件而设计的单机版电子表格软件:它运行的速度非常快,反应非常灵敏. 我们拿四份文件进行测试,对比一下他们打开大文件的性能:loan_theme_ids.c ...

  4. 大华门禁SDK二次开发(二)-SignalR应用

    经过与大华技术支持的沟通,门禁服务程序已经开发好了,可以正常接收门禁开关事件,可以发送开门命令.基于项目实时性要求,这里使用SignalR实现门禁状态.控制命令的实时传送. 几种场景需求 根据Sign ...

  5. 问题解决--无法解析的外部符号 _imp_XXXXXXXXX

    错误示例: 出现字符_imp,说明不是真正的静态库,而是某个动态库的导入库,导入函数和自己不同名,所以加了字符_imp.比如说_imp_GetUserNameA就是GetUserNameA函数. 会报 ...

  6. MPP-编码示例

    了解MPP的基本功能后,接下来具体分析编码的代码.首先把编码的代码提取出来,方便以后的使用. 完整的编码代码如下,相比较给出的示例代码,做了一些改动,输入的指令全部去除,将函数入口改为利用OpenCV ...

  7. 走进Java Map家族 (1) - HashMap实现原理分析

    在Java世界里,有一个古老而神秘的家族——Map.从底层架构到上层应用,他们活跃于世界的每一个角落.但是,每次出现时,他们都戴着一张冷硬的面具(接口),深深隐藏着自己的内心.所有人都认识他们,却并非 ...

  8. git window安装与注册邮箱用户名

    1.git window版本下载 https://git-scm.com/downlods 下载完后点击安装包安装,一直下一步就行; 2.验证安装是否成功 在开始菜单里找到“Git”->“Git ...

  9. 解决vs2017不能添加引用问题

    c# 添加引用时报错:“未能正确加载“ReferenceManagerPackage”包”的解决方法 在添加应用的时候,右键点击“引用”,选择“添加引用”后,会提示“**未能正确加载Reference ...

  10. 安装Linux虚拟系统

    VMWare创建虚拟机与Linux系统的安装 准备工作:VMWare虚拟机,Linux系统镜像 创建好虚拟机之后就可以进入Bios(Basic input ouput system)界面设置安装引导顺 ...