20175319 2018-2019-2 《Java程序设计》第7周学习总结

教材学习内容总结

本周学习《Java程序设计》第8章:

1.String类:

  • Java专门提供了用来处理字符序列的String
  • 构造String对象
    • 常量对象

      • 字符串常量对象是用双引号括起的字符序列
      • 常量池
    • String对象
      • 可以使用String类声明对象并创建对象
      • 用户无法输出String对象的引用
      • 两个较常用的构造方法
        1.String (char a[])用一个字符数组a创建一个String对象
        2.String(char a[],int startIndex,int count)提取字符数组a中的一部分字符创建一个String对象,参数startIndexcount分别指定在a中提取字符的起始位置和从该位置开始截取的字符个数。
  • 字符串的并置
    • String对象可以用+进行并置运算,即首尾相接得到一个新的String对象
    • 如果是两个常量进行并置运算,那么得到的仍然是常量,如果常量池没有这个常量就放入常量池。
    • 参与并置运算的String对象,只要有一个是变量,那么Java就会在动态区存放所得到的新String对象的实体和引用。
  • String类的常用方法
    • public int length()获取一个字符串的长度
    • public boolean equals(String s)判断当前String对象的字符序列是否与参数s指定的String对象的字符序列相同
    • public boolean startsWith(String s)判断当前String对象的字符序列前缀是否是参数指定的String对象s的字符序列
    • public boolean endsWith(String s)判断当前String对象的字符序列后缀是否是参数指定的String对象s的字符序列
    • public int compareTo(String s)按字典序与参数s指定的字符序列比较大小
    • public boolean contains(String s)``String对象调用contains方法判断当前String对象的字符序列是否包含参数s的字符序列
    • public int indexOf (String str)``String对象调用方法从当前String对象的字符序列的0索引位置开始检索首次出现str的字符序列的位置,并返回该位置。如果没有检索到,该方法返回的值是–1
    • public int lastIndexOf(String ste)从当前String对象的字符序列的0索引位置开始检索最后一次出现str的字符序列的位置,并返回该位置。如果没有检索到,该方法返回的值是-1
    • public String substring(int startpoint)字符串对象调用该方法获得一个新的String对象,新的String对象的字符序列是复制当前String对象的字符序列中的startpoint位置至最后位置上的字符所得到的字符序列。String对象调用substring(int start ,int end)方法获得一个新的String对象,新的String对象的字符序列是复制当前String对象的字符序列中的start位置至end–1位置上的字符所得到的字符序列
      -public String trim()得到一个新的String对象,这个新的String对象的字符序列是当前String对象的字符序列去掉前后空格后的字符序列
  • 字符串与基本数据的相互转化
    • Java.lang包中的Integer类调用其类方法:public static int parseInt(String s)可以将由“数字”字符组成的字符串,转化为int型数据
    • 使用java.lang包中的Byte、Short、Long、Float、Double类调相应的类方法可以将由"数字"字符组成的字符串,转化为相应的基本数据类型
    • public static String valueOf(n的类型, n)可以使用String类的类方法将数值转化为String对象
  • 对象的字符串表示
    • 一个对象通过调用public String toString()方法可以获得该对象的字符序列表示。一个对象调用toString()方法返回的String对象的字符序列的一般形式为:
      创建对象的类的名字@对象的引用的字符串表示字符串与字符、字节数组
  • 字符串与字符数组、字节数组
    • 字符串与字符数组

      • String(char[ ])用指定的字节数组构造一个字符串对象
      • String(char[ ],int offset,int length)用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象
      • public char[] toCharArray()String对象的全部字符序列存放到数组中
      • public void getChars(int start,int end,char c[],int offset )String对象的部分字符序列存放到数组中
    • 字符串与字节数组
      • String(byte[])用指定的字节数组构造一个字符串对象
      • String(byte[],int offset,int length)用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象
      • public byte[] getBytes()使用平台默认的字符编码,将当前String对象的字符序列存放到字节数组,并返回数组的引用
      • public byte[] getBytes(String charsetName)使用参数指定字符编码,将当前String对象的字符序列存放到字节数组,并返回数组的引用
    • 字符串的加密算法
      • char [] p = password.toCharArray();
  • 正则表达式及字符串的替换与分解
    • 正则表达式

      • 正则表达式是一个String对象的字符序列,该字符序列中含有具有特殊意义字符,这些特殊字符称做正则表达式中的元字符
      • String对象调用public boolean matches(String regex)方法可以判断当前String对象的字符序列是否和参数regex指定的正则表达式匹配
    • 字符串的替换
      • public String repalceAll(String regex,String replacement)用参数replacement的字符序列替换当前String的字符序列中所有和参数regex匹配的子字符序列
    • 字符序列的分解
      • public String[] split(Sring regex)使用参数指定的正则表达式regex作为分割标记分解出当前String对象的字符序列中的单词,并将分解出的单词存放在String数组中

2.StringTokenizer

  • 两个常用的构造方法:

    • StringTokenizer(String s)String对象s构造一个分析器。使用默认的分隔标记,即空格符、换行符、回车符、Tab符、进纸符做分隔标记
    • StringTokenizer(String s, String delim)String对象s构造一个分析器。参数delim的字符序列中的字符的任意排列被作为分隔标记
  • StringTokenizer对象称作一个字符串分析器可以使用下列方法:
    • nextToken()逐个获取字符串中的语言符号(单词),字符串分析器中的负责计数的变量的值就自动减一 。
    • hasMoreTokens()只要字符串中还有语言符号,即计数变量的值大于0,该方法就返回true,否则返回false。
    • countTokens()得到分析器中计数变量的值

3.Scanner

  • Scanner对象可以解析字符序列中的单词
  • Scanner将空格做为分隔标记来解析字符序列中的单词,具体解析操作:
    • Sanner对象调用next()方法依次返回被解析的字符序列中的单词,如果最后一个单词已被next()方法返回,Scanner对象调用hasNext()将返回false,否则返回ture
    • 对于被解析的字符序列中的数字型单词,Scanner对象可以用nextInt()nextDouble()方法来代替next()方法
    • 如果单词不是数字型单词,Scanner对象调用nextInt()nextDouble()方法将数字型单词转化为intdouble数据返回
    • 如果单词不是数字型单词,Scanner对象调用nextInt()nextDOuble()方法将发生InputMismatchException异常,在处理异常时可以调用next()方法返回非数字化单词

4.StringBuffer

  • StringBuffer对象

    • StringBuffer类的对象的实体的内存空间可以自动地改变大小,便于存放一个可变的字符序列
    • 三个构造方法
      • StringBuffer()
      • StringBuffer(int size)
      • StringBuffer(String s)
  • StringBuffer类的常用方法
    • StringBuffer append(String s)将String对象s的字符序列追加到当前StringBuffer对象的字符序列中,并返回当前StringBuffer对象的引用
    • StringBuffer append(int n)int型数据n转化为String对象,再把该String对象的字符序列追加到当前StringBuffer对象的字符序列中,并返回当前StringBuffer对象的引用
    • StringBuffer append(Object o)将一个Object对象o的字符序列表示追加到当前String- Buffer对象的字符序列中,并返回当前StringBuffer对象的引用
    • public chat charAt(int n )得到参数n指定的置上的单个字符
    • public void setCharAt(int n ,char ch)将当前StringBuffer对象实体中的字符串位置n处的字符用参数ch指定的字符替换
    • StringBuffer insert(int index, String str)将参数str指定的字符串插入到参数index指定的位置
    • public StringBuffer reverse()将该对象实体中的字符翻转
    • StringBuffer delete(int startIndex, int endIndex)从当前StringBuffer对象实体中的字符串中删除一个子字符串
    • StringBuffer replace(int startIndex,int endIndex,String str)将当前StringBuffer对象实体中的字符串的一个子字符串用参数str指定的字符串替换

5.DateCalendar

  • Date类 - 构造方法 - 使用Date类的无参数构造方法创建的对象可以获取本地的当前日期和时间,例如Date nowTime=new Date();- 计算机系统将其自身的时间的“公元”设置在1970年1月1日0时(格林威治时间),可以根据这个时间使用Date的带参数的构造方法Date(long time)来创建一个Date`对象
  • Calendar
    • 使用Calendar类的static方法getInstance()可以初始化一个日历对象。
  • calendar对象可以调用方法:
    • public final void set(int year,int month,int date)
    • public final void set(int year,int month,int date,int hour,int minute)
    • public final void set(int year,int month, int date, int hour, int minute,int second)
    • 将日历翻到任何一个时间

6.日期的格式化

  • format方法
  • 不同区域的星期格式

7.MathBigIntegerRandom

  • Math

    • Math类包含许多用来进行科学计算的static方法
    • Math类有两个static常量:E 2.7182828284590452354PI 3.14159265358979323846
    • Math类的常用方法
      • public static long abs(double a)返回a的绝对值。
      • public static double max(double a,double b)返回a、b的最大值。
      • public static double min(double a,double b)返回a、b的最小值。
      • public static double random()产生一个0到1之间的随机数(不包括0和1)。
      • public static double pow(double a,double b)返回a的b次幂。
      • public static double sqrt(double a)返回a的平方根。
      • public static double log(double a)返回a的对数。
      • public static double sin(double a)返回正弦值。
      • public static double asin(double a)返回反正弦值。
      • public static double ceil(double a)返回大于a的最小整数,并将该整数转化为double型数据。
      • public static double floor(double a)返回小于a的最大整数,并将该整数转化为double型数据。
      • public long double round(double a)返回a的“四舍五入”后的值。
  • BigInteger
    • java.math包中的BigInteger类提供任意精度的整数运算。可以使用构造方法:public BigInteger(String val)构造一个十进制的BigInteger对象
    • public BigInteger add(BigInteger val)返回当前大整数对象与参数指定的大整数对象的和。
    • public BigInteger subtract(BigInteger val)返回当前大整数对象与参数指定的大整数对象的差。
    • public BigInteger multiply(BigInteger val)返回当前大整数对象与参数指定的大整数对象的积。
    • public BigInteger divide(BigInteger val)返回当前大整数对象与参数指定的大整数对象的商。
    • public BigInteger remainder(BigInteger val)返回当前大整数对象与参数指定的大整数对象的余。
    • public int compareTo(BigInteger val)返回当前大整数对象与参数指定的大整数的比较结果,返回值是1、-1或0,分别表示当前大整数对象大于、小于或等于参数指定的大整数。
    • public BigInteger pow(int a)返回当前大整数对象的a次幂。
    • public String toString()返回当前大整数对象十进制的字符串表示。
    • public String toString(int p)返回当前大整数对象p进制的字符串表示。
  • Random
    • 构造方法:

      • public Random();使用当前机器时间作为种子创建一个Randow对象
      • public Random(long seed);使用参数seed指定的种子创建一个Random对象

8.数字格式化

  • format方法
  • 格式化整数
  • 格式化浮点数

9.Class类与Console

  • Class

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

10.PatternMatcher

  • Java提供了专门用来进行模式匹配的Pattern类和Matcher类,这些类在java.util.regex包中
  • 建立Pattern对象
    • 使用正则表达式regex作参数得到一个称为模式的Pattern类的实例pattern
    • Pattern对象是对正则表达式的封装。Pattern类调用类方法compile(String regex)返回一个Pattern对象,其中的参数regex是一个正则表达式,称为模式对象使用的模式
  • 得到Matcher对象
    • 模式对象pattern调用matcher(CharSequence input)方法返回一个Matcher对象matcher,称为匹配对象,参数input用于给出matcher要检索的String对象

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

  • 问题1:运行第8章例题7时,出现

  • 问题1解决方案: GBK中汉字字节长度为2,UTF-8中汉字的字节长度为3,修改代码后即可正常运行。


代码托管

xxx
xxx

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 156/156 1/1 20/20
第二周 275/431 1/2 22/42
第三周 761/1192 1/3 31/73
第四周 428/1620 1/4 26/99
第五周 264/1884 1/5 11/110
第六周 1265/3149 4/9 32/142
第七周 551/3700 2/11 25/167

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

  • 计划学习时间:40小时

  • 实际学习时间:32小时

  • 改进情况:

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

参考资料

2018-2019-2 《Java程序设计》第7周学习总结的更多相关文章

  1. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  2. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  5. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  6. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  7. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  9. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  10. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. Django 信号signal

    序言 Django自带一套信号机制来帮助我们在框架的不同应用位置之间传递信息.也就是说,当某一事件发生时,信号系统可以允许一个或多个发送者(senders)将信号(signals)发送给一组接收者(r ...

  2. SQLServer更改用户定义的数据库角色

    更改用户定义的数据库角色注意事项 需具有以下一项或多项权限或成员身份才能运行此命令: 对角色具有 ALTER 权限 对数据库具有 ALTER ANY ROLE 权限 具有 db_securityadm ...

  3. JQ表格隔行换色

    <style type="text/css"> html, body { margin: 0; padding: 0; font-size: 15px; font-fa ...

  4. Python基础之函数和模块

    函数的基本使用 函数的定义:把具有独立功能的代码块组织成一个小模块,在需要的时候调用.或者说,函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数的使用:1.定义函数:2.调用函数 ...

  5. 用golang写了个统计各单位报送的信息数量的微服务

    代码很乱,bug很多,将就着看吧.参考了很多网上代码,只能说声感谢了. //cjl.ZongHeInfo.1.0 //目的:对各部门报上来的信息数量进行排名 //思路:预计一年信息量不超过100M,全 ...

  6. 【原创】谈谈线上CPU100%排查套路

    引言 不知道在大家面试中,有没有遇到这个问题 生产服务器上部署了几个java程序,突然出现了CPU100%的异常告警,你如何定位出问题呢? 这个问题分为两版回答! 高调版 对不起,我是做研发的,这个问 ...

  7. CSS3 animation 与JQ animate()的区别

    CSS3 与 JQ 根本区别 css3 animation与jQuery animate()区别在于实现机制不同 C3和JQ 完成动画的优缺点 1.css3中的过渡和animation动画都是基于cs ...

  8. Spring Boot 集成Swagger

    Spring Boot 集成Swagger - 小单的博客专栏 - CSDN博客https://blog.csdn.net/catoop/article/details/50668896 Spring ...

  9. mysql 增删改查基础操作的语法

    前提,数据表的结构是这样的 一.插入内容到数据表 INSERT INTO `数据库名`.`数据表名` (`t_title`, `t_con`) VALUES ('标题1', '内容1'); 或这样 I ...

  10. docker企业实战视频教程

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal. ...