Java实验报告(三)
1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)
- 统计该字符串中字母s出现的次数。
- 统计该字符串中子串“is”出现的次数。
- 统计该字符串中单词“is”出现的次数。
- 实现该字符串的倒序输出。
实验源码:
第一问:
1 public class Text1{
2 public static void main(String[] args){
3 String check="this is a tast of java";
4 int count=0,i=0;
5 while(check.indexOf("s",i)!=-1) {
6 i=check.indexOf("s",i)+1;
7 count++;
8 }
9 System.out.println(count);
10 }
11 }
第二问:
1 public class Text1{
2 public static void main(String[] args){
3 String check="this is a tast of java";
4 int count=0,i=0;
5 while(check.indexOf("is",i)!=-1) {
6 i=check.indexOf("is",i)+1;
7 count++;
8 }
9 System.out.println(count);
10 }
11 }
第三问:
1 public class Text1{
2 public static void main(String[] args){
3 String check="this is a tast of java";
4 int count=0,i=0;
5 while(check.indexOf(" is ",i)!=-1) {
6 i=check.indexOf(" is ",i)+1;
7 count++;
8 }
9 System.out.println(count);
10 }
11 }
第四问:
1 public class Text1{
2 public static void main(String[] args){
3 StringBuffer check=new StringBuffer();
4 check.append("this is a text of java");
5 System.out.println(check.reverse());
6
7 }
8 }
实验结果:
1-1,第一问结果截图
1-2.第二问结果截图
1-3,第三问结果截图
1-4,第四问结果截图
2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。
实验源码:
1 import java.util.*;
2 public class Text1{
3 public static void main(String[] args){
4 Scanner input=new Scanner(System.in);
5 String check;
6 check=input.nextLine();
7 String str=check;
8 char ch[]=check.toCharArray();
9 char ch1[]=str.toCharArray();
10 for(int i=0;i<=check.length()-1;i++) {
11 if(i+3>check.length()-1) {
12 ch1[(i+3)-check.length()]=ch[i];
13 }
14 else {
15 ch1[i+3]=ch[i];
16 }
17 }
18 String str2=String.valueOf(ch1);
19 System.out.println(str2);
20 }
21 }
实验结果:
2-1,第二题实验结果截图
3.已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数。
实验源码:
1 import java.util.*;
2 public class Text1{
3 public static void main(String[] args){
4 String str="ddejidsEFALDFfnef2357 3ed";
5 char ch[]=str.toCharArray();
6 char point='a';
7 int countCHAR=0,countchar=0,countother=0;
8 for(int i=0;i<=str.length()-1;i++) {
9 if(ch[i]>='A'&ch[i]<='Z') {
10 countCHAR++;
11 }
12 else if(ch[i]>='a'&ch[i]<='z') {
13 countchar++;
14 }
15 else {
16 countother++;
17 }
18 point=ch[i];
19 }
20 System.out.println("大写字母:"+countCHAR+",小写字母:"+countchar+",其他:"+countother);
21 }
22 }
实验结果:
3-1.第三题实验截图
学习总结:
本周主要学习的内容有1,继承 2,方法的覆写与重载 3,super关键字 4,final关键字 5,抽象类
1,继承
类的继承格式:
class()父类{} // 定义父类
class 子类 extends 父类{} //使用extends关键字实现继承
子类可以继承父类中的操作,同时子类也可以定义自己的属性和方法。
一个父类可以有多个子类,但一个子类只能有一个父类。
子类可以直接使用父类中的非私有属性和方法,但是不能直接访问父类中的私有成员。
2,方法的覆写与重载
覆写是指子类定义了与父类中同名的方法,但方法的覆写必须考虑到权限。
即子类中覆写的方法权限必须大于或等于父类中的被覆写的方法的权限。
重载是指方法名称相同但参数的类型或个数不同的方法。
以下是重载与覆写的区别:
序号 |
区别点 |
重载 |
覆写 |
1 |
单词 |
Overloading |
Overriding |
2 |
定义
|
方法名称相同,参数类型或个数不同 |
方法名称,参数类型,返回值全部相同 |
3 |
对权限无要求 |
被覆写的方法不能拥有更严格的权限 |
|
4 |
范围 |
发生在一个类中 |
发生在继承类中 |
3,super关键字
使用super关键字可以从子类中调用父类中的构造方法,普通方法,属性。
this与super不能同时使用且this与super不能出现在主方法中。这是因为super和this的调用都必须出现在构造方法的首行。
以下是this与super的区别:
序号 |
区别点 |
this |
super |
1 |
属性访问 |
访问本类中的属性,如果本类没有此属性则从父类中继续查找 |
访问父类中的属性 |
2 |
方法 |
访问本类中的方法,如果本类中没有此方法,则从父类中继续查找 |
直接访问父类中的方法 |
3 |
调用构造 |
调用本类构造,必须放在构造方法的首行 |
调用父类构造方法,必须放在子类构造方法的首行 |
4 |
特殊 |
表示当前对象 |
无此概念 |
4,final关键字
在声明和使用final关键字需要注意一下几点;
① final声明的类不能有子类
② final声明的方法不能被子类覆写
③ final声明的变量即成为常量,常量不可以修改
5,抽象类
Java中有一种专门用来当做父类的类,这种类被称为抽象类。
抽象类的定义及使用规则如下:
① 包含抽象方法的类必须是抽象类;
② 抽象类和抽想方法都要使用abstract关键字声明;
③ 抽象方法只需声明而不需要实现;
④ 抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法。
抽象类的定义就是比普通方法多了一些抽象方法,其他基本与普通方法一致。
抽象类不能使用final关键字声明。
抽象类中可以定义构造方法,但需要在子类引用super关键字,如果父类存在一个有参数的构造方法的话最好也再定义一个无参的构造方法。可以避免出错。