字符串相关问题

1.请运行以下示例代码StringPool.java,查看其输出结果。如何解释这样的输出结果?从中你能总结出什么?

1)输出结果

     

(2)解释

    String不是基本数据类型,而是一个类,所以在比较他们的对象时比较的是地址。

而且若是两个对象的内容相同,他们的地址也会相同。所以s0s1s2相等。而最后两个是因为他们两个位于不同的储存空间中,所以不相等。

2.

为什么会有上述的输出结果?从中你又能总结出什么?

给字串变量赋值意味着:两个变量(s1s2)现在引用同一个字符串对象“a”!

String对象的内容是只读的,使用“+”修改s1变量的值,实际上是得到了一个新的字符串对象,其内容为“ab”,它与原先s1所引用的对象”a”无关,所以,s1==s2返回false

代码中的“ab”字符串是一个常量,它所引用的字符串与s1所引用的“ab”对象无关。

3.请查看String.equals()方法的实现代码,注意学习其实现方法。

如图所示为String.equals的实现代码,此代码先通过比较地址,再通过比较内容来实现字符串内容的比较。

4.古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:

 

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

1)设计思想

     通过对输入的字符串进行每个字符的提取,然后分别对每个字符进行加密。

2)程序流程图

(3)源代码

//信1605-3 20163677 多文佳
class
jiami2 { String s; public jiami2(String s) { this.s=s; //通过构造函数来初始化需要加密或解密的字符串 } public void jiami1() { char m; for(int i=0;i<s.length();i++) { m=s.charAt(i); m=(char)(m+3); if(m==91) { m='A'; } else if(m==92) { m='B'; } else if(m==93) { m='C'; } System.out.print(m); } System.out.println(); } //通过循环依次对每个字符加密并输出 public void jiemi() { char m; for(int i=0;i<s.length();i++) { m=s.charAt(i); m=(char)(m-3); if(m==64) { m='Z'; } else if(m==63) { m='Y'; } else if(m==62) { m='X'; } System.out.print(m); } System.out.println(); //通过循环依次对每个字符解密并输出 } public static void main() { } } public class jiami{ public static void main(String args[]) { jiami2 a=new jiami2("AJIDHRUIHUS"); System.out.print("加密后为:"); a.jiami1(); //调用加密函数 System.out.print("解密后为:"); a.jiemi(); //调用解密函数 } }

4)结果截图

 

5.整理String类的Length()charAt()、 getChars()replace()、 toUpperCase()、 toLowerCase()trim()toCharArray()使用说明

Length()是用来计算字符串的长度

charAt()是用来取字符串的第几个字符

getChars()是用来获取从指定位置起的子串复制到字符数组中(它有四个参数,在示例中有介绍)

replace()子串替换

toUpperCase()、 toLowerCase()大小写转换

trim()去除头尾空格

toCharArray()将字符串对象转换为字符数组

原文地址:https://www.cnblogs.com/duowenjia/p/7743492.html