java课后实验性问题5
课后作业一:字符串加密
程序设计思想:
从键盘获取字符串,将字符串转为字符数组,将每个元素加事前协定的“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的更多相关文章
- java课后实验性问题4
课后作业一: 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象? 设计思路:定义类的构造函数时使静态变量i进行i++,即每构 ...
- java课后实验性问题2
课后作业一:计算组合数 程序设计思想: 从键盘获取组合数,判断是否构成组合数.分别用三种方法计算组合数输出. 程序流程图: import java.util.Scanner; public class ...
- java课后实验性问题7
1.异常处理 import javax.swing.*; class AboutException { public static void main(String[] a) { int i = 1, ...
- java课后实验性问题6
1.继承条件下的构造方法调用. class Grandparent { public Grandparent(){ System.out.println("GrandParent Creat ...
- java课后实验性问题3
一 .生成随机数 import java.util.*; public class Test1 { public static void main(String[] args) { //建立一个生产随 ...
- java课后实验性问题1
一.一个java类文件中只能有一个公有类吗? 测试代码 public class Test{ public static void main(String[] args){ } public clas ...
- JAVA 数组作业——动手动脑以及课后实验性问题
JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // ...
- JAVA语法基础作业——动手动脑以及课后实验性问题 (八)
一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...
- JAVA 多态和异常处理作业——动手动脑以及课后实验性问题
1. 阅读以下代码(CatchWho.java),写出程序运行结果: 1) 源代码 public class CatchWho { public static void main(String[] ...
随机推荐
- [书籍翻译] 《JavaScript并发编程》 第二章 JavaScript运行模型
本文是我翻译<JavaScript Concurrency>书籍的第二章 JavaScript运行模型,该书主要以Promises.Generator.Web workers等技术来讲解J ...
- 详解为什么设置overflow为hidden可以清除浮动带来的影响
1.问题起源 在平时的业务开发写CSS中,为了满足页面布局,元素的浮动特性我们用的不能再多了.使用浮动的确能够解决一些布局问题,但是也带了一些副作用影响,比如,父元素高度塌陷,我们有好几种可以清除浮动 ...
- stm32位带
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bit ...
- 3.ConcurrentHashMap 锁分段机制 Copy-On-Write
/*ConcurrentHashMap*/ Java 5.0 在 java.util.concurrent 包中提供了 多种 并发容器来改进同步容器的性能 ConcurrentHashMap 同步容器 ...
- Hadoop集群搭建(cluster setup),ssh免密后一直要求输入密码的原因
前段时间,网上有言SHA-1加密技术,已经被谷歌公司破解,在linux系统中,集群间加密的技术是用DSA秘钥,秘钥本身其实是一种算法,就像前面说的SHA-1也是加密算法的一种. 免密在linux系统中 ...
- IDEA部署项目到远程服务器
一.idea安装阿里插件Alibaba Cloud Toolkit 二.添加Host 三.应用部署 四.修改源程序重新部署 五.查看实时日志 欲买桂花同载酒,终不似,少年游
- kafka学习链接收藏
1.kafka官方文档 Apache Kafka : broker.producer.consumer等参数配置直接看目录 2.系统学习 kafka中文教程 - OrcHome <Apache ...
- Linux shell批量执行scp脚本工具
转载: linux shell + expect:批量scp脚本工具 2011-09-13 15:51:06 分类: Python/Ruby 最近在准备一个部署的任务,其中有一 ...
- jmeter接口测试-使用rsa加密解密算法
本篇介绍jmeter 使用rsa算法进行加密参数 如果测试过程中,部分接口采用了rsa加密算法,我们的jmeter 也是可以直接拿来调用的,不需要开发配合去掉加密代码! 直接上代码 import or ...
- [2019HDU多校第一场][HDU 6580][C. Milk]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6580 题目大意:\(n\times m\)大小的方格上有\(k\)瓶水,喝完每瓶水都需要一定的时间.初 ...