• String作业


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

    答:在Java中内容相同的只保存在一个字节中因此s0,s1,s2是指的相同对象,在判断相等时结果为true,但是当新开辟空间建立新对象时比较的是两个对象,对象不能直接判等,则不相等。

    2.

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

    答:在第一句判断s1=s2时由于赋值语句s2=s1则结果为true;执行s1+=b后s1与s2不再相等,则第二句判断结果为false;第三句中虽然s1中的内容为ab但是字符串ab是一个常量它所引用的字符串ab与s1对象无关,因此判断结果为false;第四句中由于s1内容为ab则利用函数可以判断得到与字符串ab相等,则结果为true。

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

    String.equals()实现代码:

    public boolean equals(Object anObject)
    {
          //如果是同一个对象
           if (this == anObject)
           {
               return true;
           }
           //如果传递进来的参数是String类的实例
           if (anObject instanceof String)
           {
               String anotherString = (String)anObject;
               int n = count;//字符串长度
               if (n == anotherString.count) //如果长度相等就进行比较
               {
                   char v1[] = value;//取每一个位置的字符
                   char v2[] = anotherString.value;
                   int i = offset;
                   int j = anotherString.offset;
                   while (n-- != 0) //对于每一位置逐一比较
                   {
                       if (v1[i++] != v2[j++])
                           return false;
                    }
                   return true;
               }
           }
           return false;
    }

    程序代码是先判断是否为同一个对象,如果是则结果直接为true,若不是则判断其长度是否相等,然后定义字符数组判断数组中是否两个对象的每一个字符相等。

    动手动脑:

    • 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);

    package test;

     

    public class MyCounter {

        int counter=0;

        public MyCounter(int i) {

            counter=i;

        }

        public  MyCounter increase(int add) {

            counter=counter+add;

            return this;

        }

        public MyCounter decrease(int minus) {

            counter=counter-minus;

            return this;

        }

        public static void main(String[] args) {

            MyCounter counter1=new MyCounter(1);

            MyCounter counter2=counter1.increase(100).decrease(2).increase(3);

            System.out.println("计算结果为:"+counter2.counter);

        }

    }

    动手动脑二:

    String.equals()方法、整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用说明、阅读笔记。

    String.equals()方法使用时直接在两个对象比较即可,如A.equals(B);

    String类方法应用:

    Length():这个函数是用来计算字符串长度的;使用时创建对象,然后对象直接调用Length()即可;如:

    public int length()

             String s=”asfsdfwfsadf”;

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

    结果:12

     

    charAt():这个函数是用来提取字符串中的字符,将字符的位置作为参数利用函数便可以提取中字符;如:

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

            String s=”Hello”;

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

    结果:l

     

    getChars():该函数的功能是将字符串中的几个连续字符复制到数组当中;括号内应有4个参数

    四个参数的含义

       //1.被拷贝字符在字串中的起始位置

       //2.被拷贝的最后一个字符在字串中的下标再加1

       //3.目标字符数组

       //4.拷贝的字符放在字符数组中的起始下标

      然后用字符串对象直接调用即可。

    replace():该函数功能为替换字符串,如

    public int replace()

            String s=”\”;

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

    结果///;

    toUpperCase():该函数功能为将字符串中的字符全部换为大写;如public String toUpperCase()

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

    toLowerCase():该函数功能为将字符串中的字符全部换为小写;如:

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

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

    trim():该函数功能为去除两边的空格;如:

    public String trim()

             String x=”ax  c”;

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

     

    toCharArraay():该函数功能为将字符串中的一个字符转化成一个字符串数组;如:

    String x=”abcd”;

               char myChar[]=x.toCharArray();

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

    结果:b

    课后作业1

    • 古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:

    请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想、程序流程图、源代码、结果截图。

    程序设计思想:

    编写两个函数解密和加密,根据规则进行字母的转换,并输出。在主函数中输入是要加密还是解密然后分别调用不同的函数。

    程序流程图:

     
     

    源代码:

    package test;

    import java.util.*;

    public class Code {

       String str;

       static Scanner sc=new Scanner(System.in);

    void jiami()

    {

       str=sc.next();

       int length=str.length();

       char c[]=str.toCharArray();

       for(int i=0;i<length;i++)

       {

          if(c[i]>='A'&&c[i]<='W'||c[i]>='a'&&c[i]<='w')

             c[i]=(char) (c[i]+3);

          else if(c[i]>='X'&&c[i]<='Z'||c[i]>='x'&&c[i]<='z')

             c[i]=(char)(c[i]-23);

            

       }

       System.out.println("加密后为:");

       for(int i=0;i<length;i++)

          System.out.print(c[i]);

    }

    void jiemi()

    {

       str=sc.next();

       char a[]=str.toCharArray();

       int length=str.length();

       for(int i=0;i<length;i++)

       {

          if(a[i]>='d'&&a[i]<='z'||a[i]>='D'&&a[i]<='Z')

             a[i]=(char)(a[i]-3);

          else if(a[i]>='a'&&a[i]<='c'||a[i]>='A'&&a[i]<='Z')

             a[i]=(char)(a[i]+23);

       }

       System.out.println("解密后为:");

       for(int i=0;i<length;i++)

       {

          System.out.print(a[i]);

       }

    }

       public static void main(String[] args) {

          // TODO 自动生成的方法存根

          Code code=new Code();

          System.out.println("请输入您是要加密还是解密:1加密;2解密");

          int n=sc.nextInt();

          if(n==1)

             code.jiami();

          else if(n==2)

             code.jiemi();

     

       }

     

    }

     验证结果截图:

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Cocos2d-x 3.2编译生成Android程序出错Error running command, return code: 2的解决方法
    利用Theme自定义Activity进入退出动画
    Activity的四种launchMode
    android中设置控件获得焦点
    android 反编译 for mac
    android中libs目录下armeabi和armeabi-v7a的区别
    解决Sublime Text 3中文显示乱码(tab中文方块)问题,sublime tab乱码
    mysql教程
    Failed to load c++ bson extension, using pure JS version
    mongodb导出数据
  • 原文地址:https://www.cnblogs.com/zzh2019979439/p/7739394.html
Copyright © 2020-2023  润新知