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. Java应用程序访问网络资源--HttpClient

    HttpClient的最本质的功能是执行HTTP方法.一个HTTP方法的执行涉及到一个或几个HTTP请求/ HTTP响应的交流,通常由HttpClient的内部处理.用户预计将提供一个请求对象来执行和 ...

  2. 1、基于MFC的OpenGL程序

    首先,使用的库是GLUT以及GLAUX,先下载两者,添加查找路径以及链接   一.单文本文件   工程openGLMFC 1.创建单文本文件   2.添加路径.链接 方法如之前篇章所示, 链接库为op ...

  3. [C#基础知识] ReadOnly关键字修饰的变量可以修改,只是不能重新分配

    转自:http://www.cnblogs.com/sujiantao/archive/2011/12/19/2289357.html MSDN 官方的解释 readonly 关键字是可以在字段上使用 ...

  4. go语言环境搭建+sublime text3(windows环境下)

    感觉有点坑,整了一下午~搞定 go语言环境搭建+sublime text3(windows环境下) 1.安装sublime text3 2.安装go语言程序包 3.测试go语言是否安装成功     键 ...

  5. JavaBean,POJO,VO,DTO的区别和联系

    JavaBeans A JavaBean is a class that follows the JavaBeans conventions as defined by Sun. Wikipedia ...

  6. maven出现 -Dmaven.multiModuleProjectDirectory system propery错误

    1.使用myeclipse10整合maven插件时出现错误: -Dmaven.multiModuleProjectDirectory system propery is not set. Check ...

  7. MC的分布式算法的实现和一些总结

    首先我们知道Memcached是一个分布式的缓存系统,但memcached并不像是mongodb那样,允许配置多个节点,且节点之间是自动分配数据的 也就是说memcached节点之间,是互不相通信的, ...

  8. Python: 字典的基本操作

    字典是Python里唯一的映射类型.字典是可变的.无序的.大小可变的键值映射,有时候也称为散列表或关联数组. 例子在下面: dic = {"apple":2, "oran ...

  9. [Xilinx]Modelsim独立仿真Vivado生成的PLL核

    EDA Tools: 1.Vivado 2015.1(64-bit) 2.Modelsim SE-64 10.1c Time: 2016.05.26 ------------------------- ...

  10. rpm封装包,只用于记录自己过程,不适合初学者看,请看参考链接

    参考http://www.worldhello.net/2011/04/02/2405.html http://www.ibm.com/developerworks/cn/linux/manageme ...