zoukankan      html  css  js  c++  java
  • 第七周java学习总结

    学号 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/第七周代码)

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 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小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    ASP.NET Core 从入门到精通-资源收集导航
    【5分钟系列】计算机系统结构的定义
    C#反射与特性(九):全网最全-解析反射
    C#反射与特性(七):自定义特性以及应用
    C#反射与特性(六):设计一个仿ASP.NETCore依赖注入Web
    C#反射与特性(五):类型成员操作
    C#反射与特性(四):实例化类型
    C#反射与特性(三):反射类型的成员
    C#反射与特性(二):探究反射
    安卓TabLayout+ViewPager实现切页
  • 原文地址:https://www.cnblogs.com/ldc175206/p/10686076.html
Copyright © 2011-2022 走看看