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

第五周课程总结&实验报告三

第五周课程总结

随着时间的推移,一个月过去了,我们学习的java只是也在慢慢的开始出现沉淀。我们开始慢慢熟悉这门语言,尽管只窥见其冰山一角,但足以令人深思。尽管我不是java大佬,也不是专业尖子生,但至少我能做出来,并且还在慢慢变得熟练。这也是令人足以兴奋的。好的,来简单复盘下本周学习及复习到的的知识点:
1.this关键字与supe关键字

(1)this关键字代表了所属函数的调用者对象,this代表了对象的内存地址(在构造函数中打印this会发现结果是一个内存地址),也就是说哪个对象调用了this所在的函数,那么this就指代哪个对象;
(2)this是指向本类中某一个对象的一个变量,this相当于文章中第一人称的“我”,所有人描述自己的时候都会说“我”,只要读“我”的这个人发生变化,这个“我”指向的人就变了;而this关键字与之类似,this是抽象的,刚开始并不知道是指代谁,this是每一个对象携带的变量,这个变量所指向的都是自己,this只是起到了一个描述的作用:只要有一个具体的对象来执行的时候,this就用这个对象的this,换一个对象,this就变成另一个对象的this,所以只有在执行的时候才知道指向谁。就像文章中的“我”,只有确定了谁是读这篇文章的,才能确定这个“我”指代谁;
(3)this关键字代表的是对象的引用,也就是this在指向一个对象,所指向的对象就是调用该函数的对象引用;
4.this关键字的作用:
(1)如果存在同名的成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定访问成员变量的数据;
(2)在一个构造函数中可以调用另外一个构造函数初始化对象;
5.this关键字要注意的事项:
(1)存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量(Java采取的是“就近原则”的机制访问的);
(2)如果在一个方法中访问了一个变量,该变量只存在成员变量的情况下,那么Java编译器会在该变量的前面添加this关键字;
6.this关键字调用其他的构造函数要注意的事项:
(1)this关键字调用其他的构造函数时,this关键字必须要位于构造函数中的第一个语句;
(2)this关键字在构造函数中不能出现相互调用的情况,因为是一个死循环;引用自《this关键字与super关键字详解》

2.本周还深入讲解了java的继承
其中就有讲到super关键字的部分,相关资料见上文。还讲解了子类对象的实例化过程方法的覆写

3.final关键字的作用和实例还有抽象类
讲解了final关键字的使用和实例展现。还了解了抽象类和abstract关键字。
4.对象的多态性

对象向上转型: 父类 子类对象 = 子类实例;
对象向下转型: 子类 子类对象 = (子类)父类实例;

我查阅相关资料,找到一篇相当易懂的讲解多态性博文《Java之对象的多态性》

实验报告:

实验三 String类的应用

实验目的
掌握类String类的使用;
学会使用JDK帮助文档;
实验内容
1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)
统计该字符串中字母s出现的次数。
统计该字符串中子串“is”出现的次数。
统计该字符串中单词“is”出现的次数。
实现该字符串的倒序输出。
2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。

3.已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数。**

第一题:

源代码:

package test;

import java.util.Scanner;

public class test1 {
	
public static void main(String args[]) {
	int count1=0,count2=0,count3=0;
	int x=0;
	String str1="this is a test of java";
	for(int i=0;i<str1.length();i++) {
		if(str1.indexOf("s", x)!=-1) {
			x=str1.indexOf("s",x)+1;
			count1++;
		}
	}
	x=0;
	for(int i=0;i<str1.length();i++) {
		if(str1.indexOf("is", x)!=-1) {
			x=str1.indexOf("is",x)+2;
			count2++;
		}
	}
	x=0;
	for(int i=0;i<str1.length();i++) {
		if(str1.indexOf(" is ", x)!=-1) {
			x=str1.indexOf(" is ",x)+2;
			count3++;
		}
	}
	
	System.out.println("s出现次数为:"+count1);
	System.out.println("子串is出现次数为:"+count2);
	System.out.println("单词is出现次数为:"+count3);
	char c[]=str1.toCharArray();
	for(int i=str1.length()-1;i>=0;i--) {
		System.out.print(c[i]);
	}
}
	
}

实验截图:

第二题:

源代码:

package test;

import java.util.Scanner;

public class test2 {
    
public static void main(String args[]) {
    System.out.println("输入密码:");
    Scanner pa=new Scanner(System.in);
    String password1 = pa.nextLine();
    char c[]=password1.toCharArray();
    System.out.print("加密后密码为:");
    System.out.print(c[password1.length() - 3]);
    System.out.print(c[password1.length() - 2]);
    System.out.print(c[password1.length() - 1]);
    
    for(int i=0;i<password1.length()-3;i++) {	
    	System.out.print(c[i]);
    }
    
    
    
    /*System.out.println("子串is出现次数为:"+count2);
    System.out.println("单词is出现次数为:"+count3);*/
}
    

}

实验截图:

第三题:

源代码:

package test;

import java.util.Scanner;

public class test3 {
	
public static void main(String args[]) {
	int count1=0,count2=0,count3=0;
	String str1 ="ddejidsEFALDFfnef2357 3ed";
	char c[]= str1.toCharArray();
	int len=str1.length();
	for(int i=0;i<str1.length();i++) {
		if(c[i]>='A'&&c[i]<'Z') {
			count1++;
		}
		else if(c[i]>='a'&&c[i]<'z') {
			count2++;
		}
		else {
			count3++;
		}
	}
	
	
	System.out.println("大写字母数:"+count1);
	System.out.println("小写字母数:"+count2);
	System.out.println("非英文字母数:"+count3);
	System.out.println("字符串长度 :"+len);
}
	

}

实验截图:

posted @ 2019-09-27 13:49  反语ooo  阅读(225)  评论(3编辑  收藏  举报