实验三 String类的应用
一、实验目的
- 掌握类String类的使用;
- 学会使用JDK帮助文档;
二、实验内容
1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)
统计该字符串中字母s出现的次数。
统计该字符串中子串“is”出现的次数。
统计该字符串中单词“is”出现的次数。
实现该字符串的倒序输出。
实验源码:
package com.company;
public class Main {
static String str = "this is a test of java";
public static void main(String[] args) {
query("s","该字符串中字母s出现的次数。");
query("is","该字符串中子串“is”出现的次数。");
query( " is ","该字符串中单词“is”出现的次数。");
resultString();
}
public static void query(String str1, String sentence) {
int count = 0;
int temp = str.indexOf(str1);
while(temp >= 0 && temp <= str.length()) {
temp= str.indexOf(str1,temp+1);
count++;
}
System.out.println(sentence+count);
}
public static void resultString() {
String resultString = "";
char[] charArray = str.toCharArray(); // 将字符串变成字符数组 String -> char []
for (int i=charArray.length-1; i>=0; i--){
resultString += charArray[i];
}
System.out.println(resultString);
}
}
实验结果:
2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。
实验源码:
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // Scanner = 处理输入的类 sc = 类的实例化
String str = sc.nextLine();
String s = "";
char[] charArray = str.toCharArray(); // 字符串 -> 字符数组
for (int i = 0; i < charArray.length; i++) {
s += (char)((int)charArray[i]+3);
}
System.out.println(s);
}
}
实验结果:
3.已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数。
实验源码:
package com.company;
public class Main {
public static void main(String[] args) {
String str = "ddejidsEFALDFfnef2357 3ed";
char[] charArray = str.toCharArray();
String str1="";
String str2="";
String str3="";
for (int i = 0; i < charArray.length; i++) {
if(Character.isUpperCase(charArray[i]))
str1+=charArray[i];
else if(Character.isLowerCase(charArray[i]))
str2+=charArray[i];
else // 非字母
str3+=charArray[i];
}
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
}
}
实验结果:
内容总结:
this和super
使用方法
- 1.如果子类中出现非私有的同名变量,要引用时:
(1) 访问父类中的同名变量,用super
(2) 访问子类本类中的变量,用this- 2.如果子类重写方法时,要引用父类中的已经定义好的功能时,用super.方法
- 3.如果子类中的构造函数需要指定父类中其他构造函数进行初始化,使用super(参数)的形式
- 4.如果子类中的构造函数中,需要引用父类中已经定义好的方法,使用super(参数)
- mian方法中不能使用this和super!!
区别
- super代表父类对象的引用
- this代表本类对象的引用
- this和super都可以调用构造方法,但两者市不可以同时出现的,因为两者调用构造方法市都必须放在构造方法的首行。
- 无论子类如何操作,最终必须要先调用父类中的构造方法。
final关键字
当用final去修饰一个类的时候,表示这个类不能被继承。
- final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。final变量一旦被初始化后不能再次赋值。
- 本地变量必须在声明时赋值。 因为没有初始化的过程
- 在匿名类中所有变量都必须是final变量。
- final方法不能被重写, final类不能被继承
- 接口中声明的所有变量本身是final的。类似于匿名类.