java-05String课堂练习
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);//true
        System.out.println(s0==s2);//true
        System.out.println(new String("Hello")==new String("Hello"));//false
    }
}

分析:在java中,相同的字符串只保存了一份,这是为了节约内存。也就是说s0、s1、s2地址相同,引用了同一对象。而程序最后一行的new新开辟了存储空间,同之前的字符串是不同的对象。所以输出为false。
若改为
public class StringPool {
    public static void main(String args[])
    {
        String s1="a";
        String s2=s1;
        System.out.println(s1==s2);//true
        s1+="b";
        System.out.println(s1==s2);//false
        System.out.println(s1=="ab");
        System.out.println(s1.equals("ab"));
    }
}

分析:先给字符串变量s1赋值为a字符串,然后将s1的值赋值给s2.此时它们引用的是同一个地址,所以它们是相等的。之后s1的值变成了a字符串和b字符串相连接,即得到了一个新的字符串对象。地址不同所以s1和s2不相等。第三句输出,等式右边的字符串常量“ab”仅是一个字符串常量,同s1所指向的对象无关。而用equals函数则是只比较值,所以相等。
2.请查看String.equals()方法的实现代码,注意学习其实现方法。
anObject instanceof String;
//首先上边的语句,先判断anObject是不是String类的一个实例,如果是运行下边的语句
String anotherString = (String)anObject;
//字符串是一个引用数据类型,本身是String个对象,
//在这里把传进来的anObject这个对象,赋给anotherString (需要类型转换)
//他当然可以调用String类里的成员,你说的count、value、offset都是String的成员
int n = count;//这个count是原始字符串的长度
if (n == anotherString.count) { //把字符串长度和要比较的字符串长度对比,长度都不同的话就不用比字符串内容了
char v1[] = value;//把原始字符串义字符形式存入数组
char v2[] = anotherString.value; //把要比较字符串义字符形式存入数组
int i = offset;//数组下标
int j = anotherString.offset; //????
while (n-- != 0) { //遍历数组,比较 数组元素是否相同
if (v1[i++] != v2[j++])
return false;//在遍历的过程中如果有不同的就返回false;
}
return true;
}
}
return false;
}
3.请阅读JDK中String类上述方法的源码,模仿其编程方式,编写一个MyCounter类,它的方法也支持上述的“级联”调用特性,其调用示例为: MyCounter counter1=new MyCounter(1); MyCounter counter2=counter1.increase(100).decrease(2).increase(3); …
4.字串加密
设计思路:输入一串字母,储存在字符串变量中。将每个字母+3(即加密),用charAt()方法取字符串中的字符,加密后的新字串为str1.输出str1即可。

源代码:
import java.util.Scanner;
public class PassWord {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("请输入要加密的字符串");
        String str;
        int n=0;
        str=input.nextLine();
        n=str.length();
        char a;
        int n1=0;
        String str1=new String();
        for(int i=0;i<n;i++){
            a=str.charAt(i);    //取字符
            a=(char)(a+3);
            str1=str1+a;
        }
   System.out.println("加密后的子串是:"+str1);
  }
}


此程序还有很多不完善的地方,例如没有解密操作,没有进行输入的判断以及后三个字母的密码。
5.整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用方法
Length():获取字串长度,字符串对象中包含length属性,即字符串的长度,使用String类中的length()方法可以获得该属性
CharAt():获取指定位置的字符
getChars:获取从指定位置起的子串复制到字符数组中(它有四个参数,1.被拷贝字符在字串中的起始位置 2.被拷贝的最后一个字符在字串中的下标再加1 3.目标字符数组 4.拷贝的字符放在字符数组中的起始下标),不返回任何值,前面加void
replace():子串替换,通过String类的replace()方法,可以将原字符串中的某个字符替换为指定的字符,并得到一个新的字符串(两个参数,一个是旧字符,一个是新字符)
toUpperCase()、 toLowerCase():大小写转换,在String类中提供了两个用来实现字母大小写转换的方法,它们的返回值均为转换后的字符串,其中toLowerCase()用来将字符串中的所有大写字母改为小写字母,,方法toUpperCase()用来将字符串中的所有小写字母改为大写字母。
trim():去除头尾空格,通过String类的trim()方法,可以通过去掉字符串的首尾空格得到一个新的字符串,该方法的具体定义如下:public String trim()
toCharArray():将字符串对象转换为字符数组
java-05String课堂练习的更多相关文章
- java第一课堂
		
java第一课堂视频请在优酷搜索java第一课堂即可
 - JAVA首次课堂测试总结
		
暑期生活已经结束,新的学期也已经开始,而暑期放假之前约定的JAVA首次课堂测试也如期的到来,本次测试真的可以学到和多东西,也有很多感想. 首先体会最深的就是系主任所说的软件工程不是那么好学的,真的需要 ...
 - Java 第一次课堂测验
		
周一下午进行了开学来java第一次课堂测验,在课堂上我只完成了其中一部分,现代码修改如下: 先定义 ScoreInformation 类记录学生信息: /** * 信1805-1 * 胡一鸣 * 20 ...
 - Java 第一次课堂测试总结。
		
Java 第一次课堂测试总结. 昨天参加了JAVA的开学测试,课上没有完成计算基点的功能,以下是修改完成后的代码. 首先是ScoreInformation类来存储学生信息. //信1805-1 王正 ...
 - Java课程课堂测试05
		
大致要求:将十道计算题输出至TXT文件,再读取文件至控制台,然后在控制台中输入答案并评判对错 我在大致的要求当中已经将我的设计思路体现了出来 首先,实现计算题的设计,第二步要对计算题循环,将答案存到一 ...
 - Java课程课堂作业代码
		
前言 本文章只是单纯记录课堂老师布置的课堂作业代码,题目都比较简单,所以没有写解题思路,相信大家都能理解,当然其中有的解法和代码不是最优的,当时只是为了完成题目,后来也懒得改了,如果有不恰当或者不正确 ...
 - MYSQL和JAVA(课堂笔记)
		
MYSQL 数据库管理工具 JAVA 编程语言 数据库驱动(JAVA和MYSQL对接方式) 到官网上下载驱动 加载驱动 import java.sql.Connection;import java. ...
 - Java—Day5课堂练习
		
package com.lovo.classes;import java.util.Scanner;public class day5Test { public static void main ...
 - Java的课堂实验
		
题目是:用Aplet创建一个小程序,使得当你的鼠标经过图片时,放歌~ 其中,补充知识:1.MouseMotionListener这个和MouseListener这两个监听器要了解以下 2.Aplet这 ...
 - java实现课堂随机点名小程序
		
通过jdbc连接数据库实现读取学生花名册进行随机点名! ~jdbc连接mysql数据库 || 注释部分代码可通过读取.txt文档实现显示学生信息 ~通过点击开始按钮实现界面中间标签不断更新学生信息 ...
 
随机推荐
- requirejs源码分析: define 方法
			
define = function (name, deps, callback) { var node, context; //Allow for anonymous modules ...
 - Centos---linux配置 集群搭建
			
网络配置 1.创建虚拟机mini1: 1.1.网络配置 NAT网络模式模式 直接修改 /etc/sysconfig/network-script/ifcfg-eth0 输入service netwo ...
 - php的异常和处理
			
常见错误处理类型 语法错误 环境错误 逻辑错误 常见错误级别 Deprecated 最低级别的错误 不推荐,不建议,使用一些过期函数的时候会出现,程序继续执行 Notice 通知级别的错误 使用一些未 ...
 - PAT 天梯赛 L1-038. 新世界 【水】
			
题目链接 https://www.patest.cn/contests/gplt/L1-038 AC代码 #include <iostream> #include <cstdio&g ...
 - 026_默认的MapReduce Driver(最小驱动问题)
			
1. 最小配置的MapReduce Driver 读取输入文件中的内容,输出到指定目录的输出文件中,此时文件中的内容为: Key---输入文件每行内容的起始位置. Value---输入文件每行的原始内 ...
 - P3794 签到题IV
			
题目 P3794 签到题IV 来切道水题放松一下吧 做法 或是单调不下降的,\(gcd\)是单调不上升的 \(a_i≤5×10^5\)分成权值不同的块数应该很小,所以随便乱搞就出来了 My compl ...
 - 【iOS和HTML 5交互】iOS中加载html5调用html方法和修改html5内容
			
近期项目开发中用到了这方面的技术了,那我们一起来看看. 1.利用webView控件加载本地html5或者网络上html5 2.设置控制器为webView的代理,遵守协议 3.实现代理方法webView ...
 - INSPIRED启示录 读书笔记 - 第37章 大众网络服务产品
			
十大要点 1.可用性:大众网络服务产品必须具备良好的用户体验 2.人物角色:按典型特征将用户分类,抽象出有代表性的用户类型(人物角色) 3.扩展性:应该不间断地考虑扩展性问题,永远留有余地,不到万不得 ...
 - 搭建TXManager分布式事务协调者
			
事务分组id 缓存到redis 需要配置连接到自己的 redis地址 启动后:
 - 4950: [Wf2017]Mission Improbable
			
4950: [Wf2017]Mission Improbable Time Limit: 1 Sec Memory Limit: 512 MBSubmit: 608 Solved: 222[Sub ...