一 :关于两个string类型变量是否相等:

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

分析:

首先为s0开辟空间,然后给s1开辟空间时发现与s0相同,所以s1和s0地址是相同的,,然后给s2开辟空间时发现也是相同的,要让两个变量相同,需要使他们的数值和地址都要相同,故前两个输出都是true,第三个先new一个“hello”,在new一个“hello”时就会在开辟一个空间,所以两个不相同。故是false。

结论:

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

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

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

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

代码中的“ab”字符串是一个常量,它所引用的字符串与s1所引用的“ab”对象无关。所以,s1=“ab”返回false。

String.equals()方法可以比较两个字符串的内容,他们的内容都是ab所以,返回true。

二:String.equals()方法

结果分析:当直接使用new关键字创建字符串对象时,虽然值一致(都是“Hello”),但仍然是两个独立的对象。,所以s1==s2返回false,但他们数值是一样的,所以s1.equal(s2)返回true。,s3,s4引用的同一个对象,所以数值和地址都相同,所以最后两个比较返回都是true。

三:字串加密

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

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

设计思想:加密和解密的思想就是把一个字符串中的所有字符加上或减去一个固定的值,然后在输出来。首先传入一个字符串,构造一个加密和解密的方法,输入数字判断选择加密或者解密,在写方法时,加密方法,需要定义一个char[]类型的方法,传入一个字符串,返回一个char类型的数组,调用length()对字符串中的所有的字符进行加上一个3,如果是XYZ减去23,然后返回这个char数组即可,如果是解密方法,需要定义一个char[]类型的方法,传入一个字符串,返回一个char类型的数组,调用length()对字符串中的所有的字符进行减去一个3,如果是ABC加上23,然后返回这个char数组即可。

流程图:

源代码:package Demo;

import java.util.Scanner;

public class JiaMi {

public static void main(String[]args)

{

Scanner scanner=new Scanner(System.in);

System.out.println("请输入一个字符串");

String m=scanner.next();

System.out.println("请输入你想加密还是解密,加密输入1,解密输入2");

int n=scanner.nextInt();

while(n!=1&&n!=2)

{

System.out.println("请重新输入一个字符串");

n=scanner.nextInt();

}

if(n==1)

System.out.println(jiami(m));//如果下面的方法不定义为static类型的那摩在调用下面的方法时需这样写new JiaMi().jiami().

else if(n==2)

System.out.println(jiemi(m));

}

static char[] jiami(String m)//返回是数组时,定义时加个[]。

{

char[] c=new char [m.length()];

int i=0;

while(m.length()>i)

{

if(m.charAt(i)>=88 && m.charAt(i)<=90)

c[i]=(char)(m.charAt(i)-23);

else

c[i]=(char) (m.charAt(i)+3);

i++;

}

return c;

}

static char[] jiemi(String m)

{

char[] c=new char [m.length()];

int i=0;

while(m.length()>i)

{

if(m.charAt(i)<=67 && m.charAt(i)>=65)

c[i]=(char)(m.charAt(i)+23);

else

c[i]=(char) (m.charAt(i)-3);

i++;

}

return c;

}

}

结果截图:

结果分析:第一个截图是一个普通的加密结果,第二个是带有特殊字符的(XYZ)的加密验证,XYZ需要转换成ABC ,结果正确,第三个是带有特殊字符的解密验证(ABC),ABC需要转换成XYZ。验证无误。

String类型方法的总结:

主要包括Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()

2、String类的常用方法:

(1)public char charAt(int  index)返回字符串中第index个字符

(2)public int length()返回字符串的长度

(3)public String toUpperCase()返回一个字符串为该字符串的大写形式

(4)public String toLowerCase()返回一个字符串为该字符串的小写形式

(5)public String replace(char oldChar,char newChar)在字符串中用newChar字符替换oldChar字符

(6)public String trim()返回将该字符串去掉开头和结尾空格后的字符串。

(7)char[ ] toCharArray() :将该String对象转换成char数组。

(8)getChars() 将这个字符串字符复制到目的字符数组。

转载于:https://www.cnblogs.com/qingtianxt/p/6006884.html

String类型的学习相关推荐

  1. 2019-05-21 Java学习日记之String类型Demo

    String类的构造方法: public String():空构造 public String(byte[ ] bytes):把字节数组转成字符串 public String(byte[ ] byte ...

  2. JS学习笔记(第五章)(String类型)

    1.对象创建 String类型是字符串的对象包装类型,可以像下面这样使用String构造函数来创建. var stringObject = new String("hello world&q ...

  3. Java学习(4)—— 布尔类型、基本数据类型转换、基本数据类型和String类型的转换

    布尔类型 也叫Boolean类型,boolean只允许取true和false. boolean占一个字节. 适用于逻辑运算,流程控制语句. 有默认类型,是false.但是应该声明为成员变量或是静态变量 ...

  4. Redis 学习笔记(1)—— Redis安装,String 类型测试

    1 Redis 介绍 1.1 概述 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的应用程序的完美解决方案. Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许 ...

  5. String类的学习

    String类的学习: String a="a"+"b"+"1"; String b="ab1"; a==b是对的,为什 ...

  6. C++中的string类型转换为int类型

    今天遇见了一个题,感觉这个题很常见,所以就把它写下来,下次遇见感觉不太熟练的话,继续复习一下. 这个题比较简单,很容易做出来,但是这个题主要有一个关键点,那就是类型转化,主要是我按照自己的思路来写的方 ...

  7. c++ string 字符_C/C++知识分享:C++标准库之 string 类型,各种运算全部掌握

    简介: C++标准库提供的类型:string.长度可变的字符串,操作简单 仅为包含个人常用函数 头文件 string 类型与其它的标准库类型相同,都需要包含对应的头文件 string 类型的定义和初始 ...

  8. C/C++知识分享:C++标准库之 string 类型,各种运算全部掌握

    简介: C++标准库提供的类型:string.长度可变的字符串,操作简单 仅为包含个人常用函数 头文件 string 类型与其它的标准库类型相同,都需要包含对应的头文件 string 类型的定义和初始 ...

  9. 对于String类型的深刻理解

    1."abc"与new String("abc"); 经常会问到的面试题:String s = new String("abc");创建了几 ...

最新文章

  1. 深入Java虚拟机——类型装载、连接(转)
  2. CentOS 7安装Redis服务
  3. 使用action framework 实现order change时自动发送邮件
  4. canvas绘制经典折线图(一)
  5. 微信公众号php提交表单,PHP教程:使用YII2框架实现微信公众号中表单提交功能...
  6. java mapreduce教程_Java搭建MapReduce完成二次排序步骤
  7. win7下wifi密码的保存路径
  8. window消息机制
  9. ISSCC 2017论文导读 Session 14 Deep Learning Processors,DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN
  10. win7计算机高级还原,win7怎么恢复出厂设置 win7恢复出厂设置方法【图文】
  11. 体验美容科技产品:让人不断保养和自我厌恶 | 行业
  12. JAVA基础-GUI实践总结
  13. Sicily 1484. 守望者的逃离
  14. Python---python3.7.0---如何安装PIL
  15. 图解2022年城市人口迁移趋势
  16. Git add 、commit后报错:nothing to commit, working tree clean
  17. Java反序列化(一) - Java反射机制
  18. ArcGIS环境搭建及地图服务发布
  19. 2021年慈溪横河中学高考成绩查询,喜报|2018年高考喜报频传,慈溪高考再创新辉煌...
  20. ppst 视频—— mysql 的语句的优化方法介绍

热门文章

  1. java knn kd树_KNN算法之KD树(K-dimension Tree)实现 K近邻查询
  2. MySQL笔记创建表结构_mysql笔记
  3. 学php好不,怎么学好php
  4. window系统下C语言找不到fork()函数
  5. 雷达多普勒频率计算公式_手持式雷达流速仪的监测应用方案
  6. linux mq发送测试消息,WebSphere MQ测试常用指令
  7. Oracle相关报错
  8. matlab 边界连续,matlab的边界问题
  9. 主存地址位数怎么算_两位数乘一位数也能口算?对!你没看错,不是特殊情况也行...
  10. angularjs与PHP,我应该混合AngularJS与PHP框架吗?