java课后实验性问题5
课后作业一:字符串加密
程序设计思想:
从键盘获取字符串,将字符串转为字符数组,将每个元素加事前协定的“key”,再转为字符串输出。
程序流程图:
源代码:
import java.util.Scanner;
public class Test{
public static void main(String args[]){
String str1,str2;
System.out.print("输入字符串:");
Scanner sc = new Scanner(System.in);
str1 = sc.nextLine();
char [] ch = str1.toCharArray();
for(int i = 0; i < ch.length; i++){
int n = 0, m = 0;
n = ch[i];
m = n + 3;
ch[i] = (char)m;
}
String str = new String(ch);
str2 = str;
System.out.println("加密后的字符串:"+str2);
}
}
结果截图:
1. 运行以下代码,会出现什么结果,为什么,总结出什么?
public class StringPool {
public static void main(String args[]){
String s0 = "Hello";
String s1 ="Hello";
String s2 = "He"+"llo";
System.out.println(s0 == s1);
System.out.println(s0 == s2);
System.out.println(new String("Hello") == new String("Hello"));
}
}
结果:
String中当字符串相同时,为节省空间,相同的字符串使用引用。比较的是对象地址。s0==s1 s1为s0的引用,地址相同,所以为true。
s2 中“+”为连接,s2值为Hello s0==s2 s2为s1的引用,地址相同,所以为true。
System.out.println(new String("Hello")==new String("Hello")) 创建了新的对象,两个独立对象地址不同,所以为flase。
总结:String中当字符串相同时,为节省空间,相同的字符串使用引用。
public class StringPool {
public static void main(String args[]){
String s1 = "a";
String s2 = s1;
System.out.println(s1 == s2);
s1+=”b”;
System.out.println(s1 == s2);
System.out.println(s1 == ”ab”);
System.out.println(s1.equals(“ab”));
}
}
结果:ture
false
false
ture
给变量赋值s1、s2引用同一个对象,所以为true。
s1+=b,后得到一个“ab”与“a”无关,所以为false。
s1==“ab”ab是常量与对象无关,所以为false。
String.equals()方法可以比较两个字符串内容。所以为false。
总结:String.equals()方法可以比较两个字符串内容。
3. 字符串比较,查看String.equals()方法实现代码。
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
使用:
public class StringEquals {
public static void main(String[] args) {
String s1 = new String("Hello");
String s2 = new String("Hello");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
String s3 = "Hello";
String s4 = "Hello";
System.out.println(s3 == s4);
System.out.println(s3.equals(s4));
}
}
结果:
4. String类的方法整理。
Length():
返回此字符串的长度。长度是等于Unicode代码单元中的字符串的数目。
使用:
import java.lang.*;
public class StringDemo {
public static void main(String[] args) {
String str = "tutorials point";
System.out.println("length of string = " + str.length());
str = "";
System.out.println("length of string = " + str.length());
}
}
结果:
length of string = 15
length of string = 0
charAt():
此方法返回位于字符串的指定索引处的字符。该字符串的索引从零开始。
例子:
getChars:
import java.lang.*;
public class Test {
public static void main(String args[]){
String s = "Strings are immutable";
char result = s.charAt(8);
System.out.println(result);
}
}
结果:返回a。
replace():
方法返回一个新的字符串替换此字符串中出现的所有oldChar与newChar.
例子:
import java.lang.*;
public class StringDemo {
public static void main(String[] args) {
String str = "aacdeaa";
System.out.println("string = " + str);
String replaceStr = str.replace('a', 'b');
System.out.println("new string = " + replaceStr);
}
}
结果:string = aacdeaa
new string = bbcdebb
toUpperCase():
此方法返回转换为大写的字符串。
例子:
import java.lang.*;
public class StringDemo {
public static void main(String[] args) {
String str1 = "aaabbbccc";
System.out.println("string value = " + str1.toUpperCase());
}
}
结果:AAABBBCCC
toLowerCase():
此方法返回转换为小写的字符串。
例子:
import java.lang.*;
public class StringDemo {
public static void main(String[] args) {
String str1 = "AAABBBCCC";
System.out.println("string value = " + str1.toLowerCase());
}
}
结果:aaabbbccc
trim():
去掉字符串首尾的空格。
例子:
import java.lang.*;
public class Test{
public static void main(String arg[]){
String a = " hello world ";
String b = "hello world";
System.out.println(b.equals(a));
System.out.println(a);
a=a.trim();
System.out.println(a.equals(b));
System.out.println(a);
System.out.println(b);
}
}
结果:false
true
hello world
hello world
hello world
toCharArray():
把这个字符串转换成一个新的字符数组.
例子:
import java.lang.*;
public class StringDemo {
public static void main(String[] args) {
String str = " Java was developed by James Gosling";
char retval[] = str.toCharArray();
System.out.println("Converted value to character array = ");
System.out.println(retval);
}
}
结果:
Converted value to character array =
Java was developed by James Gosling
5.模仿String类连续调用。
public class Test{
public static void main(String args[]){
MyCounter counter1 = new MyCounter(1);
MyCounter counter2 = new MyCounter();
counter2 = counter1.increase(100).decrease(2).increase(3);
System.out.println(counter2.i);
}
}
class MyCounter{
public int i;
MyCounter(){}
MyCounter(int n){
this.i = n;
}
public MyCounter increase(int n){
MyCounter a = new MyCounter();
a.i = i + n;
return a;
}
public MyCounter decrease(int n){
MyCounter a = new MyCounter();
a.i = i - n;
return a;
}
}
结果:102
java课后实验性问题5的更多相关文章
- java课后实验性问题4
课后作业一: 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象? 设计思路:定义类的构造函数时使静态变量i进行i++,即每构 ...
- java课后实验性问题2
课后作业一:计算组合数 程序设计思想: 从键盘获取组合数,判断是否构成组合数.分别用三种方法计算组合数输出. 程序流程图: import java.util.Scanner; public class ...
- java课后实验性问题7
1.异常处理 import javax.swing.*; class AboutException { public static void main(String[] a) { int i = 1, ...
- java课后实验性问题6
1.继承条件下的构造方法调用. class Grandparent { public Grandparent(){ System.out.println("GrandParent Creat ...
- java课后实验性问题3
一 .生成随机数 import java.util.*; public class Test1 { public static void main(String[] args) { //建立一个生产随 ...
- java课后实验性问题1
一.一个java类文件中只能有一个公有类吗? 测试代码 public class Test{ public static void main(String[] args){ } public clas ...
- JAVA 数组作业——动手动脑以及课后实验性问题
JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // ...
- JAVA语法基础作业——动手动脑以及课后实验性问题 (八)
一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...
- JAVA 多态和异常处理作业——动手动脑以及课后实验性问题
1. 阅读以下代码(CatchWho.java),写出程序运行结果: 1) 源代码 public class CatchWho { public static void main(String[] ...
随机推荐
- [书籍翻译] 《JavaScript并发编程》第四章 使用Generators实现惰性计算
本文是我翻译<JavaScript Concurrency>书籍的第四章 使用Generators实现惰性计算,该书主要以Promises.Generator.Web workers等技术 ...
- angular轮播图
还是直接上代码比较好 <!doctype html><html lang="en"><head> <meta charset=" ...
- redis集群1
redis-trib.rb命令详解 redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准 ...
- Django应用之content type(app应用之一django.contrib.contenttypes)
当一张表作为多个表的FK(主键),并且只能选择其中一个或者几个时,就可以使用content_type表:例如下图的数据关系,因此就可以使用content_type表来将表与表中的对象进行关联,从而做到 ...
- 队列(queue)和堆栈(stack)的学习
队列 1 . 先进先出 .队列尾进行插入,队列头进行删除,获取,修改. -----first come ,first served . --first in .first out ...
- Paper Reading:HyperNet
论文:HyperNet: Towards Accurate Region Proposal Generation and Joint Object Detection 发表时间:2016 发表作者:( ...
- golang 2 ways to delete an element from a slice
2 ways to delete an element from a slice yourbasic.org/golang Fast version (changes order) a := []st ...
- Struts2入门2
五.Struts2的工作原理及文件结构 Struts2过滤与自己相关的请求,比如.action后缀的请求,Struts2会进行过滤和处理,但如果是.html或者.jsp,Struts2不会对其进行处理 ...
- hexo主题next 7.X版本配置美化
我们主要对next主题进行了如下配置操作.效果可以前往https://www.ipyker.com 查看. 也可以前往https://github.com/ipyker/hexo-next-theme ...
- System.Web.HttpRequestValidationException: 从客户端(name="<a href=''>我是晓菜鸟</a>")中检测到有潜在危险的 Request.Form 值
这是一个比较常见的问题了,如果Web表单中有输入类似于 Html 标签之类的文本,在通过 Request.QueryString 或者 Request.Form 传递这些值的时候,就会触发这样的异常, ...