JAVA动手动脑及课后作业

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]+" ");

}

}

截图

时间: 2024-08-28 02:27:00

JAVA动手动脑及课后作业的相关文章

JAVA语法基础 动手动脑及课后作业

动手动脑1: 仔细阅读示例: EnumTest.java,运行它,分析运行结果? public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Size t=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t);  // //是原始数据类型吗? System.out.println(s.getClass().isPrimitive()); //

异常处理---动手动脑及课后作业

动手动脑1:请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 源码: import javax.swing.*; class AboutException { public static void main(String[] a) { int i=1, j=0, k; k=i/j; try { k = i/j; // Causes division-by-zero exception //throw new Exception

第七讲 数组动手动脑和课后作业

[动手动脑1] 数据作为方法参数示例代码 int[] arr= new int[ 24 ]; -- modifyArray( arr ); 阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. // PassArray.java // Passing arrays and individual array elements to methods public class PassArray { public static void ma

java动手动脑和课后实验型问题String类型

1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请新开辟一个地址空间,存储的地址空间不一样(对象不同),string类型下hello是同一个对象,其内容和地址都相容. 2. public class StringEquals { /** * @param args the command line arguments */ public stati

第四讲动手动脑集课后作业

一.动手动脑 1.编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. 源代码: //huzejie20161016//生成指定数目的随机数import java.util.Scanner;public class Suijishu { public static void main(String[] args) { System.out.print("请输入要输出多少个随机数:"); Scanner s = new Scanner(System.in); int n

动手动脑及课后作业02

1.SquareIntTest.java中不用static如何还能使用Square函数 解决方法: 2. 代码: import java.util.Scanner; public class Suiji { public static void main(String[] args) { System.out.print("请输入要输出的随机数个数:"); Scanner s = new Scanner(System.in); int num = s.nextInt(); //生成随机

03_方法(动手动脑和课后作业)

一. MethodOverload.java public class MethodOverload { public static void main(String[] args) { System.out.println("The square of integer 7 is " + square(7)); System.out.println("\nThe square of double 7.5 is " + square(7.5)); } public s

java动手动脑和课后实验型问题第四讲

1.完全"手写代码实现"随机数生成 动手动脑: 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Multiplier=75=16807 C=0 当显示过231-2个数之后,才可能重复. 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. public class suiji { private static final int N = 200; private static final int

Java作业03 (动手动脑和课后作业1.使用下面定义的类,以下代码输出结果是什么?)

1.使用下面定义的类,以下代码输出结果是什么? 输出结果: 请依据代码的输出结果,自行总结Java字段初始化的规律. Java初始化的地方有两个:初始化块和构造函数,其中初始化又分为实例初始化块和静态初始化块,实例初始化块没有关键字修饰,而静态初始化块由static修饰. 执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面” 执行类的构造函数:类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行.因此,适合于封装那些“对象创建时必须执行的代码”. 2.