动手动脑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的主要内容,如果未能解决你的问题,请参考以下文章