201711671119《Java程序设计》第八章学习总计

教学内容总结

String类

一、

1.String类在Java的java.lang包中。Java专门提供了用来处理字符序列的String类。

2.程序可以直接使用String类。

3.需要注意的是Java把String类声明为final类,因此用户不能扩展String类,即String类不可以有子类。

 

二、String对象

可以使用String类声明对象并创建对象,例如:

String  s = new String("we are students");

String  t = new String("we are students");

用户无法输出String对象的引用:

System.out.println(s);

 

三、引用String常量

1.String常量是对象,因此可以把String常量的引用赋值给一个String对象,例如:

String s1,s2;  

s1 = "你好";

s2 = "你好"; //表达式s1==s2的值是true,因而具有相同的实体。

2. String对象可以用“+”进行并置运算,即首尾相接得到一个新的String对象。

public class Example8_1 {
	  public static void main(String args[]) {
	       String hello = "你好";
	       String testOne = "你"+"好";             //【代码1】
	       System.out.println(hello == testOne);   //输出结果是true
	       System.out.println("你好" == testOne);  //输出结果是true
	       System.out.println("你好" == hello);    //输出结果是true
	       String you = "你";
	       String hi = "好";
	       String testTwo = you+hi;                //【代码2】
	       System.out.println(hello == testTwo);   //输出结果是false
	       String testThree = you+hi;                       
	       System.out.println(testTwo == testThree); //输出结果是false
	    }
	}

程序更关心两个String对象的实体,而不是二者的引用是否相同。判断两个String对象的实体,看字符序列是否相同。

 

四、String类的常用方法

1.public int length():获取一个字符串的长度

2.public boolean equals(String s):判断当前String对象的字符序列是否与参数s指定的String对象的字符序列相同

3.public boolean startsWith(String s)

判断当前String对象的字符序列前缀是否是参数指定的String对象s的字符序列

4. public int compareTo(String s):按字典序与参数s指定的字符序列比较大小。

如果当前String对象的字符序列与s的相同,该方法返回值0,如果大于s的字符序列,该方法返回正值;如果小于s的字符序列,该方法返回负值。

     例如,字符a在Unicode表中的排序位置是97,字符b是98,那么对于 String str = “abcde”; str.compareTo(“boy”)小于0,str.compareTo(“aba”)大于0,str.compareTo(“abcde”)等于0。

5.public boolean contains(String s):String对象调用contains方法判断当前String对象的字符序列是否包含参数s的字符序列,例如,tom="student",那么tom.contains("stu")的值就是true,而tom.contains("ok")的值是false。

6.public int indexOf (String str):String对象调用方法从当前String对象的字符序列的0索引位置开始检索首次出现str的字符序列的位置,并返回该位置。如果没有检索到,该方法返回的值是–1,其相关方法:

   indexOf(String s ,int startpoint)

   lastIndexOf (String s)

    例如 String tom = "I am a good cat";

              tom.indexOf("a");//值是2

              tom.indexOf("good",2);//值是7

              tom.indexOf("a",7);//值是13

              tom.indexOf("w",2);//值是-1

7. public String substring(int startpoint):字符串对象调用该方法获得一个新的String对象,新的String对象的字符序列是复制当前String对象的字符序列中的startpoint位置至最后位置上的字符所得到的字符序列。String对象调用substring(int start ,int end)方法获得一个新的String对象,新的String对象的字符序列是复制当前String对象的字符序列中的start位置至end–1位置上的字符所得到的字符序列。

8.public String trim() :得到一个新的String对象,这个新的String对象的字符序列是当前String对象的字符序列去掉前后空格后的字符序列。

五、字符串与基本数据的相互转化

1. 可以将由“数字”字符组成的字符串

例如:      int x;

            String s = “876";

            x = Integer.parseInt(s);

Java.lang包中的Integer类调用其类方法:

public static int parseInt(String s)

public static byte parseByte(String s) throws NumberFormatException

public static short parseShort(String s) throws NumberFormatException

public static long parseLong(String s) throws NumberFormatException

public static float parseFloat(String s) throws NumberFormatException

public static double parseDouble(String s) throws NumberFormatException

 

2. 将(形如123、1232.98等)数值转化为字符串

   public static String valueOf(byte n)

   public static String valueOf(int n)

   public static String valueOf(long n) 

   public static String valueOf(float n)

   public static String valueOf(double n)

例子:String str = String.valueOf(12313.9876);  

 

六、对象的字符串表示

一个对象通过调用Object类的public String toString()可以获得该对象的字符序列表示。

形式:

创建对象的类的名字@对象的引用的字符串表示

 

七、字符串与字符、字节数组

1.字符串与字符数组

String 类的构造方法:

String(char[]);

String(char[],int offset,int length)分别用字符数组中的全部字符和部分字符创建字符串对象

将String对象的部分字符序列存放到数组中的方法:

 public void getChars(int start,int end,char c[],int offset )

将String对象的字符序列存放到数组中的方法

public char[] toCharArray()

 

2.字符串与字节数组

String(byte[])用指定的字节数组构造一个字符串对象。

String(byte[],int offset,int length) 用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。

public byte[] getBytes()使用平台默认的字符编码,将当前String对象的字符序列存放到字节数组,并返回数组的引用。

public byte[] getBytes(String charsetName)使用参数指定字符编码,将当前String对象的字符序列存放到字节数组,并返回数组的引用。

 

3.字符串的加密算法(例子8)

char [] p = password.toCharArray();

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

1.正则表达式:是一个String对象的字符序列

元字符:正则表达式中的特殊字符。

详见课本P187 表8.1

String对象调用public boolean matches(String regex)方法可以判断当前String对象的字符序列是否和参数regex指定的正则表达式匹配。

 

2. 字符串的替换

   public String replaceAll(String regex,String replacement)

String对象调用public String replaceAll(String regex,String replacement)方法返回一个新的String对象,这个新的String对象的字符序列是把当前String对象的字符序列中所有和参数regex匹配的子字符序列,用参数replacement的字符序列替换后得到字符序列。

 

3.字符串的分解(例题11)

public String[] split(String regex)使用参数指定的正则表达式regex做为分隔标记分解出其中的单词,并将分解出的单词存放在字符串数组中。

 

StringTokenizer类

1.StringTokenizer类在java.util包中,有两个常用的构造方法:

StringTokenizer(String s):为String对象s构造一个分析器。使用默认的分隔标记,即空格符、换行符、回车符、Tab符、进纸符做分隔标记。

StringTokenizer(String s, String delim):为String对象s构造一个分析器。参数delim的字符序列中的字符的任意排列被作为分隔标记。

 

2.使用方法/步骤:

(1) nextToken():逐个获取字符串中的语言符号(单词),字符串分析器中的负责计数的变量的值就自动减一  。

(2) hasMoreTokens():只要字符串中还有语言符号,即计数变量的值大于0,该方法就返回true,否则返回false。

(3)countTokens():得到分析器中计数变量的值。

 

 

Scanner类

1.使用Scanner类从字符串中解析程序所需要的数据。

Scanner对象可以解析字符序列中的单词,为了解析出NBA的字符序列中的单词,可以如下构造一个Scanner对象。

 Scanner对象可以调用方法

useDelimiter(正则表达式);

 

scanner将空格做为分隔标记来解析字符序列中的单词,

 

2.使用正则表达式作为分隔标记解析字符串

Scanner对象可以调用 useDelimiter(正则表达式); 方法将一个正则表达式作为分隔标记,即和正则表达式匹配的字符串都是分隔标记。

 

 

StringBuffer类

1.String对象的字符序列是不可修改的,StringBuffer类的对象的实体的内存空间可以自动地改变大小,便于存放一个可变的字符序列。

2.常用方法:

1) 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)

2)public chat charAt(int n ):得到参数n指定的置上的单个字符

   public void setCharAt(int n ,char ch):将当前StringBuffer对象实体中的字符串位置n处的字符用参数ch指定的字符替换

3)StringBuffer insert(int index, String str) :将参数str指定的字符串插入到参数index指定的位置

4)public StringBuffer reverse() :将该对象实体中的字符翻转

5)StringBuffer delete(int startIndex, int endIndex):从当前StringBuffer对象实体中的字符串中删除一个子字符串

   其相关方法:deleteCharAt(int index) 删除当前StringBuffer对象实体的字符串中index位置处的一个字符。

6)StringBuffer replace(int startIndex,int endIndex,String str):将当前StringBuffer对象实体中的字符串的一个子字符串用参数str指定的字符串替换   

 

 

Date类与Calendar类

Date类在java.util包中

构造方法一:Date()

使用Date类的无参数构造方法创建的对象可以获取本地当前时间。

     例: Date nowTime=new Date();

Date对象表示时间的默认顺序是:星期、月、日、小时、分、秒、年。

构造方法二:Date(long time)

使用long型参数创建指定的时间

//System类的静态方法 public long currentTimeMillis() 获取系统当前时间

 

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)

其作用是将日历翻到任何一个时间

public long getTimeInMillis() 可以将时间表示为毫秒。

public final void setTime(Date date)使用给定的 Date 设置此 Calendar 的时间

public int get(int field) :可以获取有关年份、月份、小时、星期等信息

 

日期格式化

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());

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日"。

 

2.不同区域的星期格式

如果想用特定地区的星期格式来表示日期中的星期,可以用format的重载方法:

 format (Locale locale,格式化模式,日期列表);

 

Math类、BigInteger类与Random类

Math类在java.lang包中

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)  返回反正弦值。

 

BigInteger类在java.math包中,提供任意精度的整数运算

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进制的字符串表示

 

Random类在java.util包中

使用Math类调用其类方法random()返回一个0至1之间的随机数(不包括0和1)。(int)(Math.random()*100)+1;

 

Random类的构造方法

public Random();

public Random(long seed);使用参数seek指定的种子创建一个Random对象

 

随机数生成器random调用不带参数的nextInt()方法:

 Random random=new Random();

 random.nextInt();

 

数字格式化

Formatter 类

     Formatter类提供了一个和C语言printf函数类似的format方法:

     format(格式化模式,值列表)

1)格式化模式  format方法中的“格式化模式”是一个用双引号括起的字符序列(字符串),该字符序列中的字符由格式符和普通字符所构成。

2)值列表   format方法中的“值列表”是用逗号分隔的变量、常量或表达式。

 

 

Class类与Console类

Class类

1.使用Class的类方法得到一个和某类(参数className指定的类)相关的Class        对象,

public static Class forName(String className) throws ClassNotFoundException

(上述方法返回一个和参数className指定的类相关的Class对象。如果类在某个包中,className必须带有包名,例如, className="java.util.Date"

2.上述方法返回一个和参数className指定的类相关的Class对象。如果类在某个包中,className必须带有包名,例如, className="java.util.Date"。此时,className类必须有无参数的构造方法。

Console类

如果希望在键盘输入一行文本,但不想让该文本回显,即不在命令行显示,那么就需要使用java.io包中的Console类的对象来完成。

步骤:1.Console cons = System.console();

2. cons调用readPassword()方法【即char[] passwd = cons.readPassword();

】读取用户在键盘输入的一行文本,并将文本以一个char数组返回:

 

 

Pattern类与Math类

都在java.util.regex包中。用于检索。

1.建立模式对象

使用正则表达式regex做参数得到一个称为模式的Pattern类的实例。

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指定的字符串得到的。

 

 

猜你喜欢

转载自blog.csdn.net/nika_jy_L/article/details/84843006