一、学习内容
1.String类——8,1知识
- Java专门提供了用来处理字符序列的String类。String类在java.lang包中,由于java.lang包中的类被默认引入,因此程序可以直接使用String类。
- 需要注意的是Java把String类声明为final类,因此用户不能扩展String类,即String类不可以有子类。
- 构造String对象
- 常量对象:字符串常量对象是用双引号括起的字符序列,例如:"你好"、"12.97"、"boy"等。Java把用户程序中的String常量放入常量池。因为String常量是对象,所以也有自己的引用和实体。
- String对象:可以使用String类声明对象并创建对象,例如:
String s = new String("we are students");
String t = new String("we are students");
- 对象变量s中存放着引用,表明自己的实体的位置,即new 运算符首先分配内存空间并在内存空间中放入字符序列,然后计算出引用。
- 另外,用户无法输出String对象的引用:```Syste.out.println(s);```。输出的是对象的实体,即字符序列```we are students```。
- 也可以用一个已创建的String对象创建另一个String对象,如:
String tom = new String(s);
- String类还有两个较常用的构造方法。
- String (char a[])用一个字符数组a创建一个String对象,如:
char a[] = {'J','a','v','a'};
String s = new String(a);
过程相当于
String s = new String("Java");
- ```String(char a[],int startIndex,int count)```
提取字符数组a中的一部分字符创建一个String对象,参数startIndex和count分别指定在a中提取字符的起始位置和从该位置开始截取的字符个数,如:
char a[] = {'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
String s = new String(a,2,4);
相当于
String s = new String("贰叁肆伍");
正则表达式
- 正则表达式是一个String对象的字符序列,该字符序列中含有具有特殊意义字符,这些特殊字符称做正则表达式中的元字符。比如,"\dcat"中的\d就是有特殊意义的元字符,代表0到9中的任何一个,"0cat","1cat","2cat",…,"9cat"都是和正则表达式"\dcat"匹配的字符序列。
- 在正则表达式中可以用方括号括起若干个字符来表示一个元字符,该元字符代表方括号中的任何一个字符。例如String regex = "[159]ABC",那么"1ABC"、"5ABC"和"9ABC"都是和正则表达式regex匹配的字符序列。例如,[abc]:代表a、b、c中的任何一个;[^abc]:代表除了a、b、c以外的任何字符;[a-zA-Z]:代表英文字母(包括大写和小写)中的任何一个。
- String对象调用public String replaceAll(String regex,String replacement)方法返回一个新的String对象,这个新的String对象的字符序列是把当前String对象的字符序列中所有和参数regex匹配的子字符序列,用参数replacement的字符序列替换后得到字符序列。
-
public String[] split(String regex)
使用参数指定的正则表达式regex做为分隔标记分解出其中的单词,并将分解出的单词存放在字符串数组中。例如,对于字符串strString str = "1949年10月1日是*成立的日子";
如果准备分解出全部由数字字符组成的单词,就必须用非数字字符串做为分隔标记,因此,可以使用正则表达式:String regex="\\D+";
做为分隔标记分解出str中的单词:String digitWord[]=str.split(regex);
那么,digitWord[0]、digitWord[1]和digitWord[2]就分别是“1949”、“10”和“1”。
2.StringTokenizer类 ——8.2知识
- StringTokenizer类在java.util包中,有两个常用的构造方法:
- StringTokenizer(String s):为String对象s构造一个分析器。使用默认的分隔标记,即空格符、换行符、回车符、Tab符、进纸符做分隔标记。
- StringTokenizer(String s, String delim为String对象s构造一个分析器。参数delim的字符序列中的字符的任意排列被作为分隔标记。
- StringTokenizer对象称作一个字符串分析器可以使用下列方法:
- nextToken():逐个获取字符串中的语言符号(单词),字符串分析器中的负责计数的变量的值就自动减一 。
- hasMoreTokens():只要字符串中还有语言符号,即计数变量的值大于0,该方法就返回true,否则返回false。
- countTokens():得到分析器中计数变量的值
3.Scanner类——8.3知识
-
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(正则表达式); 方法将一个正则表达式作为分隔标记,即和正则表达式匹配的字符串都是分隔标记。
4.StringBuffer类——8.4知识
- 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对象的引用
类似的方法还有: - StringBuffer append(long n),StringBuffer append(boolean n),
- StringBuffer append(float n),StringBuffer append(double n),
- StringBuffer append(char n)
- 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对象实体中的字符串中删除一个子字符串
- 其相关方法:deleteCharAt(int index) 删除当前StringBuffer对象实体的字符串中index位置处的一个字符。
- StringBuffer replace(int startIndex,int endIndex,String str):将当前StringBuffer对象实体中的字符串的一个子字符串用参数str指定的字符串替换
5.Date与Calendar类——8.5知识
(1) Date类
- Date类在java.util包中.
- Date类的构造方法之一:
- Date()使用Date类的无参数构造方法创建的对象可以获取本地当前时间。
- Date类的构造方法之二:
- Date(long time)使用long型参数创建指定的时间
- System类的静态方法 public long currentTimeMillis() 获取系统当前时间。
(2)Calendar类
- Calendar类在java.util包中。
- 使用Calendar类的static方法 getInstance()可以初始化一个日历对象,如:
Calendar calendar= Calendar.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.日期的格式化——8.6知识
可以直接使用String类调用format方法对日期进行格式化。
8.6.1 format方法
- Formatter类的format方法:
format(格式化模式, 日期列表)
按着“格式化模式”返回“日期列表”中所列各个日期中所含数据(年,月,日,小时等数据)的字符串表示。
Java已经将format方法做为了String类的静态方法,因此,程序可以直接使用String类调用format方法对日期进行格式化。
- 1.格式化模式
format方法中的“格式化模式”是一个用双引号括起的字符序列(字符串),该字符序列中的字符由时间格式符和普通字符所构成。例如:"日期:%ty-%tm-%td"
String s = String.format("%tY年%tm月%td日",new Date(),new Date(),new Date());
那么s
就是"2011年02月10日"
- 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日"
。
8.6.2 不同区域的星期格式
如果想用特定地区的星期格式来表示日期中的星期,可以用format的重载方法:format (Locale locale,格式化模式,日期列表);
其中的参数locale
是一个Locale类的实例,用于表示地域。
Locale类的static常量都是Locale对象,其中US是表示美国的static常量。
7.Math类、BigInteger类和Random类——8.7知识
8.7.1 Math类
Math类在java.lang包中。Math类包含许多用来进行科学计算的类方法,这些方法可以直接通过类名调用。
另外,Math类还有两个静态常量,它们分别是:E 2.7182828284590452354
和PI 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 static long round(double a)
返回值是(long)Math.floor(a+5),即所谓a的“四舍五入”后的值。
8.7.2 BigInteger类
java.math包中的BigInteger类提供任意精度的整数运算。可以使用构造方法:public BigInteger(String val)
构造一个十进制的BigInteger对象。
以下是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进制的字符串表示。
8.7.3 Random类
Random类的如下构造方法:
public Random();
public Random(long seed);
第一个构造方法使用当前及其实践作为种子创建一个Random对象,第二个构造方法使用参数seed
指定的种子创建一个Random对象。
随机数生成器random调用不带参数的nextInt()
方法:
Random random=new Random();
random.nextInt();
返回一个0至n之间(包括0,但不包括n)的随机数
随机数生成器random调用带参数的nextInt(int m)
方法(参数m必须取正整数值)
8.数字格式化——8.8知识
8.8.1 format方法
Formatter类提供了一个和C语言printf函数类似的format方法:format(格式化模式,值列表)
该方法按着“格式化模式”返回“值列表”的字符串表示。
Java已经将format方法做为了String类的静态方法,因此,程序可以直接使用String类调用format方法对数字进行格式化。
- 1.格式化模式:format方法中的“格式化模式”是一个用双引号括起的字符序列(字符串),该字符序列中的字符由格式符和普通字符所构成。
例如:"输出结果%d,%f,%d"
中的%d
和%f
是格式符号。
format方法返回的字符串就是“格式化模式”中的格式符被替换为它得到的格式化结果后的字符串。
例如:String s = String.format(“%.2f”,3.141592);
那么s
就是“3.14”
. - 2.值列表:format方法中的“值列表”是用逗号分隔的变量、常量或表达式。 例如:
String s=format("%d元%0.3f公斤%d台",888,999.777666,123);
那么,s
就是"888元999.778公斤123台"
。 - 3.格式化顺序:format方法默认按从左到右的顺序使用“格式化模式”中的格式符来格式化“值列表”中对应的值,而“格式化模式”中的普通字符保留原样。
例如,假设int型变量x
和double型变量y
的值分别是888
和3.1415926
,
那么对于String s = format("从左向右:%d,%.3f,%d",x,y,100);
字符串s就是:从左向右:888,3.142,100
- 注1:改变默认的顺序(从左向右)进行格式化,在格式符前面添加索引符号
index$
,例如,1$
表示“值列表”中的第1个,2$
表示“值列表”中的第2个,
对于:String s=String.format(“不是从左向右:%2$.3f,%3$d,%1$d”,x,y,100);
字符串s
就是:不是从左向右:3.142,100,888- 注2:如果准备在“格式化模式”中包含普通的
%
,在编写代码时需要连续键入两个%
,如:String s=String.format("%d%%",89);
输字符串s是:"89%"
8.8.2 格式化整数
- 1.
%d
、%o
、%x
和%X
格式符可格式化byte、Byte、short、Short、int、Integer、long和Long型数据。 - 2.修饰符
- 加号修饰符"+"格式化正整数时,强制添加上正号,例如,%+d将123格式化为"+123"。
- 逗号修饰符“,”格式化整数时,按"千"分组。
- 3.数据的宽度
数据的宽度就是format方法返回的字符串的长度。规定数据宽度的一般格式为“%md”,其效果是在数字的左面增加空格;或"%-md“,其效果是在数字的右面增加空格,
例如,将数字59格式化为宽度为8的字符串:String s=String.format("%8d",59);
字符串s
就是:“ 59"
,其长度(s.length())
为8,即s
在59左面添加了6个空格字符。- 对于:
String s=String.format(“%-8d”,59);
字符串s
就是:"59 "
,其长度(s.length())
为8。 - 对于:
String s=String.format("%5d%5d%8d",59,60,90);
字符串s
就是:“59 60 90”
(长度为18)。
- 对于:
注:如果实际数字的宽度大于格式中指定的宽度,就按数字的实际宽度进行格式化。
可以在宽度的前面增加前缀0,表示用数字0(不用空格)来填充宽度左面的富裕部分,例如:String s=String.format("%08d",12);
字符串s
就是:"00000012"
,其长度(s.length())
为8,即s
在12的左面添加了6个数字0。
8.8.3 格式化浮点数
- 1.
float
,Float
,double
和Double
%f
,%e(%E)
,%g(%G)
和%a(%A)
格式符可格式化float、Float、double和Double:-
%f
将值格式化为十进制浮点数,小数保留6位。 -
%e(%E)
将值格式化为科学记数法的十进制的浮点数(%E在格式化时将其中的指数符号大写,例如5E10)。
-
- 2.修饰符
- 加号修饰符"+"格式化正数时,强制添加上正号,例如%+f将123.78格式化为"+123.78", %+E将123.78格式化为"+1.2378E+2"。
- 逗号修饰符“,”格式化浮点数时,将整数部分按“千”分组。
- 3.限制小数位数与数据的“宽度”
"%.nf"
可以限制小数的位数,其中的n是保留的小数位数,例如%.3f
将6.1256
格式化为"6.126"
(保留3位小数)。
规定宽度的一般格式为“%mf”
(在数字的左面增加空格),或“%-md”
(在数字的右面增加空格)。
注:如果实际数字的宽度大于格式中指定的宽度,就按数字的实际宽度进行格式化
9.Class类与Console类——8.9知识
8.9.1 Class类
- 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类必须有无参数的构造方法。
8.9.2 Console类
如果希望在键盘输入一行文本,但不想让该文本回显,即不在命令行显示,那么就需要使用java.io
包中的Console类的对象来完成。
首先使用System类调用console()
方法返回一个Console类的一个对象,比如cons
:Console cons = System.console();
然后,cons
调用readPassword()
方法读取用户在键盘输入的一行文本,并将文本以一个char
数组返回:char[] passwd = cons.readPassword();
8.10 Pattern类与Matcher类
Pattern类和Matcher类在java.util.regex包中。
以下结合具体问题来讲解使用Pattern类和Matcher类的步骤。假设有字符串:String input = "hello,good morning,this is a good idea"
我们想知道input
从哪个位置开始至哪个位置结束曾出现了字符串good
。
使用Pattern类和Matcher类检索字符串str
中的子字符串的步骤如下:
- 1.建立模式对象
使用正则表达式regex
做参数得到一个称为模式的Pattern类的实例pattern
:
例如:
String regex = "good";
Pattern pattern = Pattern.compile(regex);
模式对象是对正则表达式的封装。Pattern类调用类方法compile(String regex)
返回一个模式对象,其中的参数regex是一个正则表达式, 称为模式对象使用的模式。
- 2.得到匹配对象
模式对象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
指定的字符串得到的。
-
二、脚本截图
三、学习感受
- 本周的学习内容相较于上周较为简单,重点在于正则表达式,理解起来比较费劲,之后也会对这一部分进行巩固的。
- 本周的结对项目进入了完善和整合阶段,进行了整体总结
- 本周的团队项目也对之前的《需求规格说明书》和团队分工进行了完善,确定分工
《JAVA程序设计》_第七周学习总结的更多相关文章
-
20145213《Java程序设计》第七周学习总结
20145213<Java程序设计>第七周学习总结 教材学习内容总结 周末快乐的时间总是短暂的,还没好好感受就到了要写博客的周日.有人喟叹时间都去哪儿了,那本周我们就来认识一下Java里的 ...
-
20145337《JAVA程序设计》第七周学习总结
20145337 <Java程序设计>第七周学习总结 教材学习内容总结 时间的度量 格林威治时间GMT,世界时UT,国际原子时TAI,世界协调时间UTC 就目前来说,即使标注为GMT,实际 ...
-
20145320 《Java程序设计》第七周学习总结
20145320 <Java程序设计>第七周学习总结 教材学习内容总结 13章 时间与日期 时间的度量: 格林威治标准时间(GMT时间),现已不作为标准时间使用. 世界时(UT),秒的单位 ...
-
《Java程序设计》第七周学习总结
20145224 <Java程序设计>第七周学习总结 教材学习内容总结 13.1 认识时间与日期 ·想要度量时间首先要有时间基准,目前国际上通用的有一下六个时间基准: 1.格林威治标准时间 ...
-
201521123061 《Java程序设计》第七周学习总结
201521123061 <Java程序设计>第七周学习总结 1. 本周学习总结 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 贴上源 ...
-
201521123038 《Java程序设计》 第七周学习总结
201521123038 <Java程序设计> 第七周学习总结 1. 本周学习总结 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 ...
-
20145237 《Java程序设计》第七周学习总结
20145237 <Java程序设计>第七周学习总结 教材学习内容总结 第十三章 一.认识时间与日期 1.时间的度量 在正式认识Java提供了哪些时间处理API之前,得先来了解 ...
-
20175209 《Java程序设计》第七周学习总结
20175209 <Java程序设计>第七周学习总结 一.教材知识点总结 第八章 常用类和实用类 1.String类 构造String对象 常量对象:""中的字符序列, ...
-
20175204 张湲祯 2018-2019-2《Java程序设计》第七周学习总结
20175204 张湲祯 2018-2019-2<Java程序设计>第七周学习总结 教材学习内容总结 -第八章常用实用类要点: 一.String类: 1.String类所在的包:java. ...
-
20175305张天钰《java程序设计》第七周学习总结
<java程序设计>第七周学习总结 第八章 常用实用类 1.String类 1.String类不可以有子类. 2.用户无法输出String对象的引用,输出的是字符序列 3.构造方法:Str ...
随机推荐
-
C# WebService URL重写
背景 有时候我们会有这样的需求,将 WebService URL 中的 asmx 后缀去掉:或者我们要模拟普通 Web 的 URL,接口名称直接拼接在 URL 中.这些情况我们都要用到URL重写. 关 ...
-
Elasticsearch 插件安装
http://www.cnblogs.com/richaaaard/p/5212044.html
-
codevs3196 黄金宝藏
题目描述 Description 小毛终于到达宝藏点,他意外地发现有一个外星人(名叫Pluto).宝藏是一些太空黄金,有n堆排成一行,每堆中有xi颗黄金.小毛和Pluto决定轮流从中取出黄金,规则是每 ...
-
第八届河南省赛C.最少换乘(最短路建图)
C.最少换乘 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 94 Solved: 25 [Submit][Status][Web Board] De ...
-
How to recover from &#39;programmers burnout(转)
程序员这个压力大,节奏快,任务繁重,所以很容易令人感觉倦怠,令人感觉烦躁,郁闷,疲惫不堪. 本文将介绍的是程序员如何克服可怕的“职业倦怠”. 丰盛的早餐——身处高科技产业漩涡的我们常常会熬夜到凌晨两三 ...
-
linux下安装rabbitmq
1.安装erlang虚拟机 Rabbitmq基于erlang语言开发,所有需要安装erlang虚拟机.安装erlang有两种方式: 第一种:使用yum安装: wget -O /etc/yum.repo ...
-
苹果App Store开发者帐户从申请,验证,到发布应用(2)
app store付费 上面已经介绍了app store id的注册了,下面在注册基础上,介绍一下app store的付费. 在上面注册成功之后,会收到一封邮件. 1.收到邮件Thank Yo ...
-
android常犯错误记录(二)
检查 minSdkVersion什么的是不是和你依赖的包一样,它上面也有个小提示,显示本地的11,依赖的为15,那就改成15好了,重新build好了 ClassNotFoundException异常 ...
-
单片机如何产生PWM信号
用89C52产生控制二相步进电机的程序,用PWM信号控制步进电机 用普通I/O口采用软件定时器中断可以模拟PWM输出 /*采用6MHz晶振,在P1.0脚上输出周期为2.5s,占空比为20%的脉冲信号* ...
-
virtualbox谨记:win7上只有4.3.x的版本支持ubuntu14.04.3虚拟机安装Oracle Rac,其他的版本3.x和5.0.2(至2015-08-30)均不可以
virtualbox谨记:win7上只有4.3.x的版本支持ubuntu14.04.3虚拟机安装Oracle Rac,其他的版本3.x和5.0.2(至2015-08-30)均不可以