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. 使用SpringSecurity搭建授权认证服务(1) -- 基本demo认证原理

    使用SpringSecurity搭建授权认证服务(1) -- 基本demo 登录认证是做后台开发的最基本的能力,初学就知道一个interceptor或者filter拦截所有请求,然后判断参数是否合理, ...

  2. Codeforces 755D:PolandBall and Polygon(思维+线段树)

    http://codeforces.com/problemset/problem/755/D 题意:给出一个n正多边形,还有k,一开始从1出发,向第 1 + k 个点连一条边,然后以此类推,直到走完 ...

  3. Python与C/C++相互调用

    参考链接:https://www.cnblogs.com/yanzi-meng/p/8066944.html

  4. 魔道祖师 (作者:墨香铜臭)mobi格式下载

    下载地址:[点我]电视剧陈情令原著主要讲的是五大仙门世家的故事,其中主要讲述的就是魏无羡与蓝忘机之间的故事. 前世的魏无羡万人唾骂,声名狼藉. 被情同手足的师弟带人端了老巢, 纵横一世,死无全尸. 曾 ...

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

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

  6. 三个标签完成springboot定时任务配置

    1. 问题描述 Java项目定时任务是必备模块,月高风黑夜跑个批处理,记录或者统计一些系统信息. 2. 解决方案: 结合springboot,只需三个标签就能完成定时任务配置. 2.1 标签1 用在s ...

  7. 【题解】旅行-C++

    Description 某趟列车的最大载客容量为V人,沿途共有n个停靠站,其中始发站为第1站,终点站为第n站.在第1站至第n-1站之 间,共有m个团队申请购票搭乘,若规定:(1)对于某个团队的购票申请 ...

  8. python爬虫笔记之re.IGNORECASE

    re.IGNORECASE有什么用?re.IGNORECASE是什么意思?(原谅我抓下seo..) 这里自己总结下: re.IGNORECASE是compile函数中的一个匹配模式. re.IGNOR ...

  9. 抓包自定义过滤器需加%XXXX%,如%third_play%

    抓包自定义过滤器需加%XXXX%,如%third_play%

  10. html提示框插件

    最近工作需要,用到各式各样的提示框,寻找了很久,发现一个的第三方的插件很好用,各种样式.接口良好.允许自定义. 官网:http://layer.layui.com/ 使用需要先引入jq1.8以上: & ...