1>String类型判等

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

 package StringPool;
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 }
}

运行结果:

实验分析:

1、在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0,s1,s2实际上引用的是同一个对象,所以判断值为true。

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

3、判断两个对象是否一致是判断两对象的内容和地址是否一致。

(2)再看……为什么会有上述的输出结果?从中你又能总结出什么?

 public class Text1 {

     public static void main(String args[])
{ String s1="a";
String s2=s1;
System.out.println(s1==s2);
s1+="b";
System.out.println(s1==s2);
System.out.println(s1=="ab");
System.out.println(s1.equals("ab"));
}
}

实验结果:

实验分析:

1、由于s2 = s1,所以两者引用的是同一个对象,所以s1==s2判断值为true。

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

3、而“ab”字符串是一个常量,常量有单独的存储空间,它所引用的字符串与 s1 所引用的 “ab” 对象无关,所以判断值为 false。

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

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

public class StringEquals {

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

    }
}

实验结果:

实验分析:

1、直接使用new关键字创建字符串对象时(s1和s2),虽然值一致(都是“Hello”),但仍然是两个独立的对象,所以用“==”判断时判断值为false。

2、String.equals()用于判断值是否相等,值都为“hello”,所以判断值为true。

3>字串加密

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

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

设计思想:加密即是将输入字符串的每个字符向后移三个位置A-W对应的ACCII码加3,X-Z减23,但要注意强制转化为char类型;解密类似,D-Z对应的ACCII码减3,A-C加23。

程序流程图:

源代码:

 import java.util.*;
//20153220 曹婷婷 2016.10.28
public class JiaMi {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入要进行的操作:1、加密 2、解密");
int m = in.nextInt();
String result = "";
if(m == 1)
{
System.out.println("请输入要加密的字符串(大写字母)");
String str = in.next();
for(int i =0;i<str.length();i++)
{
if(str.charAt(i)>= 65 &&str.charAt(i)<=87 )
{result += (char)(str.charAt(i) + 3);}
else if(str.charAt(i)>= 87 &&str.charAt(i)<=90 )
{result += (char)(str.charAt(i) - 23);}
else
{
System.out.println("输入错误!");
break;
}
}
System.out.println("加密后字符串为"+result);
}
else if(m == 2)
{
System.out.println("请输入要解密的字符串(大写字母)");
String string = in.next();
for(int i =0;i<string.length();i++)
{
if(string.charAt(i)>= 68 &&string.charAt(i)<=90 )
{result += (char)(string.charAt(i) - 3);}
else if(string.charAt(i)>= 65 &&string.charAt(i)<=67 )
{result += (char)(string.charAt(i) + 23);}
else
{
System.out.println("输入错误!");
break;
}
}
System.out.println("解密后字符串为"+result);
}
else
{
System.out.println("输入错误!");
}
}
}

结果截图:

4>整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用说明

Length():获取字符串长度

charAt():获取指定位置的字符

getChars():获取从指定位置起的子串复制到字符数组中,四个参数:

  1. 第一个参数指出了字符串截取所开始的位置;
  2. 第二个参数指出了字符串截取所结束的位置;
  3. 第三个参数指出目标(即接收)字符数组;
  4. 第四个参数指出目标字符数据接收的开始下标。

replace():子串替换

     replace(char oldChar, char newChar)
     返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。

toUpperCase()、 toLowerCase():大小写转换

trim():去除头尾空格

toCharArray():将字符串对象转换为字符数组

Java(String)的更多相关文章

  1. Jsp获取Java的重定向赋值(String)

    Jsp获取Java的重定向赋值(String) Java代码片段: //传递String request.setAttribute("msg", msg); //重定向 reque ...

  2. Java基础-字符串(String)常用方法

    Java基础-字符串(String)常用方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.java的API概念 Java的API(API:Application(应用) Pr ...

  3. java中String.valueOf(obj)、(String)obj与obj.toString()有什么区别

    方法1:采用 Object.toString()方法 在这种使用方法中,因为java.lang.Object类里已有public方法.toString(),所以对任何严格意义上的java对象都可以调用 ...

  4. appium+java(五)微信小程序自动化测试实践

    前言: 上一篇<appium+java(四)微信公众号自动化测试实践>中,尝试使用appium实现微信公众号自动化测试,接着尝试小程序自动化,以学院小程序为例 准备工作 1.java-cl ...

  5. Java(静态)变量、(静态)代码块、构造方法的执行顺序

    Java(静态)变量.(静态)代码块.构造方法的执行顺序 总结 1.父类静态变量和静态代码块(先声明的先执行); 2.子类静态变量和静态代码块(先声明的先执行); 3.父类的变量和代码块(先声明的先执 ...

  6. Kotlin——初级篇(八):关于字符串(String)常用操作汇总

    在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了.对Kotlin中的数据类型不清楚的同学.请参考Kotlin--初级篇(三):数据类型详解这篇文章. 在 ...

  7. MongoDB和Java(6):Spring Data整合MongoDB副本集、分片集群

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  8. MongoDB和Java(5):Spring Data整合MongoDB(注解配置)

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  9. MongoDB和Java(4):Spring Data整合MongoDB(XML配置)

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

随机推荐

  1. This kind of launch is configured to open the Debug perspective when it suspends.

    This kind of launch is configured to open the Debug perspective when it suspends. 因为设置了断点才会弹出这个,不需要调 ...

  2. 代码管理——如何连接Git Server,下载代码

    最近一个项目需要与国外团队合作,而他们的代码在GitLab上,需要使用Git工具连接服务器,对于我这样一个SVN的拥护者,当然很高兴去接受这个工作了(鄙视一下目前单位还使用ClearCase). 但操 ...

  3. java学习第16天(补充可变参数)

    如果我们在写方法的时候,参数个数不明确,就应该定义可变参数. 格式: 修饰符 返回值类型 方法名(数据类型... 变量) {} 注意: A:该变量其实是一个数组名 B:如果一个方法有多个参数,并且有可 ...

  4. collection集合框架

    Java类集框架的优势:       1) 这种框架是高性能的.对基本类集(动态数组,链接表,树和散列表)的实现是高效率的.一般很少需要人工去对这些“数据引擎”编写代码.        2) 框架允许 ...

  5. virtualbox共享文件夹

    来自官方文档的答案是最好的,其他的网上解决方案都有些问题. In a Linux guest, use the following command: mount -t vboxsf [-o OPTIO ...

  6. Kafka安装

    一.下载kafka: http://kafka.apache.org/downloads 二.解压 tar -zxvf kafka_2.10-0.10.0.1.tgz 三.kafka需要用到zooke ...

  7. IDEA springMVC - hello world

    记录所学,防忘记... ide用IDEA,用maven管理依赖包 1.建立一个maven-webapp项目:File->New->Project 2.pom.xml <project ...

  8. 激活PHPStorm 2016.3

    通过互联网激活PHPStorm 2016.3: http://jetbrains.tencent.click http://172.245.22.235:1017 http://idea.imsxm. ...

  9. [jv-convert] Error 1,[all-recursive] Error 1

    g++4.6编译是报错: make profiledbootstrap /var/tmp/gcc4/gcc-4.0.1/sparc-sun-solaris2.8/gcc/gcj -B/var/tmp/ ...

  10. C#算法之判断一个字符串是否是对称字符串

    记得曾经一次面试时,面试官给我电脑,让我现场写个算法,判断一个字符串是不是对称字符串.我当时用了几分钟写了一个很简单的代码. 这里说的对称字符串是指字符串的左边和右边字符顺序相反,如"abb ...