第五周课程总结&试验报告(三)
第五周课程总结&试验报告(三)
实验三 String类的应用
实验目的
掌握类String类的使用;
学会使用JDK帮助文档;
实验内容
###1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)
统计该字符串中字母s出现的次数。
统计该字符串中子串“is”出现的次数。
统计该字符串中单词“is”出现的次数。
实现该字符串的倒序输出。
实验代码
package 作业;
public class zifu {
public static void main(String[] args) {
String s = "this is a test of java"; 定义赋值
int n = s.indexOf("s",3); 定义,查找指定位置字符"s"
System.out.println(+n); 输出s数量
int a = s.indexOf("is"); 定义,查找指定位置字符"is"
System.out.println(+a); 输出is数量
int b = (s.split(" is ")).length - 1; 用拆分字符串的方法来求单词"is"的数量,也就是当初现前后有空格的"is"时,对字符串进行拆分
System.out.println("单词is出现的次数" + b); 并把计算拆分好的字符串的数量,在其基础是减一,就获得了前后又空格的"is"的数量;
StringBuffer r = new StringBuffer ("this is a test of java"); 利用StringBuffer reverse方法,对字符串内容进行反转保存
System.out.println(r.reverse());
}
}


本来是想把空格作为拆分条件对字符串进行拆分,定义赋值b='is”然后用equals把b与拆分后的字符串进行比较,如果相等,则count++,以此来求出单词is的数量,但输出错误了,刚好看到StringBuffer reverse
方法觉得这种方法更加便利和简洁,所以换StringBuffer reverse方法来求单词is。本题总体来说还是很简单的,灵活运用String和StringBuffer的构造方法就能解决。
2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。
package 作业;
import java.util.Scanner;
public class psw {
public static void main(String[] args) {
@SuppressWarnings("resource") 代码没问题,只是取消一些特定代码段中的警告
Scanner s = new Scanner(System.in); 定义scanner,等待输入
System.out.println("输入字符串:");
String r = s.nextLine(); 读取输入内容
char t[] = new char[r.length()]; 创建字符数组t
t=r.toCharArray(); 将用户输入的字符串通过toCharArray()转化为字符数组存到t中
int i;
for (i=0;i<t.length;i++) {
t[i]=(char)(t[i]+3); 将一般的数组字符直接加3然后强制类型转化为char类型
}
String c=" "; 定义字符串并使其赋值为空
for (i=0;i<r.length();i++) { 将字符数组转化为字符串
c=c+t[i];
}
System.out.println("改变后的字符串:\n"+c); 输出
}
}


在前面发现自己定义的字符串s出现了警告,结果发现代码没问题,最后用@SuppressWarnings("resource")消除了警告,在写代码时,
for循环里;i<t.length,我之前多加了一个等号,所以输出时出现了错误,最后发现并改正,代码就没问题了,本题没有什么做题思路,以为思路都已经给了出来。
3.已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数。
package 作业;
public class 输出 {
public static void main(String[] args) {
String s = "ddejidsEFALDFfnef2357 3ed"; 定义赋值
int small=0,big=0,i,not=0;
for (i=0;i<s.length();i++) { 利用for循环对字符串进行沥遍
char c=s.charAt(i); 从中依次取出字符,并转换赋值给数组c
if (Character.isLowerCase(c)) { 利用Character.isLowerCase判段取出来的字符是否为小写
small++;
}
else if (Character.isUpperCase(c)){ 利用Character.isUpperCase(c)判断字符是否为大写
big++;
}
}
not=s.length()-small-big; 求出非英文字母数
System.out.println("大写字母个数:"+big);
System.out.println("小写字母个数:"+small); 输出
System.out.println("非英语字母个数:"+not);
}
}


错误的时候还没完全来了解Character.isLowerCase和Character.isUpperCase,我出错的地方是我填了i,这两个方法里面要填数组名,之后去百度了解了,定义一个数组c,并把s的内容转换赋值给数组c,
char c=s.charAt(i);用这个语句取出每一个字符元素,并执行if和else if语句,求出答案。
总结
这是我本周自学了一小点,学习了Stringbuffer和大小写字符的判断。
Character character = 'A';
// isDigit方法判断字符是否为数字
boolean isDigit = Character.isDigit(character);
System.out.println("isDigit="+isDigit);
// isLetter方法判断字符是否为字母
boolean isLetter = Character.isLetter(character);
System.out.println("isLetter="+isLetter);
// isLowerCase方法判断字符是否为小写
boolean isLowerCase = Character.isLowerCase(character);
System.out.println("isLowerCase="+isLowerCase);
// isUpperCase方法判断字符是否为大写
boolean isUpperCase = Character.isUpperCase(character);
System.out.println("isUpperCase="+isUpperCase);
StringBuffer对象的初始化不像String类的初始化一样,Java提供的有特殊的语法,而通常情况下一般使用构造方法进行初始化。
reverse方法
public StringBuffer reverse()
该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“abc”);
sb.reverse();
经过反转以后,对象sb中的内容将变为”cba”。
setCharAt方法
public void setCharAt(int index, char ch)
该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。例如:
StringBuffer sb = new StringBuffer(“abc”);
sb.setCharAt(1,’D’);
则对象sb的值将变成”aDc”。
继承:
1.子类继承父类的成员变量
1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;
2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。
2.子类继承父类的方法
同样地,子类也并不是完全继承父类的所有方法。
1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;
2)对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。
注意:隐藏和覆盖是不同的。隐藏是针对成员变量和静态方法的,而覆盖是针对普通方法的。(后面会讲到)
3.构造器
子类是不能够继承父类的构造器,但是要注意的是,如果父类的构造器都是带有参数的,则必须在子类的构造器中显示地通过super关键字调用父类的构造器并配以适当的参数列表。如果父类有无参构造器,则在子类的构造器中用super关键字调用父类构造器不是必须的,如果没有使用super关键字,系统会自动调用父类的无参构造器。
注意一个子类只能继承一个父类,但我们可以用多层继承来实现多重继承,继承是要用到extends,格式是: class 子类 extends 父类{ }。
子类实例化前会先调用父类构造方法再用子类。
###方法的覆写:最好每个类加上一个无参构造,而且子类覆写的方法权限只增不减的,相比与父类。
重载与覆写的区别
重载:方法名相同参数不同,两个可以同时用,用参数区分开。
覆写:方法名相同参数相同,即上一个方法作废。
重载,简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
覆写(Override)的两个函数的函数特征相同,重载(Overload)的两个函数的函数名虽然相同,但函数特征不同。 函数特征包括函数名,参数的类型和个数。
###注意:super与this不能同时用,以为它们都要放在首行。
不同点:
1、super()主要是对父类构造函数的调用,this()是对重载构造函数的调用
2、super()主要是在继承了父类的子类的构造函数中使用,是在不同类中的使用;this()主要是在同一类的不同构造函数中的使用
相同点:
1、super()和this()都必须在构造函数的第一行进行调用,否则就是错误的
final:
final声明的类不能有子类
final声明的方法不能被子类所覆写
final声明的变量即成为常量,常量不能修改
###抽象类:
有点像模板,且一个子类只能继承一个抽象类。
抽象类的使用原则如下:
抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public;
抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理;
抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类;
子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。);
本周所讲课堂内容我已经消化的七七八八了,作业也用心去完成了,本周也自学了一些东西,继续努力。
第五周课程总结&试验报告(三)的更多相关文章
- 第五周课程总结&试验报告三
第五周课程总结 一.第五周课程总结 1.this关键字 this可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用.当一个类的属性(成员变量)名与访问该 ...
- 第五周课程总结&试验报告(三
实验三 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 ...
随机推荐
- PHP mysqli_fetch_object() 函数
定义和用法 mysqli_fetch_object() 函数从结果集中取得当前行,并作为对象返回. 注释:该函数返回的字段名是区分大小写的. <?php // 假定数据库用户名:root,密码: ...
- 012_linuxC++之_类的继承定义
(一)访问控制和继承 公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基 ...
- 洛谷P1436 棋盘分割
洛谷题目链接 动态规划: 我们设状态$f[i][j][o][p][k]$表示一个矩形,左上角顶点坐标为$(i,j)$,右下角顶点坐标为$(o,p)$时分割了$k$次,也就是说现在是$k+1$块 我们考 ...
- 在 CentOS 7 上安装 RabbitMQ
RabbitMQ 服务器在安装之前需要安装 erlang. 最新版本的 RabbitMQ 3.8.0 需要 Erlang 21.3 以上的版本支持. 在这里,我们需要在你的 CentOS 中安装 Er ...
- 51 Nod 1475 建设国家 (优先队列+贪心)
1475 建设国家 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 小C现在想建设一个国家.这个国家中有一个首都,然后有若干个中间站,还有若干个城 ...
- 蓝桥 log大侠
标题:Log大侠 atm参加了速算训练班,经过刻苦修炼,对以2为底的对数算得飞快,人称Log大侠. 一天,Log大侠的好友 drd 有一些整数序列需要变换,Log大侠正好施展法力... 变换的规则是: ...
- Linux操作大全
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...
- maven上传jar包(oracle jdbc驱动)
由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库.一.首先要得到Oracle J ...
- How to get full path of StreamWriter
How to get full path of StreamWriter In my version of the framework, this seems to work: string f ...
- centos7 防火墙开启 (重点)
如果在自己服务器上想开启远端访问功能,需要开启防火墙 1.通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启. 2.通过syst ...