zoukankan      html  css  js  c++  java
  • 第六周动手动脑问题

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

    Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0s1s2实际上引用的是同一个对象。编译器在编译s2一句时,会去掉“+”号,直接把两个字串连接起来得一个字串(“Hello”)。这种优化工作由Java编译器自动完成。当直接使用new关键字创建字符串对象时,虽然值一致(都是“Hello”),但仍然是两个独立的对象。

     

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

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

    使用equals()equalsIgnoreCase()方法比较两字串内容是否相同,使用==比较两字串变量是否引用同一字串对象。compareTo:使用字典法进行比较,返回0表两字串相等,小于返回负值,大于返回正值。egionMatches:比较两字串中的某一部分是否相等

     

    结果:

     

    字符串查找方法:

    查询字串是否以某字串开头和结尾:startsWithendWith方法

    在字串查找字符或子串,调用indexOflastIndexOf方法即可。

    请阅读JDK中String类上述方法的源码,模仿其编程方式,编写一个MyCounter类,它的方法也支持上述的“级联”调用特性,其调用示例为:

    MyCounter counter1=new MyCounter(1);

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

    public class MyCounter {

    private int c;

    public int getC() {

    return c;

    }

    public void setC(int c) {

    this.c = c;

    }

    MyCounter(int c)

    {

    this.c = c;

    }

    public static void main(String[] args) {

    MyCounter counter1=new MyCounter(1);

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

    System.out.println(counter2.c);

    }

    public MyCounter increase(int c)

    {

    this.c=this.c+c;

    return this;

    }

    public MyCounter decrease(int c)

    {

    this.c=this.c-c;

    return this;

    }

    }

    结果:

     

    java中length()用来获取String字符串的长度

    public class TestS {
    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    int a;
    char[] b,d;
    char c;
    String e,f,g,h;

    String s="abcde";
    a=s.length();//获取字符串长度
    b=s.toCharArray();//换成字符数组
    c=s.charAt(1);//获取特定位置的字符
    d=s.toCharArray();//换成字符数组
    s.getChars(0, 0, d, 0);
    e=s.replace("a", "e");//将a替换成e
    f=s.toUpperCase();//换成大写
    g=s.toLowerCase();//换成小写
    h=s.trim();//赋值
    System.out.println(a+" "+c+" "+e+" "+f+" "+g+" "+h);
    }
    }

  • 相关阅读:
    重要:VC DLL编程
    VC++程序员如何做好界面
    复习二叉搜索树作的几道题
    eclipse JAVA反编译
    秒,毫秒,微秒,纳秒,皮秒,飞秒
    redis实现tomcat集群session共享
    redis启用持久化
    Spring
    Spring scope
    FastJSON 使用
  • 原文地址:https://www.cnblogs.com/wj1998/p/7742914.html
Copyright © 2011-2022 走看看