字符串动手动脑

it2022-05-07  3

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

public class StringPool { public static void main(String args[]) { String s0="Hello"; String s1="Hello"; String s2="He"+"llo"; System.out.println(s0==s1);//true System.out.println(s0==s2);//true System.out.println(new String("Hello")==new String("Hello"));//false } }

在java中+是连接符,编译器编译s2时会去掉+,s0,s1,s2指向同一个对象,所以出现true,而后来新创建的两个地址不同,所以false。

String s1 = "a"; String s2 = s1; System.out.println(s1==s2); //true s1+="b"; System.out.println(s1==s2);//false System.out.println(s1=="ab");//false System.out.println(s1.equals("ab"));//true

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

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

当对象不同,内容相同,"=="返回false,equals返回true

当同一对象,"=="和equals结果相同

如果值不相同,对象就不相同,所以"==" 和equals结果一样

public class StringPool { public static void main(String args[]) { String s0="Hello"; String s1="Hello"; String s2="He"+"llo"; System.out.println(s0==s1); System.out.println(s0==s2); String S3 = new String("Hello"); String S4=new String("Hello"); System.out.println(S3.equals(S4)); } }

 可用s3.equals(s4)来实现。

3.String类的方法可以连续调用: String str="abc"; String result=str.trim().toUpperCase().concat("defg"); 请阅读JDK中String类上述方法的源码,模仿其编程方式,编写一个MyCounter类,它的方法也支持上述的“级联”调用特性,其调用示例为: MyCounter counter1=new MyCounter(1); MyCounter counter2=counter1.increase(100).decrease(2).increase(3); ….

public class StringPool { public static void main(String args[]) { String str="abc"; String result=str.trim().toUpperCase().concat("defg"); System.out.println(result); } }

  

4、字串加密

import java.util.Scanner; public class Testfive { public static void main(String[]args){ System.out.println("请输入任意字串"); Scanner in=new Scanner(System.in);//读入字符串 String s1=null; s1=in.nextLine(); char a[]=new char[s1.length()]; s1.getChars(0,s1.length(),a,0);//获取从指定位置起的子串复制到字符数组中 char b[]=new char[s1.length()]; for(int i=0;i<s1.length();i++) { b[i]=(char) (a[i]+3); } for(int i=0;i<s1.length();i++) { System.out.print(b[i]); } } }

程序设计思想:

在键盘上输入任意字符串,然后先创建一个与输入字符串同等长度的数组,然后将字符串复制到此数组中,再重新创建一个同等长度的数组用来储存加密后的字符,然后把加密后的字符输出即可。

程序流程图:

 

5、整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用说明、阅读笔记发表到博客园。

1)length():public int length()//求字符串长度

String s=”abcdefg”;

         System.out.println(s.length());

charAt():public charAt(int index)//index 是字符下标,返回字符串中指定位置的字符

        String s=”Hello”;

        System.out.println(s.charAt(3));

getChars():public int getChars()//将字符从此字符串复制到目标字符数组

replace():public int replace()//替换字符串

        String s=”\\\”;

        System.out.println(s.replace(“\\\”,”///”));

        结果///;

toUpperase():public String toUpperCase()//将字符串全部转换成大写

         System.out.println(new String(“hello”).toUpperCase());

toLowerCse():public String toLowerCase()//将字符串全部转换成小写

         System.out.println(new String(“HELLO”).toLowerCase());

trim():public String trim()

         String x=”ax  c”;

         System.out.println(x.trim());//是去两边空格的方法

toCharArray(): String x=”abcd”;// 将字符串对象中的字符转换为一个字符数组

           char myChar[]=x.toCharArray();

          System.out.println(“myChar[1]”+myChar[1]);

 

转载于:https://www.cnblogs.com/1998lu/p/6005429.html


最新回复(0)