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. 国内Maven仓库 - 2018年5月2日15:54:10

    <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> & ...

  2. delphi 大文件的读写 使用 MapviewOffile

    unit filemap; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...

  3. week06 09 NodeJS Server as a RPCclient - jayson

    nodeserver端的rpcclient 来调用后端backendserver端定义的add等方法 2个server连通 Make NodeJs as a client - Npm jayson 用 ...

  4. Hibernate学习笔记2.2(Hibernate基础Annotation配置)

    如果数据库表名与类名不一致 可以用使用 @Table(name="_teacher") 来指定表名,没有就会自己创建 也可以在配置文件上修改 为class添加table属性 如果什 ...

  5. Python unindent dese not match any out indentation level 问题

    今天写个小程序出现 “unindent dese not  match any out indentation level”. 一直没找到原因,经过仔细对比发现实际上是缩进的问题. 上下两行的缩进用的 ...

  6. Jupter 7个进阶功能

    1.  执行shell命令 Shell是一种与计算机进行文本交互的方式. 一般来讲,当你正在使用Python编译器,需要用到命令行工具的时候,要在shell和IDLE之间进行切换. 但是,如果你用的是 ...

  7. spring注解之@Lazy

    今天主要从以下几方面来介绍一下@Lazy注解 @Lazy注解是什么 @Lazy注解怎么使用 1,@Lazy注解是什么   @Lazy注解用于标识bean是否需要延迟加载,源码如下: @Target({ ...

  8. User-Defined Components Must Be Capitalized

    [User-Defined Components Must Be Capitalized] When an element type starts with a lowercase letter, i ...

  9. javascript学习笔记(三):运算符、循环语句

    javascript的运算符.条件语句.循环语句的使用方法大部分和c语言类似,但是值得注意的是,运算符中"=="和"==="的使用方法和c语言有区别:在java ...

  10. oracle 函数的返回值与out参数

    函数的return值是调用函数返回的结果. 而out参数就是单纯的赋值. 例子: function test(aaa in varchar, bbb out integer) return integ ...