课后作业一:字符串加密

程序设计思想:

从键盘获取字符串,将字符串转为字符数组,将每个元素加事前协定的“key”,再转为字符串输出。

程序流程图:

源代码:

import java.util.Scanner;
public class Test{
public static void main(String args[]){
String str1,str2;
System.out.print("输入字符串:");
Scanner sc = new Scanner(System.in);
str1 = sc.nextLine();
char [] ch = str1.toCharArray();
for(int i = 0; i < ch.length; i++){
int n = 0, m = 0;
n = ch[i];
m = n + 3;
ch[i] = (char)m;
}
String str = new String(ch);
str2 = str;
System.out.println("加密后的字符串:"+str2);
}
}

结果截图:

1. 运行以下代码,会出现什么结果,为什么,总结出什么?

public class StringPool {
public static void main(String args[]){
String s0 = "Hello";
String s1 ="Hello";
String s2 = "He"+"llo";
System.out.println(s0 == s1);
System.out.println(s0 == s2);
System.out.println(new String("Hello") == new String("Hello"));
}
}

结果:

String中当字符串相同时,为节省空间,相同的字符串使用引用。比较的是对象地址。s0==s1 s1为s0的引用,地址相同,所以为true。

s2 中“+”为连接,s2值为Hello s0==s2 s2为s1的引用,地址相同,所以为true。

System.out.println(new String("Hello")==new String("Hello")) 创建了新的对象,两个独立对象地址不同,所以为flase。

总结:String中当字符串相同时,为节省空间,相同的字符串使用引用。

public class StringPool {
public static void main(String args[]){
String s1 = "a";
String s2 = s1;
System.out.println(s1 == s2);
s1+=”b”;
System.out.println(s1 == s2);
System.out.println(s1 == ”ab”);
System.out.println(s1.equals(“ab”));
}
}
结果:ture
false
false
ture

给变量赋值s1、s2引用同一个对象,所以为true。

s1+=b,后得到一个“ab”与“a”无关,所以为false。

s1==“ab”ab是常量与对象无关,所以为false。

String.equals()方法可以比较两个字符串内容。所以为false。

总结:String.equals()方法可以比较两个字符串内容。

3. 字符串比较,查看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;
}

使用:

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

结果:

4. String类的方法整理。

Length():
返回此字符串的长度。长度是等于Unicode代码单元中的字符串的数目。
使用:
import java.lang.*;
public class StringDemo {
public static void main(String[] args) {
String str = "tutorials point";
System.out.println("length of string = " + str.length());
str = "";
System.out.println("length of string = " + str.length());
}
}
结果:
length of string = 15
length of string = 0
charAt():
此方法返回位于字符串的指定索引处的字符。该字符串的索引从零开始。
例子:
getChars:
import java.lang.*;
public class Test {
public static void main(String args[]){
String s = "Strings are immutable";
char result = s.charAt(8);
System.out.println(result);
}
}
结果:返回a。
replace():
方法返回一个新的字符串替换此字符串中出现的所有oldChar与newChar.
例子:
import java.lang.*;
public class StringDemo {
public static void main(String[] args) {
String str = "aacdeaa";
System.out.println("string = " + str);
String replaceStr = str.replace('a', 'b');
System.out.println("new string = " + replaceStr);
}
}
结果:string = aacdeaa
new string = bbcdebb
toUpperCase():
此方法返回转换为大写的字符串。
例子:
import java.lang.*;
public class StringDemo {
public static void main(String[] args) {
String str1 = "aaabbbccc";
System.out.println("string value = " + str1.toUpperCase());
}
}
结果:AAABBBCCC
toLowerCase():
此方法返回转换为小写的字符串。
例子:
import java.lang.*;
public class StringDemo {
public static void main(String[] args) {
String str1 = "AAABBBCCC";
System.out.println("string value = " + str1.toLowerCase());
}
}
结果:aaabbbccc
trim():
去掉字符串首尾的空格。
例子:
import java.lang.*;
public class Test{
public static void main(String arg[]){
String a = " hello world ";
String b = "hello world";
System.out.println(b.equals(a));
System.out.println(a);
a=a.trim();
System.out.println(a.equals(b));
System.out.println(a);
System.out.println(b);
}
}
结果:false
true
hello world
hello world
hello world
toCharArray():
把这个字符串转换成一个新的字符数组.
例子:
import java.lang.*;
public class StringDemo {
public static void main(String[] args) {
String str = " Java was developed by James Gosling";
char retval[] = str.toCharArray();
System.out.println("Converted value to character array = ");
System.out.println(retval);
}
}
结果:
Converted value to character array =
Java was developed by James Gosling
5.模仿String类连续调用。
public class Test{
public static void main(String args[]){
MyCounter counter1 = new MyCounter(1);
MyCounter counter2 = new MyCounter();
counter2 = counter1.increase(100).decrease(2).increase(3);
System.out.println(counter2.i);
}
}
class MyCounter{
public int i;
MyCounter(){}
MyCounter(int n){
this.i = n;
}
public MyCounter increase(int n){
MyCounter a = new MyCounter();
a.i = i + n;
return a;
}
public MyCounter decrease(int n){
MyCounter a = new MyCounter();
a.i = i - n;
return a;
}
}
结果:102

java课后实验性问题5的更多相关文章

  1. java课后实验性问题4

    课后作业一: 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象? 设计思路:定义类的构造函数时使静态变量i进行i++,即每构 ...

  2. java课后实验性问题2

    课后作业一:计算组合数 程序设计思想: 从键盘获取组合数,判断是否构成组合数.分别用三种方法计算组合数输出. 程序流程图: import java.util.Scanner; public class ...

  3. java课后实验性问题7

    1.异常处理 import javax.swing.*; class AboutException { public static void main(String[] a) { int i = 1, ...

  4. java课后实验性问题6

    1.继承条件下的构造方法调用. class Grandparent { public Grandparent(){ System.out.println("GrandParent Creat ...

  5. java课后实验性问题3

    一 .生成随机数 import java.util.*; public class Test1 { public static void main(String[] args) { //建立一个生产随 ...

  6. java课后实验性问题1

    一.一个java类文件中只能有一个公有类吗? 测试代码 public class Test{ public static void main(String[] args){ } public clas ...

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

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

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

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

  9. JAVA 多态和异常处理作业——动手动脑以及课后实验性问题

    1.  阅读以下代码(CatchWho.java),写出程序运行结果: 1)  源代码 public class CatchWho { public static void main(String[] ...

随机推荐

  1. 安装mysql采坑记录

    安装之前彻底卸载之前的mysql,再次安装,初始化数据库那一步失败. 再次彻底卸载mysql,把原先的安装路径的文件夹删除,文件夹路径:C:\ProgramData,再次安装,成功. 总结:重装mys ...

  2. Vue子父组件方法互调

    讲干货,不啰嗦,大家在做vue开发过程中经常遇到父组件需要调用子组件方法或者子组件需要调用父组件的方法的情况,现做一下总结,希望对大家有所帮助. 父组件调用子组件方法: 1.设置子组件的ref,父组件 ...

  3. eclipse调试之edit source lookup path解决方案

    转自:https://blog.csdn.net/zkn_CS_DN_2013/article/details/48731133

  4. storm连接http需要的jar包

    将httpclient-4.5.6.jar  httpcore-4.4.10.jar这两个jar包拷贝到storm安装目录下的lib目录下 如果是集群的话,需要拷贝到集群中的每台机器上

  5. 搭建KVM环境——06 创建虚拟机

    若转载请于明显处标明出处:https://www.cnblogs.com/kelamoyujuzhen/p/9071181.html 虚拟机磁盘格式 创建一个raw格式的虚拟机磁盘 [root@Cen ...

  6. 台式机电脑u盘启动识别不到U盘设置

    U盘作为一个引导盘,在装机过程中显得十分的方便,有时候我们可以将U盘做成一个PE启动盘,有时我们也可以直接将U盘做成一个操作系统光盘的镜像. 但是有时候我们辛辛苦苦将U盘做成了引导盘了,关机---&g ...

  7. IntelliJ IDEA常用快捷键整合

    一.视图查看 Ctrl+F12 查看file,method结构图.类继承机构图 (不知道方法结构,Ctrl+F12一下,方法,参数,返回值,一清二楚的展现出来) Ctrl+shift+Alt+U   ...

  8. 通用分页model封装pageList

    package selfimpr.page; import java.util.List; /** * 分页模型 * @param <T> 数据泛型 * @author selfimpr ...

  9. 视觉SLAM关键方法总结

    点"计算机视觉life"关注,置顶更快接收消息! 最近在做基于激光信息的机器人行人跟踪发现如果单独利用激光信息很难完成机器人对行人的识别.跟踪等功能,因此考虑与视觉融合的方法,这样 ...

  10. Jupyter的学习

    一 .Jupyter中的魔术命令 %load test.py  :”可以将test.py 中的文件加载到jupyter框中 %matplotlib inline :可以将Matplotlib 的结果嵌 ...