《JAVA程序设计》_第七周学习总结

时间:2022-09-22 21:27:12

一、学习内容

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做为分隔标记分解出其中的单词,并将分解出的单词存放在字符串数组中。例如,对于字符串str String 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.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 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的值分别是8883.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,doubleDouble

    %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是保留的小数位数,例如%.3f6.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():寻找inputregex匹配的下一子序列,如果成功该方法返回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程序设计》_第七周学习总结

三、学习感受

  • 本周的学习内容相较于上周较为简单,重点在于正则表达式,理解起来比较费劲,之后也会对这一部分进行巩固的。
  • 本周的结对项目进入了完善和整合阶段,进行了整体总结
  • 本周的团队项目也对之前的《需求规格说明书》和团队分工进行了完善,确定分工

《JAVA程序设计》_第七周学习总结的更多相关文章

  1. 20145213《Java程序设计》第七周学习总结

    20145213<Java程序设计>第七周学习总结 教材学习内容总结 周末快乐的时间总是短暂的,还没好好感受就到了要写博客的周日.有人喟叹时间都去哪儿了,那本周我们就来认识一下Java里的 ...

  2. 20145337《JAVA程序设计》第七周学习总结

    20145337 <Java程序设计>第七周学习总结 教材学习内容总结 时间的度量 格林威治时间GMT,世界时UT,国际原子时TAI,世界协调时间UTC 就目前来说,即使标注为GMT,实际 ...

  3. 20145320 《Java程序设计》第七周学习总结

    20145320 <Java程序设计>第七周学习总结 教材学习内容总结 13章 时间与日期 时间的度量: 格林威治标准时间(GMT时间),现已不作为标准时间使用. 世界时(UT),秒的单位 ...

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

    20145224 <Java程序设计>第七周学习总结 教材学习内容总结 13.1 认识时间与日期 ·想要度量时间首先要有时间基准,目前国际上通用的有一下六个时间基准: 1.格林威治标准时间 ...

  5. 201521123061 《Java程序设计》第七周学习总结

    201521123061 <Java程序设计>第七周学习总结 1. 本周学习总结 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 贴上源 ...

  6. 201521123038 《Java程序设计》 第七周学习总结

    201521123038 <Java程序设计> 第七周学习总结 1. 本周学习总结 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 ...

  7. 20145237 《Java程序设计》第七周学习总结

    20145237 <Java程序设计>第七周学习总结 教材学习内容总结 第十三章   一.认识时间与日期   1.时间的度量   在正式认识Java提供了哪些时间处理API之前,得先来了解 ...

  8. 20175209 《Java程序设计》第七周学习总结

    20175209 <Java程序设计>第七周学习总结 一.教材知识点总结 第八章 常用类和实用类 1.String类 构造String对象 常量对象:""中的字符序列, ...

  9. 20175204 张湲祯 2018-2019-2《Java程序设计》第七周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第七周学习总结 教材学习内容总结 -第八章常用实用类要点: 一.String类: 1.String类所在的包:java. ...

  10. 20175305张天钰《java程序设计》第七周学习总结

    <java程序设计>第七周学习总结 第八章 常用实用类 1.String类 1.String类不可以有子类. 2.用户无法输出String对象的引用,输出的是字符序列 3.构造方法:Str ...

随机推荐

  1. C&num; WebService URL重写

    背景 有时候我们会有这样的需求,将 WebService URL 中的 asmx 后缀去掉:或者我们要模拟普通 Web 的 URL,接口名称直接拼接在 URL 中.这些情况我们都要用到URL重写. 关 ...

  2. Elasticsearch 插件安装

    http://www.cnblogs.com/richaaaard/p/5212044.html

  3. codevs3196 黄金宝藏

    题目描述 Description 小毛终于到达宝藏点,他意外地发现有一个外星人(名叫Pluto).宝藏是一些太空黄金,有n堆排成一行,每堆中有xi颗黄金.小毛和Pluto决定轮流从中取出黄金,规则是每 ...

  4. 第八届河南省赛C&period;最少换乘(最短路建图)

    C.最少换乘 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 94  Solved: 25 [Submit][Status][Web Board] De ...

  5. How to recover from &&num;39&semi;programmers burnout(转)

    程序员这个压力大,节奏快,任务繁重,所以很容易令人感觉倦怠,令人感觉烦躁,郁闷,疲惫不堪. 本文将介绍的是程序员如何克服可怕的“职业倦怠”. 丰盛的早餐——身处高科技产业漩涡的我们常常会熬夜到凌晨两三 ...

  6. linux下安装rabbitmq

    1.安装erlang虚拟机 Rabbitmq基于erlang语言开发,所有需要安装erlang虚拟机.安装erlang有两种方式: 第一种:使用yum安装: wget -O /etc/yum.repo ...

  7. 苹果App Store开发者帐户从申请&comma;验证&comma;到发布应用(2)

    app store付费 上面已经介绍了app store id的注册了,下面在注册基础上,介绍一下app store的付费.   在上面注册成功之后,会收到一封邮件.   1.收到邮件Thank Yo ...

  8. android常犯错误记录(二)

    检查 minSdkVersion什么的是不是和你依赖的包一样,它上面也有个小提示,显示本地的11,依赖的为15,那就改成15好了,重新build好了 ClassNotFoundException异常 ...

  9. 单片机如何产生PWM信号

    用89C52产生控制二相步进电机的程序,用PWM信号控制步进电机 用普通I/O口采用软件定时器中断可以模拟PWM输出 /*采用6MHz晶振,在P1.0脚上输出周期为2.5s,占空比为20%的脉冲信号* ...

  10. virtualbox谨记:win7上只有4&period;3&period;x的版本支持ubuntu14&period;04&period;3虚拟机安装Oracle Rac,其他的版本3&period;x和5&period;0&period;2(至2015-08-30)均不可以

    virtualbox谨记:win7上只有4.3.x的版本支持ubuntu14.04.3虚拟机安装Oracle Rac,其他的版本3.x和5.0.2(至2015-08-30)均不可以