1.查看其输出结果。如何解释这样的输出结果?从中你能总结出什么?

 

java中ture和false的值 java true_bc

运行结果

true

true

false

原因

)在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0,s1,s2实际上引用的是同一个对象。

)编译器在编译s2一句时,会去掉“+”号,直接把两个字串连接起来得一个字串(“Hello”)。这种优化工作由Java编译器自动完成。

)当直接使用new关键字创建字符串对象时,虽然值一致(都是“Hello”),但仍然是两个独立的对象。

 

java中ture和false的值 java true_bc_02

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

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

)String对象的内容是只读的,使用“+”修改s1变量的值,实际上是得到了一个新的字符串对象,其内容为“ab”,它与原先s1所引用的对象”a”无关,所以,s1==s2返回false;
)代码中的“ab”字符串是一个常量,它所引用的字符串与s1所引用的“ab”对象无关。
)String.equals()方法可以比较两个字符串的内容。

2.请查看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;
}

 

3.String类中函数的使用方法

1.length()
作用:获取字符串的长度
  String a=”abc”;
  Int b=a.length();
2.charAt()
作用:获取指定位置的字符
  String a=”abc”;
  Char b=a.charAt(3);
3.getChars()
作用:获取从指定位置起的子串复制到字符数组中
  String s1=”abc”;
  Char s2=new char[5];

将s1中的下标为0,1,2的字符复制到s2中从0开始的位置

4.Replace()

作用:子串替换
  String s1=”abcd”,s2;
  S2=s1.replace(“ab”,”12”);
5.toUpperCase()
作用:大写转换
  String s1=”abc”;
  s1.toUpperCase()=ABC  
6.toLowerCase()
作用:小写转换
  String s1=”ABC”;
  s1.toLowerCase()=abc
7.Trim()
作用:去除头尾空格
  String s1=”   abcd”;
  s1=s1.tirm();
  s1=”abcd”
8.toCharArray()
作用:将字符串对象转换为字符数组
  String s1=”abcd”;
  Char [] s2=s1.toCharArray();

 

4.字符串加密

设计思想

首先使用Scanner类输入一个字符串;

用charAt类将字符串中的一个个字符取出来;

将每个字符加上3,再强制转换成char类型,并将字符赋值到定义的char类型的数组里;

判断字符是否是想,x,y,z,如果是则加上3后再减去26;

最后将定义的char类型的数组内容输出;

流程图

java中ture和false的值 java true_java中ture和false的值_03


源代码

import java.util.Scanner;
public class Jiami {
        public static void main(String[] args){
                 String s1="";
请输入一个字符串");
                 Scanner sc=new Scanner(System.in);
                 s1=sc.next();
                 sc.close();
                 char[] s2=new char[s1.length()];
                 for(int i=0;i<s1.length();i++)
               {
                     s2[i]=(char) (s1.charAt(i)+3);
                     if(s1.charAt(i)>='x'&&s1.charAt(i)<='z'||s1.charAt(i)>='X'&&s1.charAt(i)<='Z')
                    s2[i]=(char) (s1.charAt(i)+3-26);
                }
加密后的字符串为:");
                for(int i=0;i<s1.length();i++)
                    System.out.print(s2[i]+" ");
       }
}

截图

java中ture和false的值 java true_java_04