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

答:在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()方法可以

比较两个字符串的内容。

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

}

}

结果截图

 
   

分析:使用equals()或equalsIgnoreCase()方法比较两字串内容是否相同,使用==比较两字串变量是否引用同一

字串对象。而s1和s2分别用new所申请了各自的字串对象,所以系统输出false。

3、用法:

1)Length():获取字串长度

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

3)getChars():获取从指定位置起的子串复制到字符数组中(它有四个参数,在示例中有介绍);

4)replace():子串替换

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

6)trim():去除头尾空格:

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

解释

定义一个String类型的a,a.length()表示字串a的的长度;

用for(int i=0;i<a.length();i++)给a标号Atchar(i)表示a的第i个字符;

charArray = new char[ 5 ];

a.getChars( 0, 5, charArray, 0 );

//四个参数的含义

//1.被拷贝字符在字串中的起始位置

//2.被拷贝的最后一个字符在字串中的下标再加1

//3.目标字符数组

//4.拷贝的字符放在字符数组中的起始下标,

Repalace(a,b)用a替换b;

a.toUpperCase()\A.toLowerCase()分别是小写转大写,大写转小写;

a.Trim()即去掉字串a的头尾空格;

a.toCharArray()将字串a转化为字符数组。

public class Az

{

public static void main(String[] args)

{

// TODO Auto-generated method stub

String a="   This is my original string ,it is very good!              ";

String b="";

char a1[]=a.toCharArray();

for (int i=a.length()-1; i>=0; i--){

b += a1[i];

}

String c=a.toUpperCase();

System.out.println(b+"\n"+c);

String r = "your";

a = a.replace("my",r);

System.out.println(a.trim());

}

}

4、String str="abc";

String result=str.trim().toUpperCase().concat("defg");

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

MyCounter counter1=new MyCounter(1);

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

public class MyCounter

{

public static void main(String[] args) {

// TODO Auto-generated method stub

String str="abc";

String result=str.trim().toUpperCase().concat("defg");

System.out.println(result);

}

}

结果:

课后作业一:字串加密

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

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

设计思想:输入要加密的子串str,定义字符串长度,将字符串转化为单个字符,每个字符+3,

向后移3个,定义output,将新得到的每个字符加到output后,最终将其输出,此字符串即为加密后的字符串。

程序流程图:

源代码:

import java.util.Scanner;

public class Saa

{

public static void main(String[] args)

{

// TODO Auto-generated method stub

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

Scanner in=new Scanner(System.in);

String key=in.nextLine();

int l=key.length();

char a;

System.out.println("加密后为:");

for(int i=0;i<=key.length()-1;i++)

{

a=key.(i);

if(a<(char) 'x')System.out.println((char)(a+3));

if(a==(char)'x')System.out.println('a');

if(a==(char)'y')System.out.println('b');

if(a==(char)'z')System.out.println('c');

}

}

}

结果截图:

 
   

java课堂_动手动脑4的更多相关文章

  1. JAVA课堂练习-动手动脑--数组

    1.阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 源代码: public class PassArray { public stat ...

  2. JAVA 数组作业——动手动脑以及课后实验性问题

    JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // ...

  3. java第二节课 java语法基础动手动脑

    动手动脑1:枚举变量   运行EnumTest.java package test2; public class EnumTest {  public static void main(String[ ...

  4. java学习——关于java课件上动手动脑问题简单的分析

    问题一:关于以下的代码为什么会产生错误的问题的简单分析. 第一个动手动脑提供了一下的代码,可以发现,在Foo的这个类中只定义了一个Foo(int)类型的构造函数,在之前的学习工程中,我们并没有接触到j ...

  5. java语法基础--动手动脑问题及课后实验问题

    ---恢复内容开始--- 动手动脑: 1:仔细阅读示例:EnumTest.java,运行它,分析运行结果 结果 :枚举类型是引用类型!枚举类型不属于原始数据类型,它的每个具体指都引用一个特定的对象.相 ...

  6. java学习(4)——动手动脑

    根据ppt所给的例子,运行的结果如下所示: ppt中出现的第二个动手动脑如下: 代码如下: 其运行结果如下: 作出简单的分析如下:有点类似于if 和else的关系,总是对应try和catch同层中的异 ...

  7. java课程作业--动手动脑

    随机数: 1)编写一个方法,使用以下算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Multiplier=75=16807 C=0 当显示过231 ...

  8. 00JAVA语法基础_动手动脑

    1.仔细阅读示例: EnumTest.java,运行它,分析运行结果? 枚举类型的使用是借助ENUM这样一个类,这个类是JAVA枚举类型的公共基本类.枚举目的就是要让某个变量的取值只能为若干固定值中的 ...

  9. java文件课后动手动脑

    package 第九周作业1; import java.io.File; import java.io.FileInputStream; import java.io.IOException; imp ...

随机推荐

  1. 字符串匹配Boyer-Moore算法:文本编辑器中的查找功能是如何实现的?---这应该讲的最容易懂的文章了!

    关于字符串匹配算法有很多,之前我有讲过一篇 KMP 匹配算法:图解字符串匹配 KMP 算法,不懂 kmp 的建议看下,写的还不错,这个算法虽然很牛逼,但在实际中用的并不是特别多.至于选择哪一种字符串匹 ...

  2. 爬取链家网租房图 使用ImagesPipeline保存图片

    # 爬虫文件 # -*- coding: utf-8 -*- import scrapy import os from urllib import request from lianjia.items ...

  3. SpringBoot第二十一篇:整合ActiveMQ

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11190048.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   前一章节中 ...

  4. Bzoj 3813 奇数国 题解 数论+线段树+状压

    3813: 奇数国 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 748  Solved: 425[Submit][Status][Discuss] ...

  5. Bzoj 2288 生日礼物题解

    2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 856  Solved: 260[Submit][S ...

  6. MyBatis OGNL表达式用法

    From<MyBatis从入门到精通> <!-- 4.7 OGNL用法 MyBatis常用的OGNL表达式: e1 or e2: e1 and e2 e1 == e2; e1 != ...

  7. JQuery学习笔记(3)——节点操作 节点查找

    插入节点 内部插入 所谓的内部插入,就是指在节点里面的插入,而外部插入,则是在节点外面插入. append() prepend() appendTo() prependTo() append和prep ...

  8. [原创]Flask+uwsgi+virtualenv+nginx部署配置

    1.创建工程python2.7版本虚目录: #virtualenv -p /usr/bin/python2.7 CDN_resource #cd CDN_resource #source ./bin/ ...

  9. Web API POST [FromBody] string value 接受参数

    网上看到很多关于这这个问题的解决方案,但是都不正确,我也恰巧遇到这个问题,所有把正确的解决方案写出来,希望给后来人参考,如有不同意见欢迎指正 namespace WebApi.Controllers ...

  10. php 中文乱码问题

    http://www.jb51.net/article/30064.htm 翻了好多帖子,发现不知道是不是自己脸黑, 文件头这边加上header("Content-Type: text/ht ...