201711671235学习《java程序设计》第八周学习总结

教材学习内容总结

1.1String类

作用:处理字符序列,String类定义为final类,即不能有子类。

常量对象 String类对象 引用String类对象

拥有引用和实体

“你好”,“12.97”

String s=new String(” We are student“)

每次使用new都会开辟新空间

String对象=String常量对象的引用
常量池 动态池 动态池
运行期间不可以改变 System.out.prontln(s)输出对象的实体

String s1=“你好”;

String s2=“你好”

  构造方法 s1,s2具有相同的引用,所以s1=s2

String(char a[])

例:char [a]={‘J’,‘a’}

String s=new String(a)<=> String s=new String("ja")

提取一部分String(char a[],int startIndex,int count)  startIndex:起始位置,count:截取字符的个数

1.2字符串的并置

String对象可以用“+”进行并置运算

例:String you=“你”;String ni=“好”;String testOne=you+hi;

动态池

you

引用:12A 实体:你

hi

引用:12B 实体:好

newtestOne

引用:12AB 实体:你好

testone

引用:12AB

注:只要参与并置运算的有一个是变量,java就会在动态区存放所得到的新的String对象的实体和引用;

如果几个常量并置运算,那么得到的仍然是常量,如果常量池没有这个常量就放入常量池。

1.3String类的常用方法

public int length() 获取一个String对象的字符序列的长度 对象.length();

public boolean equals(String s)

(public boolean equalsIgnore-Case(String s))

比较当前String对象的字符序列是否与参数s指定的String对象的字符序列相同

(比较时忽略大小写)

String tom=new String(“天道酬勤”);

tom.equal(“‘天道酬勤’”);

public boolean startsWith(String s)、public boolean endsWith(String s) 判断当前String对象的前缀/后缀是否是参数指定的String对象s的字符序列 对象.startsWith(“字符”),对象.endsWith(“字符”)

public int compareTo(String s)

(public int compareToIgnoreCase(String s))

按字典序与参数指定的String对象s的字符序列比较大小

(忽略大小写)

String对象的字符序列与s相同,返回0

大于s的字符序列,返回正值

小于s的字符序列,返回负值

public boolean contains(String s)

判断当前String对象的字符序列是否包含参数s的字符序列 结果返回ture or false

public int indexOf(String s)和public int lastIndexOf(String s)

从当前String对象的字符序列的0索引位置开始检索首次//最后一次出现s的字符序列的位置,并返回该位置

没有检索到返回-1

String tom=“I am a good student”

tom.indexOf(“good”,2)//值是7

indexOf(String str,int startpoint) 重载方法,参数startpoint:指定索引的开始位置  

public String substring(int startpoint)

(public String substring(int start,int end))

获取一个新的String对象:复制由startpoint位置至最后位置上的字符

(获取一个新的String对象:复制由startpoint位置至end-1位置上的字符)

 
public String trim() 获取一个新对象:去掉前后空格后的字符序列  

1.4字符串与基本数据的相互转换

public static int parseInt/Short(String s)throws NumberFormatException:可将由“数字”字符组成的字符序列转换为int/short型数据

public static String valueOf(int/short n):可将数值型的字符转化为String对象

1.5对象的字符串表示

public String toString()方法:获取对象的字符串表示,返回形式:创建对象的类的名字@对象的引用的字符串表示

Date类重写toString方法,返回形式:时间的字符序列

1.6正则表达式及字符串的替换与分解

将对象的字符序列存放到一个字符数组中:char []p=对象.toCharArray()

正则表达式:String对象的字符序列,该字符序列中含有特殊意义的字符->元字符

  public boolean matchs(String regex) 判断当前String对象的字符序列是否和参数regex指定的正则表达式匹配
字符串的替换 public String replaceAll(String regex,String replacement) 将所有与参数regex匹配的子字符序列,用参数replacement的字符序列替代
字符序列分解 public String[] split(String regex) regex作为分隔标记分解出当前String对象的字符序列中的单词,并将分解的单词放到String数组中

2.StringTokenizer类

StringTokenizer对象分解String对象的字符序列 不使用正则表达式作为分隔标记
构造方法
String Tockenizer(String s) s为分析器,使用空格符、换行符、回车符、Tab符等作为默认分隔标记

String Tockenizer(String s,String delim)

s为分析器,参数delim的字符序列中的字符的任意排列被作为分隔标记
分析器.nextToken() 获取String对象的字符序列中的语言符号(单词)
while方法逐个获取语言符号->控制循环->hasMoreTokenizer()
分析器.countTokenizer() 得到分析器中计算变量的值

3.Scanner类

学习目标:使用Scanner对象从字符序列中解析出程序所需要的数据

String NBA=“I love this game”;Scanner scanner=new Scanner(NBA);  
scanner.useDelimiter(正则表达式); 正则表达式为分隔符,不设定即默认为空白字符(空格、制表符、回车符)
scanner.next() 返回被解析的字符序列的单词
scanner.hasnext 没有单词可返回->返回false
scanner.nextInt/Double() 将数字型单词转化为int或double数据返回
StringTokenizer Scanner
分解出来的对象都存放到StringTokenizer对象的实体中 不把单词存放到Scanner对象的实体中
快速获取单词 获取速度较慢
占用较多的空间 节省内存空间

4.StringBuffer类

String类 StringBuffer类
String对象的字符序列不能被修改、删除 实体内存空间可以自动改变大小
实体不可以发生任何变化  
构造方法
StringBuffer() 初始容量:容纳16个字符,后续自动增加
StringBuffer(int size) 初始容量:参数size指定字符个数,实体容量自动地增加

StringBuffer(String s)

初始容量:参数s指定字符序列长度+16
StringBuffer append(String s) 将String对象s的字符序列追加到当前StringBuffer对象的字符序列中
public char charAt(int n)/public void setCharAt(int n,char ch) 获取StringBuffer对象的字符序列位置n上的字符/将当前StringBuffer对象的字符序列位置n处的字符用参数ch指定的字符替换(n的值必须为非负)
StringBuffer insert(int index,String str) 将参数str指定的字符序列插入到参数index指定的位置,并返回当前对象的引用

public StringBuffer reverse()

将对象实体进行翻转,并返回当前对象的引用
StringBuffer delete(int startIndex,int endIndex) 子字符序列从下标startIndex到endIndex-1位置处的字符被删除,并返回当前对象的引用
StringBuffer replace(int startIndex,int endIndex,String str) 子字符序列从下标startIndex到endIndex-1位置处的字符被str替换,并返回当前对象的引用

5.Date类与Calendar类

处理和日期、时间相关的数据

5.1Date类

无参构造方法 带参构造方法
Date nowTime=new Date() 获取本机/系统当前日期和时间 Date date1=new Date(1000)
public long currentTimeMillis()
System.out.println(nowTime):输出实体的时间 参数正数表示公元后的时间

5.2Calendar类

使用Calendar的static方法getInstance() 初始化日历对象
Calendar对象调用方法 将日历翻到任何一个时间
public final void set(int year,int month,int date,int hour,int minute,int second)  
public int get(int field) 获取有关年、月份、小时、星期等信息,field由Calendar指定
public long getTimeMillis() 返回当前Calendar对象中时间的毫秒计时(当前calendar对象中的时间与1970年01月01日08点的差值)

6.1日期的格式化

format(格式化模式、日期列表)  
格式化模式 格式符个数与日期个数相同 由时间格式符和普通字符组成

假设当前时间为2016.10.1日

Date nowTime=new Date()

String s=String.format(“%tYnian%tm月%td日”,nowTime,nowTime,nowTime)

输出:2016年10月01日

日期列表

用逗号分隔Calendar对象或Date对象

格式化同一日期 希望用几个格式符号格式“日期列表”中的同一个日期

String str1=String.format(“%t年%<t月%<td日”,nowTime)

三个格式符号格式同一个日期

6.2不同区域的星期格式

format重载方法:format(Local local,格式化模式,日期列表),其中参数local是一个Local类的实例,用于表示地域

7.1Math类

计算一个数的平方根、绝对值、或获取一个随机数等。

public static long abs(double a)

返回a的绝对值
public static double max/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) 返回a的正弦值
public static double asin(double a)

返回a的反正弦值

public static double ceil/floor(double a) 返回大/小于a的最小整数,并将该整数转化为double型数据
public static long round(double a) 返回(long)Math.floor(a+0.5),即a“四舍五入”的值

7.2Random类

构造方法
public Random() 使用当前机器时间为种子创建一个Random对象
public Random(long seed) 使用参数seed指定的种子创建一个Random对象

8数字格式化

8.1format方法

格式化模式 格式符个数与“值列表”列出的值的个数相同 由时间格式符和普通字符组成
值列表
格式化顺序  

默认从左到右

在格式符前面添加索引符号index$,例如2$表示值列表的第二个

8.2.1格式化整数/浮点数

%d 将值格式化为十进制整数
%o 将值格式化为八进制整数
%x/%X 将值格式化为小写/大写的十六进制整数
%f 将值格式化为十进制浮点数,小数保留6位
%e(%E) 将值格式化为科学计数法的十进制的浮点数

8.2.2修饰符

%+d/f 格式化整数/浮点数时,强制添加上“+”号,表示正数
%,d/f 格式化整数/浮点数时,按“千”分组

8.2.3数据的宽度

%md/f

在数字的左面增加空格
%-md/f 在数字的右面增加空格
%0md/f 在数字的左面增加0
%.nf 可以限制小数的位数,n为保留的小数位数

9Class类和Console类

9.1Class类

public static Class forName(String className)throws ClassNotFoundException

public Object newInstance()throw InstantiationException,IllegalAccessException:实例化一个className对象,className类必须有无参数的构造方法

9.2Console类:从键盘输入一行文本但不在命令行显示

Console cons=System.console()

char []passwd=cons.readPassword():读取键盘输入文本并将其以一个char数组返回

10Pattern类与Matcher类

模式匹配就是检索和指定模式匹配的字符序列

10.1建立Pattern对象

Pattern pattern=Pattern.compile(regex):参数regex作参数,得到一个称为模式的Pattern类的实例pattern

10.2得到Matcher对象

Matcher matcher=pattern.matcher(input)

public boolean find() 寻找input和regex匹配的下一子序列
public boolean matcher() 判断input是否完全和regex匹配
public boolean lookingAt() 判断从input的开始位置是否有和regex匹配的子序列
public boolean find(int start) 判断从参数start指定位置开始是否有和regex匹配的子序列
public String replaceAll(String replacement) 返回一个String对象,该String对象的字符序列是通过把input的字符序列中与regex匹配的字符序列全部替换为参数replacement指定的字符序列
public String replaceFirst(String replacement) 返回一个String对象,该String对象的字符序列是通过把input的字符序列中第一个与regex匹配的字符序列全部替换为参数replacement指定的字符序列

教材学习中的问题和解决过程

字符串进行并置时实体和应用的空间变化:通过画图分析

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 20篇 400小时 会用java语言独立设计程序
第一周 13/13 1/1  5/5 学会使用jdk以及对java源程序语句的基本注意事项有所了解
第二周 140/143  1/2 10/15 学会java基本数据类型与数组和c语言/c++在表达和用法上的相同/不同之处
第三周 276/419 1/3 20/35 java中运算符,表达式和语句的表现形式,类的声明,定义方法
第四周 600/1019 1/4 30/45 类和对象
第五周

150/1169

1/5 10/55 继承的作用,子类和父类的继承性,子类继承父类后方法的访问权限以及各种操作
第六周 100/1269 1/6 8/63 接口定义、使用方法和作用
第七周 100/1369 1/7 9/72 内部类(独有)包含匿名类和异常类(检测)的使用方法和作用
第八周 150/1869 1/8 10/82 java常用实用类和方法

参考文献

《java2实用教程(第5版)》

猜你喜欢

转载自blog.csdn.net/weixin_40803490/article/details/84763434