• JAVA String作业——动手动脑以及课后实验性问题


    一:如何解释这样的输出结果?从中你能总结出什么?1、源码

    //mao2015.10.20

    //==的两个分辨

    //对原始数据而言

    //对引用类型变量

    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

    //S0 S1 S2 实际上是用的同一个对象 ,都指向Hello这个常量,都是用的Hello这个地址

    //new 创建内存空间 一旦创建即是几份的

     */

    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

    /*给字串变量赋值意味着:两个变量(s1s2)现在引用同一个字符串对象“a”

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

    代码中的ab”字符串是一个常量,它所引用的字符串与s1所引用的ab”对象无关。

    String.equals()方法可以比较两个字符串的内容。*/

        

    }

    }

    2、截图

    3、结论

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

    S0 S1 S2 实际上是用的同一个对象 ,都指向Hello这个常量,都是用的Hello这个地址。

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

    String.equals(Object anObject) 

              将此字符串与指定的对象比较。

    比如s1.equals(s2)  即比较s1s2的内容

    三、String

    String类的方法可以连续调用:String str="abc";String result=str.trim().toUpperCase().concat("defg");//去首尾空格,全变大写,去连接符1、源代码

    //mao2015.10.23

    //string的连续调用

    public class StringConstant {

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    String str = "abc";

    String result = str.trim().toUpperCase().concat("defg");

    System.out.println(result);

    }

    }

    2、运行结果

    (请阅读JDKString类上述方法的源码,模仿其编程方式,编写一个MyCounter类,它的方法也支持上述的“级联”调用特性,其调用示例为:MyCounter counter1=new MyCounter(1);MyCounter counter2=counter1.increase(100).decrease(2).increase(3);…)

    四、字串加密(请编写一个程序,使用上述算法加密或解密用户输入的英文字串。)

    1、源代码

    //mao2015.10.23

    //字串加密

    public class Secret {

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    String s1 = "fdsajfjj";

    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.println(b[i]);

    }

    }

    2、运行结果截图

     

  • 相关阅读:
    游戏编程模式--原型模式
    游戏编程模式--观察者模式
    游戏编程模式--享元模式
    游戏编程模式--命令模式
    mybatis的线程安全
    开发遇到的问题
    spring的ThreadLocal解决线程安全
    i++
    jvm内存初步了解
    注解@RequestMapping,@RequestBody
  • 原文地址:https://www.cnblogs.com/justmaomao/p/4907596.html
Copyright © 2020-2023  润新知