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[] ...
随机推荐
- linux c 错误的捕获
经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因.这个时候使用 ...
- mysql控制台常用命令
登录: D:\seegot\mysql5.5.36\bin> mysql -uroot -proot Welcome to the MySQL monitor. Commands end wit ...
- javascript 给事件任务一个缓冲区
在编写前端的过程中,经常会监听事件并执行任务,我在这抛出2个比较常见的场景: 1.输入关键字搜索如果你监听input的chage事件,会有一个问题,在使用中文输入法时,你输入的几个拼音字母都会被触发我 ...
- 系统---添加一个相机的IP实现opencv读取rstp视频流
系统---添加一个相机的IP实现opencv读取视频流 这里: 第一步,添加一个6段的相机IP地址:先ping 一个IP地址,ping通的是再用的IP,不可添加:ping不通的,添加IP到网络. 第二 ...
- java之spring
Spring Spring中的基本概念1.IOC/DI对象的属性由自己创建,为正向流程,而由Spring创建,为控制反转.DI(依赖注入)为实现IOC的一种方式,通过配置文件或注解包含的依赖关系创建与 ...
- 如何让DEV跳出的“提示试用版”的对话框不再显示
在 使用DevExpress控件的时候.每次对窗体进行更改的时候,都会出现一个对话框.发布的时候 也会出现一个对话框.之前的解决方法是在发布的时候把licenses.licx给删除掉,但是这个方法治标 ...
- 1118 DOM
目录 BOM与DOM window对象 navigator对象(了解即可) screen对象(了解即可) history对象(了解即可) location对象 弹出框 计时相关 DOM对象 DOM结构 ...
- python_tkinter事件
1.事件绑定函数(3个) 组件.bind('事件类型',事件函数) 为一个组件绑定一个操作 组件.bind_class('组件类型','事件类型',事件函数) 为一个类组件绑定一个操作 组件.bind ...
- XML 命名规范
XML 元素必须遵循以下命名规则: 名称可以含字母.数字以及其他的字符 名称不能以数字或者标点符号开始 名称不能以字符 "xml"(或者 XML.Xml)开始 名称不能包含空格 可 ...
- 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 ...