1.查看其输出结果。如何解释这样的输出结果?从中你能总结出什么?

运行结果

true

true

false

原因

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

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

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

为什么会有上述的输出结果?从中你又能总结出什么?

  1)给字串变量赋值意味着:两个变量(s1,s2)现在引用同一个字符串对象“a”!

2)String对象的内容是只读的,使用“+”修改s1变量的值,实际上是得到了一个新的字符串对象,其内容为“ab”,它与原先s1所引用的对象”a”无关,所以,s1==s2返回false;

3)代码中的“ab”字符串是一个常量,它所引用的字符串与s1所引用的“ab”对象无关。

4)String.equals()方法可以比较两个字符串的内容。

2.请查看String.equals()方法的实现代码,注意学习其实现方法。

public boolean equals(Object anObject) {

if (this == anObject) {

return true;

}

if (anObject instanceof String) {

String anotherString = (String) anObject;

int n = value.length;

if (n == anotherString.value.length) {

char v1[] = value;

char v2[] = anotherString.value;

int i = 0;

while (n-- != 0) {

if (v1[i] != v2[i])

return false;

i++;

}

return true;

}

}

return false;

}

3.String类中函数的使用方法

1.length()

作用:获取字符串的长度

String a=”abc”;

Int b=a.length();

2.charAt()

作用:获取指定位置的字符

String a=”abc”;

Char b=a.charAt(3);

3.getChars()

作用:获取从指定位置起的子串复制到字符数组中

String s1=”abc”;

Char s2=new char[5];

S1.getChars(0,2,s2,0);   //将s1中的下标为0,1,2的字符复制到s2中从0开始的位置

4.Replace()

作用:子串替换

String s1=”abcd”,s2;

S2=s1.replace(“ab”,”12”);

5.toUpperCase()

作用:大写转换

String s1=”abc”;

s1.toUpperCase()=ABC

6.toLowerCase()

作用:小写转换

String s1=”ABC”;

s1.toLowerCase()=abc

7.Trim()

作用:去除头尾空格

String s1=”   abcd”;

s1=s1.tirm();

s1=”abcd”

8.toCharArray()

作用:将字符串对象转换为字符数组

String s1=”abcd”;

Char [] s2=s1.toCharArray();

4.字符串加密

设计思想

1.首先使用Scanner类输入一个字符串;

2.用charAt类将字符串中的一个个字符取出来;

3.将每个字符加上3,再强制转换成char类型,并将字符赋值到定义的char类型的数组里;

4.判断字符是否是想,x,y,z,如果是则加上3后再减去26;

5.最后将定义的char类型的数组内容输出;

流程图

 

源代码

import java.util.Scanner;

public class Jiami {

public static void main(String[] args){

String s1="";

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

Scanner sc=new Scanner(System.in);

s1=sc.next();

sc.close();

char[] s2=new char[s1.length()];

for(int i=0;i<s1.length();i++)

{

s2[i]=(char) (s1.charAt(i)+3);

if(s1.charAt(i)>='x'&&s1.charAt(i)<='z'||s1.charAt(i)>='X'&&s1.charAt(i)<='Z')

s2[i]=(char) (s1.charAt(i)+3-26);

}

System.out.println("加密后的字符串为:");

for(int i=0;i<s1.length();i++)

System.out.print(s2[i]+" ");

}

}

截图

JAVA动手动脑及课后作业的更多相关文章

  1. java动手动脑和课后实验型问题String类型

    1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...

  2. java动手动脑和课后实验型问题第四讲

    1.完全"手写代码实现"随机数生成 动手动脑: 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Mult ...

  3. java动手动脑和课后实验型问题

    1.以下代码的输出结果是什么?为什么会有这个结果? int[] a = { 5, 7, 20 }; System.out.println("a数组中的元素:"); // 循环输出a ...

  4. 2019-9-16 java上课知识整理总结(动手动脑,课后实验)

    java上课知识整理总结(动手动脑,课后实验) 一,课堂测试 1,题目:课堂测试:像二柱子那样,花二十分钟写一个能自动生成30道小学四则运算题目的 “软件” 要求:(1)题目避免重复: (2)可定制( ...

  5. Java动手动脑——多态和继承

    Java动手动脑——继承和多态 实验一 预估输出答案:100  200  201  202 输出结果:100  200  201  202 输出答案分析:100 创建parent类的对象,调用对象的方 ...

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

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

  7. JAVA语法基础作业——动手动脑以及课后实验性问题 (八)

    一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...

  8. java课堂动手动脑及课后实验总结

      动手动脑一:枚举   输出结果: false false true SMALL MEDIUM LARGE 分析和总结用法 枚举类型的使用是借助ENUM这样一个类,这个类是JAVA枚举类型的公共基本 ...

  9. Java动手动脑第四讲课堂作业

    动手动脑1 完全“手写代码实现”随机数生成 纯随机数发生器

随机推荐

  1. Ajax 学习 第一篇

    http请求: 1.请求的方法或动作 2.正在请求的url 3.请求头 4.请求体 及请求正文 典型例子 get.post区别 1.get    幂等  执行一次哪怕一万次影响相同 一般用于信息获取 ...

  2. scrapy 常用代码

    一,scrapy请求 yield scrapy.Request(url=url, dont_filter=True, callback=self.page, meta={'item': item}) ...

  3. python垃圾回收机制(转)

    Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾.在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的 ...

  4. tensorflow 训练cifar10报错

    1.AttributeError: 'module' object has noattribute 'random_crop' 解决方案: 将distorted_image= tf.image.ran ...

  5. python基础学习Day12 生成器、列表推导式、字典的表达式、字典键值对的互换、集合推导式

    一.生成器 1.1 生成器:就是(python)自己用代码写的迭代器,生成器的本质就是迭代器. 1.2 生成器函数 def func1(x): x += print() yield x print() ...

  6. C++读取txt和保存到txt

    哇,今天又重新用C++来写了一些代码发现自己竟然在类的使用和文件读取和保存上面特别头疼,于是,各种问度娘+各种翻看之前的代码.不禁感叹,自己的代码还是写的太少了,对这些一点都不熟悉.于是,今晚!一定! ...

  7. C 中的typedef应用

    1. typedef  声明的新的类型名在变量名的位置出现. example: typedef unsigned int UINT 则 unsigned int a; 相当于 UINT A; 2. t ...

  8. python添加到环境变量

    1.命令 vi ~/.bashrc export PATH="/home/tiany/software/python/python3/3.6.1/bin:$PATH" export ...

  9. redis 配置参数

    redis配置参数说明: 属性 说明 daemonize 如果值是“yes”,则启动服务的时候是后台守护进程形式,如果值是“no”,则相反 pidfile 指定存储Redis进程号的文件路径 port ...

  10. cakephp 如何在一个模型里调用另一个模型

    $admin_users = ClassRegistry::init('AdminUsers'); $admin_name = $admin_users->find('list',array( ...