实验9 常用系统类
9.1实验目的
(1)掌握字符串处理方法;
(2)了解Math类的数学方法的使用;
(3)熟悉各种数据类型包装类的使用;
(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类
(1)Math类中的方法和属性均为静态的,Math类不能创建对象。
(2)表9-1列出的Math类的方法不少提供了参数多态。
(3)方法random()产生的随机数的范围是0~1之间的不包括0和1的一个小数形式的数。
表9-1 Math类的常用方法
方法 | 功能 |
int abs(int i) | 求整数的绝对值 ;另有针对long,float,double的多态方法 |
double ceil(double d) | 不小于d的最小整数(返回值为double型) |
double floor(double d) | 不大于d的最大整数(返回值为double型) |
Int max(int i1,int i2) | 求两个整数中最大数;另有针对long,float,double的多态方法 |
Int min(int i1,int i2) | 求两个整数中最小数 ;另有针对long,float,double的多态方法 |
double random() | 0~1之间的随机数 |
Int round(float f) | 求最靠近f的整数 |
long round(double d) | 求最靠近d的长整数 |
double sqrt(double a) | 求平方根 |
double cos(double d) | 求d的cos函数 注:其它求三角函数的方法有sin,tan |
double log(double d) | 求自然对数 |
double exp(double x) | 求e的x次幂(ex) |
double pow(double a, double b) | 求a的b次幂 |
2.3 数据类型包装类
(1)每种基本数据类型均有对应的包装类,除char和int的包装类为Character和Integer外,其他类型的包装类的名字均为相应类型的关键字将首字符换大写(例如: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类--字符串常量
(1)String类创建的字符串对象的内容不能改变;
(2)理解字符串的拼接运算的含义,可以将任何数据类型的数据与字符串进行拼接,包括对象类型的数据,它将调用对象的toString()的结果与串拼接。拼接的结果为一个新的串对象,不会改变源字符串对象的内容。例如:
String x="hello";
String x1=x; //x1和x指向同一串对象
String y="good";
x=x+y+2; //修改x的值,让其指向新生成的串。
System.out.println(x);
System.out.println(x1);
输出结果为:
hellogood2
hello
(3)String类提供了丰富的实例方法,见表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类—可变字符串
(1)StringBuffer类创建的串可以修改,可以对串的内容进行增、删、改操作。
(2)StringBuffer的常用方法,见表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"; //A、B、C、D中的一个
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说的话
public static void main(String a[]){
char man; //做好事的人
String x="ABCD"; //A、B、C、D中的一个
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);
}
}
}
if ( !(man=='D')) count++; //D说的话
if (count==3) //如果有3人说的是真话,则为要结果,输出
System.out.println("this man="+man);
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论