第五周课程总结&试验报告三
第五周课程总结
一、第五周课程总结
1、this关键字
this可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。当一个类的属性(成员变量)名与访问该属性的方法参数名相同时,则需要使用 this 关键字来访问类中的属性,以区分类的属性和方法中的参数。
this用于访问本类中的属性、调用本类的构造方法和表示当前对象,且如果本类没有此属性或方法则从父类中继续查找。
this调用本类构造,必须放在构造方法的首行。
2、super关键字
在以下情况下需要使用 super 关键字:
- 在类的构造方法中,通过 super 语句调用该类的父类的构造方法。
- 在子类中访问父类中的成员。
super 调用父类的构造方法:子类可以通过 super 关键字来调用一个由父类定义的构造方法
super 访问父类中的成员与 this 关键字的使用相似,只不过它引用的是子类的父类。
由于子类不能继承父类的构造方法,因此,要调用父类的构造方法,必须在子类的构造方法体的第一行使用 super() 方法。该方法会调用父类相应的构造方法来完成子类对象的初始化工作。
3、 final修饰符
final 关键字表示对象是最终形态的,对象是不可改变的意思。final 应用于类、方法和变量时意义是不同的,但本质是一样的:final 表示不可改变。
final 用在变量的前面表示变量的值不可以改变,此时该变量可以被称为常量;final 用在方法的前面表示方法不可以被重写;final 用在类的前面表示类不可以被继承,即该类是最终形态,如常见的 java.lang.String 类。
final 修饰类中的属性:表示该属性一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对对象属性来说其引用不可再变。其初始化可以在两个地方:一是其定义处,也就是说在 final 属性定义时直接给其赋值;二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时赋值,又在构造函数中赋予另外的值。
final 修饰类中的方法说明这种方法提供的功能已经满足当前要求,不需要进行扩展,并且也不允许任何从此类继承的类来重写这种方法,但是继承仍然可以继承这个方法,也就是说可以直接使用。在声明类中,一个 final 方法只被实现一次。
final 修饰类:表示该类是无法被任何其他类继承的,意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展。对于 final 类中的成员,可以定义其为 final,也可以不是 final。而对于方法,由于所属类为 final 的关系,自然也就成了 final 型。也可以明确地给 final 类中的方法加上一个 final,这显然没有意义。
4、 Java 抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。
父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。
在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
5、 Java多态性
多态性是面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。
Java 实现多态有 3 个必要条件:继承、重写和向上转型。只有满足这 3 个条件,开发人员才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而执行不同的行为。
1、继承:在多态中必须存在有继承关系的子类和父类。
2、重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
3、向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才既能可以调用父类的方法,又能调用子类的方法。
实验报告三
二、实验报告:String类的应用
1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)
统计该字符串中字母s出现的次数。
public static void main(String[] args)
{
String a = "this is a test of java";
int n = 0;
char[] b = a.toCharArray(); //构建字符串数组
for (int i = 0; i < b.length; i++)
{
if (b[i] == 's')
n++;
}
System.out.println("该字符串中字母s出现的次数:" + n);
}

统计该字符串中子串“is”出现的次数。
public static void main(String[] args)
{
String a = "this is a test of java";
int n = 0;
char[] b = a.toCharArray(); //构建字符串数组
for (int i = 0; i < b.length; i++)
{
if (b[i] == 'i' && b[i + 1] == 's')
n++;
}
System.out.println("该字符串中字母s出现的次数:" + n);
}

统计该字符串中单词“is”出现的次数。
public static void main(String[] args)
{
String a = "this is a test of java";
String b[] = a.split(" ");
int n = 0;
for (int i = 0; i < b.length; i++)
{
if ( b[i].equals("is") )
n++;
}
System.out.println("该字符串中单词“is”出现的次数: " + n);
}

实现该字符串的倒序输出。
public static void main(String[] args)
{
String a = "this is a test of java";
char[] b = a.toCharArray();
for (int i = b.length - 1; i >= 0; i--)
System.out.print(b[i]);
}
/*
public static void main(String[] args)
{
StringBuffer str=new StringBuffer();
str.append("this is a test of java");
System.out.print( "字符串"+"this is a test of java"+"的倒序输出: \n\n\n"+str.reverse() );
}
*/

2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。

实验代码:
import java.util.Scanner;
public class Mima
{
public static void main(String[] args)
{
System.out.print("输入密码: ");
Scanner hun=new Scanner(System.in);
String password1 = hun.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]);
}
}
实验截图:

3.已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数。
实验代码:
public static void main(String[] args)
{
String str = "ddejidsEFALDFfnef2357 3ed";
int x = 0, y = 0, z = 0;
char[] sss = str.toCharArray();
for ( int i = 0; i < str.length(); i++ )
{
if (sss[i] >= 'a' && sss[i] <= 'z')
x++;
else if (sss[i] >= 'A' && sss[i] <= 'Z')
y++;
else
z++;
}
System.out.println("小写英文字母数: " + x);
System.out.println("\n大写字母数: " + y);
System.out.println("\n非英文字母数: " + z);
}
实验截图:

第五周课程总结&试验报告三的更多相关文章
- 第五周课程总结&试验报告(三)
第五周课程总结&试验报告(三) 实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 ###1.已知字符串:"this is a ...
- 第五周课程总结&试验报告(三
实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 1.已知字符串:"this is a test of java".按要求执 ...
- 第五周课程总结&试验报告 (三)
课程总结 一,类的继承格式 1.在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: class 父类 {} class 子类 extends 父类 {} ...
- 第五周课程总结&试验报告
this和super的区别 区别点 this super 属性访问 访问同类中的属性,如果本类没有此属性则从父类中继续查找 访问父类中的属性 方法 访问本类中的方法,如果本类中没有此方法,则从父类中继 ...
- 第五周课程总结&实验报告(四)
第五周课程总结 本周主要学习了 1.抽象类 抽象类的定义格式 abstract class抽象类名称{ 属性; 访问权限返回值类型方法名称(参数){ //普通方法 [return返回值]; } 访问权 ...
- 第五周总结&实验报告三
第五周总结&实验报告三 实验报告 1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) ① 统计该字符串中字母s ...
- 第五周课程总结&实验报告三
1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) •统计该字符串中字母s出现的次数. •统计该字符串中子串" ...
- 第五周学习总结&第三次实验报告(String类的应用)
第五周学习总结 1.学习了继承的相关知识点: (1) 继承的格式为class 子类 extends 父类{} (2) 继承实际上是通过子类去扩展父类的功能 (3) 一个子类只能继承一个父类,也就是说, ...
- 第五周课程总结&实验报告(三)
实验三 String类的应用 实验目的: (1)掌握类String类的使用: (2)学会使用JDK帮助文档: 实验内容: 1.已知字符串:"this is a test of java&qu ...
随机推荐
- jdk中使用的设计模式
在JDK(Java Development Kit)类库中,开发人员使用了大量设计模式,正因为如此,我们可以在不修改JDK源码的前提下开发出自己的应用软件,研究JDK类库中的模式实例也不失为学习如何使 ...
- 关于vue-resource 跨域请求的异常处理方法
当你启动一个vue项目时,项目会运行在一个webpack的服务上,所以此时去访问其他端口或者是其他地址时,属于跨域请求,故会报异常. has been blocked by CORS policy: ...
- phpcms9 从注入点入手和 从前台getshell
弄了3天了 这个点 总结一下这三天的坑吧 0X01 注入点入手 /index.php?m=wap&c=index&a=init&siteid=1 获取cookie 传给 us ...
- 局域网与internet
凡是由能彼此通信的设备组成的网络就叫互联网,即使仅有两台机器(计算机.手机等),不论用何种技术使其彼此通信,都叫互联网, 所以,互联网有广域网.城域网及局域网之分. 国际标准的互联网写法是intern ...
- VisualVM通过ssl远程连接JVM
VisualVM通过密码连接JVM实例如下 https://www.cnblogs.com/qq931399960/p/10960573.html 虽然设置了密码,但还是不够安全,只要获取到密码,在任 ...
- ZOJ - 1586 QS Network (Prim)
ZOJ - 1586 QS Network (Prim) #include<iostream> #include<cstring> using namespace std; + ...
- java_切面日志
切面日志举例 package com.keyba1; import java.lang.annotation.ElementType; import java.lang.annotation.Rete ...
- js调用后台接口进行下载
js调用后台接口一定不能用ajax location.href=$$pageContextPath +'downfile/down.do?filname='+row.fileUrl;
- 安卓之Android.mk编写
题记:编译环境可以参考https://www.cnblogs.com/ywjfx/p/9960817.html 不管是写C还是java,我想所有的程序员都经历过HelloWorld程序的编写,现在让我 ...
- OpenStack 高性能虚拟机之大页内存
目录 文章目录 目录 前文列表 虚拟存储器系统 页式虚拟存储器 大页内存 Linux 的大页内存 大页的实现原理 大页内存配置 透明巨型页 THP 大页面对内存的影响 Nova 虚拟机的大页内存设置 ...