码迷,mamicode.com
首页 > 其他好文 > 详细

课堂动手动脑String

时间:2017-10-27 15:57:27      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:es2017   util   new   scanner   als   独立   内容   比较   nbsp   

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中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0,s1,s2实际上引用的是同一个对象。

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

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

 

 

技术分享

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

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

代码中的“ab”字符串是一个常量,它所引用的字符串与s1所引用的“ab”对象无关。 String.equals()方法可以比较两个字符串的内容。

 

 

public class StringEquals {
/**
     * @param args the command line arguments
     */
    public static void main(String[] args) { 
        String s1=new String("Hello");
        String s2=new String("Hello");    
        System.out.println(s1==s2);
        System.out.println(s1.equals(s2));
        String s3="Hello";
        String s4="Hello";
        System.out.println(s3==s4);
        System.out.println(s3.equals(s4));
    }
}

结果

技术分享

 

public class my {
    public static void main(String[] args) {
        MyCounter counter1=new MyCounter(1);
        MyCounter counter2=counter1.increase(100).decrease(2).increase(3);
        System.out.println(counter2.x);
    }
}

class MyCounter
{
    public int x;
    MyCounter(int a)
    {
        this.x=a;
    }
    MyCounter increase(int a)
    {
      this.x=this.x+a;
      return this;
    }
    MyCounter decrease(int a)
    {
        this.x =this.x-a;
        return this;
    }
}

结果

技术分享

 

 

五   String类的使用说明

 1、string.length() 求字符串的长度,返回值为字符串的长度。

 2、string.charAt() 取该字符串某个位置的字符,从0开始,例如string.charAt(0)就会返回该字符串的第一个字符。

 3、string.getChars() 将这个字符串中的字符复制到目标字符数组。

 4、string.replace() 将原string 中的元素或子串替换。返回替换后的string。

 5、string.toUpperCase() 将字符串string中字符变为大写。

 6、string.toLowerCase() 将字符串string中字符变为小写。

 7、string.trim() 去除字符串头的空格。

 8、string.toCharArray() 将字符串转换为字符数组。

 

六   equals方法

equals方法是属于根类Object的,**默认比较的是对象的地址值**。

在String中我们可以使用“==”比较地址值,所以再使用equals方法比较地址值意义不大,很多时候我们需要比较的是String具体的内容。

所以String类中就进行了equals方法覆写。String中覆写之后的equals方法比较的就是具体的内容是否相同。

 

 

 七

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

技术分享

 

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

设计思想:

先将用户输入的英文字串通过String类里的toCharArray()方法转换为字符数组,然后依次将数组里的元素都加上3,得出密文。需要做进一步处理的是,最后三个字母xyzXYZ加上3之后,应该再减去26。

流程图:

 

                 技术分享

 

代码:

import java.util.Scanner;
public class jiami {
    public static void main( String args[] ){
        
        System.out.println("请输入字符:");
        Scanner cs=new Scanner(System.in);
        String string =cs.nextLine();
        int n=string.length();
        char c[]=string.toCharArray();
        
        for(int i=0;i<n;i++)
        {
            c[i]=(char)(c[i]+3);
            if((c[i]>90&&c[i]<97)||c[i]>122)
            {
                c[i]=(char)(c[i]-26);
            }
        }

        System.out.println("密文:");
        String result="";
        for(int i=0;i<n;i++)
        {
            result+=c[i];
            }
        System.out.println(result);

    }

    }

 

结果 

技术分享

 

课堂动手动脑String

标签:es2017   util   new   scanner   als   独立   内容   比较   nbsp   

原文地址:http://www.cnblogs.com/whiteso/p/7735745.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!