实验9 常用系统类
9.1实验目的
1)掌握字符串处理方法;
 (2)了解Math类的数学方法的使用;
 (3)熟悉各种数据类型包装类的使用;
 (4)了解Vector类的使用。
9.2 知识要点
9.2.1 Object
(1) Object类处于Java继承层次中最顶端的类,它封装了所有类的公共行为。
(2) Object类的equals()方法采用的是==运算比较,也就是只有两个引用变量指向同一对象时才相等。而实际上我们期望该方法进行对象的内容比较,因此子类中通常将equals()方法改写。
(3) Object类的toString()方法是返回对象的描述信息,在Object类中该方法返回对象的类名及对象引用地址。子类中通常要提供自己的toString()方法,以便更好描述对象。
9.2.2 Math
1Math类中的方法和属性均为静态的,Math类不能创建对象。
2)表9-1列出的Math类的方法不少提供了参数多态。
3)方法random()产生的随机数的范围是01之间的不包括01的一个小数形式的数。
9-1 Math类的常用方法
方法
功能
int abs(int i)
求整数的绝对值 ;另有针对longfloat,double的多态方法
double ceil(double d)
不小于d的最小整数(返回值为double)
double floor(double d)
不大于d的最大整数(返回值为double)
Int max(int i1,int i2)
求两个整数中最大数;另有针对longfloat,double的多态方法
Int min(int i1,int i2)
求两个整数中最小数 ;另有针对longfloat,double的多态方法
double random()
0~1之间的随机数
Int round(float f)
求最靠近f的整数
long round(double d)
求最靠近d的长整数
double sqrt(double a)
求平方根
double cos(double d)
dcos函数
注:其它求三角函数的方法有sin,tan
double log(double d)
求自然对数
double exp(double x)
ex次幂(ex
double pow(double a, double b)
ab次幂
23 数据类型包装类
1)每种基本数据类型均有对应的包装类,除charint的包装类为CharacterInteger外,其他类型的包装类的名字均为相应类型的关键字将首字符换大写(例如:long的包装类为Long.
(2) 包装类用来实现该类型数据的一些处理操作,尤其是其中的静态方法,见表9-2
9-2 数据包装类的常用方法
方法
功能
int Integer.parseInt(String s)
将数字串转化为整数
long Long.parseLong(String s)
将数字串转化为长整数
double Double.parseDouble(String s)
将数字串转化为双精度数
boolean Character.isDigit(char c)
判断某字符是否为数字
boolean Character.isLetter(char c)
判断某字符是否为字母
String(int k)
将一个整数转换为字符串
BinaryString(int k)
将一个整数转换为二进制字符串
9.2.4  String--字符串常量
1String类创建的字符串对象的内容不能改变;
2)理解字符串的拼接运算的含义,可以将任何数据类型的数据与字符串进行拼接,包括对象类型的数据,它将调用对象的toString()的结果与串拼接。拼接的结果为一个新的串对象,不会改变源字符串对象的内容。例如:
String x="hello";
String x1=x;  //x1x指向同一串对象
String y="good";
x=x+y+2;  //修改x的值,让其指向新生成的串。
System.out.println(x);
System.out.println(x1);
输出结果为:
hellogood2
hello
3String类提供了丰富的实例方法,见表9-3
9-3 String类的实例方法
方法
功能
boolean equals(Object obj)
当前串与参数串比较是否相等
java replace方法boolean equalsIgnoreCase(String s2)
比较两个字符串,不计较字母的大小写
int length()
求字符串长度
String trim()
去除前导空格和尾部空格
int indexOf(int ch, int fromIndex))
formIndex位置开始往后查字符串中的字符ch的首次出现位置。
int indexOf(String s, int fromIndex))
formIndex位置开始往后查字符串中的子串的首次出现位置。
char charAt(int index)
从串中获取指定位置的字符
String substring(int begin, int end)
根据始末位置从串中获取子串
String[] split(String regex)
按照分隔符将串分成若干子串
String replace(char ch1,char ch2)
将字符串中所有ch1字符换为ch2
9.2.5 StringBuffer可变字符串
1StringBuffer类创建的串可以修改,可以对串的内容进行增、删、改操作。
2StringBuffer的常用方法,见表9-4
9-4 StringBuffer类的常用方法
方法
功能
StringBuffer append(Object obj)
某个对象的串描述添加到
StringBuffer尾部
StringBuffer insert(int pos, Object obj)
将某个对象的串描述插入到StringBuffer中的某个位置
StringBuffer setCharAt(int pos, char ch)
用新字符替换指定位置字符
StringBuffer deleteCharAt(int pos)
删除指定位置的字符
StringBuffer replace(int start, int end, String str)
将参数指定范围的一个子串用新串替换
String substring(int start, int end)
获取所指定范围的子串
9.2.6  Vector
1)类Vector实现了可扩展的对象数组,使用向量没有数组的范围限制,可以不断添加元素。但向量中不能存放基本数据类型的数据,加入的数据均为对象。
2)向量的常用访问方法见表9-5
9-5 Vector类常用方法
方法
功能
void add(int index, Object element)
将某个对象插入向量的指定位置
boolean add(Object o)   
将某个对象添加到向量中
void addElement(Object obj) 
将某个对象添加到向量中
int size()
向量中已存放元素个数
void clear()
删去所有元素
boolean contains(Object elem)
检测向量中是否包含指定对象
Object get(int index)
根据位置获取向量元素
int indexOf(Object obj, int start)
 
从指定位置起向后搜索对象obj,返回首次匹配位置
boolean remove(Object o) 
删去指定对象
void removeElementAt(int index) 
删去指定位置的元素
3)对向量的遍历访问方法(设v为一向量)
方法1:通过位置访问
for (int k=0;k<v.size();k++)
          输出 v.get(k);
方法2:通过使用迭代子进行遍历
Iterator p=v.iterator();
    while (p.hasNext()) 
         输出 p.next());
9.3 样例程序
样例1:编写一个方法统计一个字符在某字符串中的出现次数;从命令行参数获取一个算术表达式,利用前面方法判断该表达式的左右括号数量是否一致,如果一致,输出“YES”,否
则输出“NO”。
【参考程序】
public class Count {
  public static void main(String args[]) {
    String s = args[0];
    if  ( count(s,( ) == count(s,)))  //看左括号与右括号的出现次数是否一样多
        System.out.println(" YES" );
    else
        System.out.println(" NO" );
  }
   
/* 统计字符c在串s中的出现次数 */
public static int count(String s ,char c) {
int x=0;  //计数变量
for (int k=0;k<s.length();k++)
   if (s.charAt(k)==c) x++;  //在第k个位置出现,则计数增1
return x; 
}
}
样例2:四位同学中一位做了好事,校长问这四位是谁做的好事。
A说:不是我。
B说:是C
C说:是D
D说:C胡说。
已知三个人说的是真话,一个人说的是假话。根据这些信息,出做了好事的人。
【参考程序】
public class good {
  public static void main(String a[]){
    char man;  //做好事的人
    String x="ABCD";  //ABCD中的一个
    for (int k=0;k<=3;k++) {  //用循环去测试各种情形
        int count=0;
        man=x.charAt(k);  //假设第k个是做好事者
        if (man!='A') count++;       //A说的话
        if (man=='C') count++;      //B说的话
        if (man=='D') count++;       //C说的话
        if ( !(man=='D')) count++;   //D说的话
        if (count==3)  //如果有3人说的是真话,则为要结果,输出
           System.out.println("this man="+man);
      }
  }
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。