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[] ...
随机推荐
- Python多个装饰器的顺序 转载
3.使用两个装饰器当一个装饰器不够用的话,我们就可以用两个装饰器,当然理解起来也就更复杂了,当使用两个装饰器的话,首先将函数与内层装饰器结合然后在与外层装饰器相结合,要理解@语法的时候到底执行了什么, ...
- web pack备忘
全局安装:npm install webpack -g npm i module_name -S = > npm install module_name --save 写入到 dependenc ...
- perl语言的线程使用
参考的教程链接是 https://www.cnblogs.com/migrantworkers/p/6973459.html 1.Perl 多线程的使用,join 和 detach 的区别 ,join ...
- Marketing Cloud的contact merge机制
Marketing Cloud的contact支持多种多样的数据源,如下图所示: SAP Hybris Commerce SAP ERP SAP Cloud for Customer SAP Gigy ...
- DNS zone file
zone file格式最初由Berkeley Internet Name Domain(BIND)软件包使用,但已被其他DNS server software广泛采用.它们中的一些(例如NSD,Pow ...
- ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问
报错:ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问.: 'E:\\Anoconda\\ ...
- sklearn线性回归实现房价预测模型
目录 题目要求 单特征线性回归 方案一 方案二 多特征线性回归 两份数据 ex1data1.txt ex1data2.txt 题目要求 建立房价预测模型:利用ex1data1.txt(单特征)和ex1 ...
- mysql对两个字段进行自定义排序
Mysql order by 多字段排序 ') desc,ADD_DATE desc mysql单个字段降序排序: select * from table order by id desc; mysq ...
- IMEI手机串码和serialno
IMEI 1.IMEI是什么 国际移动设备识别码(International Mobile Equipment Identity number,IMEI),俗称“手机串号”.“手机串码”.“手机序列号 ...
- Educational Codeforces Round 74 (Rated for Div. 2) D. AB-string
链接: https://codeforces.com/contest/1238/problem/D 题意: The string t1t2-tk is good if each letter of t ...