动手动脑4

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动手动脑4相关的知识,希望对你有一定的参考价值。

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

技术分享

s0==s1是因为两者公用同一个Hello地址,

s0==s2是因为"He"+"llo"与“Hello”为同一个地址,

(new String("Hello")!=new String("Hello")是因为第二的是新new的地址不同。

 2.为什么会有以下的输出结果?

技术分享

S1和s2引用同一个字符串对象“a”,在修改之前s1与s2是同一个对象输出结果为true。

 

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

 

“ab”字符串是一个常量,引用的字符串与s1所引用的“ab”对象无关,所以为false。

String.equals()方法可以比较两个字符串的内容。内容都为ab,返回值为true。

 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;

   }

String.equals()比较的室地址,通一个对象的引用,为true不是同一个对象,则比较字符,相等则true。

 4.

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

 

在Java语言中String类有很多以处理函数,例如length()、charAt()、getChars()、replace()、toUpperCase()、toLowerCase()、trim()、toCharArray()等,用法如下:

 1 string.length()是用来求字符串的长度,返回值为字符串的长度。

 2 string.charAt()为取该字符串某个位置的字符,从0开始,例如string.charAt(0)就会返回该字符串的第一个字符。

 3   string.getChars()为将这个字符串中的字符复制到目标字符数组。

 4   string.replace()为将原string 中的元素或子串替换。返回替换后的string。

 5 string.toUpperCase()为将字符串string中字符变为大写。

 6 string.toLowerCase()为将字符串string中字符变为小写。

 7 string.trim()为去除字符串的头为空格。

 8 string.toCharArray()为将字符串转换为字符数组。

public class Example

    {
    public static void main(String args[])
    {
        String s1=new String("you are a student");
        String s2=new String("HOW ARE YOU");
        String s3=new String("  Hello  ");

        //string.length()求长度
        System.out.println("length of string is:"+s1.length());
        
        //string.charAt()取指定位置字符
        System.out.println("the first char of string::"+s1.charAt(0));
        
        //string.getChars()为将这个字符串中的字符复制到目标字符数组。
        char[] c = new char[s1.length()];
        s1.getChars(0, s1.length(), c, 0);
        System.out.print("输出数组:");
        for(int i=0;i<s1.length()-1; i++)
        {
            System.out.print(" "+c[i]);
        }
        
        //string.replace()为将原string 中的元素或子串替换。返回替换后的string。
        System.out.println("\\ns1替换为s2后是:"+s1.replace(s1, s2));
        
        //string.toUpperCase()为将字符串string中字符变为大写。
        System.out.println("s1变为大写后为:"+s1.toUpperCase());
        
        //string.toLowerCase()为将字符串string中字符变为小写。
        System.out.println("s2变为小写后为:"+s2.toLowerCase());
        
        //string.trim()为去除字符串的头为空格。
        System.out.println("s1变为大写后为:"+s3.trim());
        
        //string.toCharArray()为将字符串转换为字符数组
        char a[]=s1.toCharArray();
        System.out.println("转换为数组a后a[1]= "+a[1]);

    }


}
5.古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报: 请编写一个程序,使用上述算法加密或解密用户输入的英文字串。

技术分享

代码:

import java.util.Scanner;
public class GAO {

public static void main(String[] args) {
// TODO 自动生成的方法存根
@SuppressWarnings("resource")
Scanner scan=new Scanner(System.in);
System.out.println("需要加密的字串是:");
String str;
str=scan.nextLine();//nextLine函数接受数据
int length;
length=str.length();
String str1=new String();
String str2=new String();
String str3=new String();
char chuan;
char jia,jie;
for(int i=0;i<length;i++)
{
str1=str.substring(i,i+1);
chuan=str1.charAt(0);
jia=(char)(chuan+3);
jie=(char)(chuan-3);
str2=jia+str2;
str3=jie+str3;
}
System.out.println("加密后的字串为:"+str2);
System.out.println("解密后的字串为:"+str3);

}

}

 


 

































以上是关于动手动脑4的主要内容,如果未能解决你的问题,请参考以下文章

动手动脑4

动手动脑4

动手动脑4

课件中动手动脑4

动手动脑-4

java课堂_动手动脑4