java课堂_动手动脑4
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的更多相关文章
- JAVA课堂练习-动手动脑--数组
1.阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 源代码: public class PassArray { public stat ...
- JAVA 数组作业——动手动脑以及课后实验性问题
JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // ...
- java第二节课 java语法基础动手动脑
动手动脑1:枚举变量 运行EnumTest.java package test2; public class EnumTest { public static void main(String[ ...
- java学习——关于java课件上动手动脑问题简单的分析
问题一:关于以下的代码为什么会产生错误的问题的简单分析. 第一个动手动脑提供了一下的代码,可以发现,在Foo的这个类中只定义了一个Foo(int)类型的构造函数,在之前的学习工程中,我们并没有接触到j ...
- java语法基础--动手动脑问题及课后实验问题
---恢复内容开始--- 动手动脑: 1:仔细阅读示例:EnumTest.java,运行它,分析运行结果 结果 :枚举类型是引用类型!枚举类型不属于原始数据类型,它的每个具体指都引用一个特定的对象.相 ...
- java学习(4)——动手动脑
根据ppt所给的例子,运行的结果如下所示: ppt中出现的第二个动手动脑如下: 代码如下: 其运行结果如下: 作出简单的分析如下:有点类似于if 和else的关系,总是对应try和catch同层中的异 ...
- java课程作业--动手动脑
随机数: 1)编写一个方法,使用以下算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Multiplier=75=16807 C=0 当显示过231 ...
- 00JAVA语法基础_动手动脑
1.仔细阅读示例: EnumTest.java,运行它,分析运行结果? 枚举类型的使用是借助ENUM这样一个类,这个类是JAVA枚举类型的公共基本类.枚举目的就是要让某个变量的取值只能为若干固定值中的 ...
- java文件课后动手动脑
package 第九周作业1; import java.io.File; import java.io.FileInputStream; import java.io.IOException; imp ...
随机推荐
- SQLServer性能优化之---数据库级日记监控
上节回顾:https://www.cnblogs.com/dotnetcrazy/p/11029323.html 4.6.6.SQLServer监控 脚本示意:https://github.com/l ...
- Hyperledger Fabric 命令整理
Peer节点命令 Peer node start 启动一个Peer节点: peer node start status 获取当前节点的状态信息 peer node status reset 重置当前节 ...
- Python 的8个关键要素
1.数据类型 2.对象引用 3.组合数据类型 4.逻辑操作符 5.控制流语句 6.算术操作符 7.输入/输出 8.函数的创建与调用
- echo-nginx-module的安装、配置、使用
一.下载压缩包 [root@www nginx-1.16.0]# wget https://github.com/openresty/echo-nginx-module/archive/v0.61.t ...
- fastjson1.2.48以下版本存在重大漏洞
1. 场景描述 今天接公司通知:阿里的Fastjson,今天爆出了一个反序列化远程代码漏洞,比较严重的一个漏洞. 影响范围: 1.2.48以下的版本(不包括1.2.48). 2. 解决方案 查看项目f ...
- 使用cmd打开磁盘目录和文件
例如: 1.进入e盘 2.查看E盘下所有文件 3.进入指定文件夹
- bzoj 2752 9.20考试第三题 高速公路(road)题解
2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1545 Solved: 593[Submit] ...
- 提升布局性能____Re-using Layouts with <include/>
可以再一个布局中通过"include"和"merge"元素进行复用其他的布局元素. 比如如下一个布局: <FrameLayout xmlns:androi ...
- Spring Boot 2.x (十八):邮件服务一文打尽
前景介绍 在日常的工作中,我们经常会用到邮件服务,比如发送验证码,找回密码确认,注册时邮件验证等,所以今天在这里进行邮件服务的一些操作. 大致思路 我们要做的其实就是把Java程序作为一个客户端,然后 ...
- 浅谈tomcat 、apache、 nginx的区别及优缺点
(~~排版垃圾~~,此文纪念自己18年6月所作为,如有不适合之处,请告知.) 本文主要说明tomcat .apache. nginx的定义.区别及优缺点 一. 定义: 1. Apache Apache ...