第五周课程总结&试验报告(三)

实验三 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的。类似于匿名类.

重载与覆写

方法重载: 方法名称相同,参数的个数及类型不同。

方法覆写: 方法名称,返回值类型,参数的个数,参数的类型均相同。

posted @ 2019-09-26 21:43  颜晴超甜♡  阅读(166)  评论(0编辑  收藏  举报