教材学习内容总结
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版)》