一:
1.在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0,s1,s2实际上引用的是同一个对象。
2.编译器在编译s2一句时,会去掉“+”号,直接把两个字串连接起来得一个字串(“Hello”)。这种优化工作由Java编译器自动完成。
3.当直接使用new关键字创建字符串对象时,虽然值一致(都是“Hello”),但仍然是两个独立的对象。
二:
1. 两个对象引用同一个字符串
2. 在执行s1+=”b”操作时是实际上是得到了一个新的字符串对象,其内容为“ab”; ,它与原先s1所引用的对象”a”无关,所以,s1==s2返回false;
3. 它与原先s1所引用的对象”a”无关,所以,s1==s2返回false;
4. 代码中的“ab”字符串是一个常量,它所引用的字符串与s1所引用的“ab”对象无关。
5. String.equals()方法可以比较两个字符串的内容。
三:String.equals()
String类中的equals方法是对父类Object类中的equals方法的覆盖
Object对象的equals()方法来比较,String对象继承自Object,并且对equals()方法进行了重写。两个String对象通过equals()方法来进行比较时,其实就是对String对象所封装的字符串内容进行比较,也就是说如果两个String对象所封装的字符串内容相同(包括大小写相同),则equals()方法将返回true。
String类的Length()
1. 返回字符串的长度,即字符的总个数。
2. 数组.length就是取得数组的长度。
charAt()
1. 字符串中第一个字符的下标是 0。如果参数 index 不在 0 与 string.length 之间,该方法将返回一个空字符串。
getChars()
1. 语法
Public void getChars (int scrBegin,int scrEnd,char[] dst,int dstBegin)
scrBegin 字符串中要复制的第一个字符的索引。
scrend 字符串中要复制的最后一个字符的索引。
dst 目标数组.
dstBegi目标数组中的起始偏移两量
replace()
1. replace() 方法通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串。
2. 语法public String replace(char oldChar,char newChar)
toUpperCase()
1. toUpperCase() 方法用于把字符串转换为大写。
一个新的字符串,在其中 stringObject 的所有小写字符全部被转换为了大写字符
stringObject.toUpperCase()
toLowerCase()
1.
toUpperCase() 方法用于把字符串转换为小写。
trim()
1. 去掉字符串首尾的空格。
2. 示例
public static void main(String arg[]){
String a=" hello world ";
String b="hello world";
System.out.println(b.equals(a));
a=a.trim();//去掉字符串首尾的空格
System.out.println(a.equals(b));
}
toCharArray()
1. 方法把这个字符串转换成一个新的字符数组.
2. 该方法返回一个新分配的字符数组,该数组的长度是此字符串的长度,其内容被初始化为包含这个字符串所表示的字符序列。
四
设计思想:
1. 将字符串转为字符数组
2. 对字符数组进行加密
3. 字符数组经过加密再转入字符串
4. 输入新的字符串与加密后的字符串进行对比
程序设计流程图:
实现代码:
package test;
import java.util.Scanner;
public class Key {
public static void main(String[] args)
{
String A;//原字符串,经过加密再转为加密后的字符串
String B;//输入的解码后的字符串
int L;//存储字符串的长度
int key;
char a[];
Scanner str=new Scanner(System.in);
System.out.println("请输入初始字符串密码:");
A=str.nextLine();
L=A.length();
a=A.toCharArray();//将字符串转入数组
System.out.println("字符串已经转入字符数组");
System.out.println("请输入密钥:");
key=str.nextInt();
for(int i=0;i<=A.length()-1;i++)
{
a[i]=(char) (a[i]+key);
}
A=String.valueOf(a);//将加密后的字符数组转入字符串
System.out.println("字符串已经加密");
Scanner str1=new Scanner(System.in);
System.out.println("现输入密码:");
B=str1.nextLine();
System.out.println("密码比对结果为:");
if(B.equals(A))
{
System.out.println("匹配成功,密码正确");
}
else
{
System.out.println("匹配失败,密码错误:");
}
}
}
测试截图: