Java高级程序设计 高级程序
设计 宋成明
45329261@qq
第8章 常用Java类
String类的
常用方法 Random类 集合与映射
TechSupport系统 系统
TechSupport——技术支持,该程序是为用户提供 技术支持的,用户可以在线与技术支持系统交互。
String类的相关方法 类的相关方法
1. startswith方法
public boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始,prefix-前缀。 public boolean startsWith(String prefix, int toffset) 测试此字符串是否以指定的前缀开始, 该前缀以指定索 引开始。 prefix-前缀;toffset-在字符串中开始查找的位置。 练习1:String类中有没有可以判断字符串是否以一个特定的 后缀结尾的方法? 练习2:查阅String类的
文档,找到返回字符串中字符个数的 方法。
String类的相关方法 类的相关方法
2. trim方法
public String trim() 去除字符串开头和结尾的空格。
3. toLowerCase方法
public String toLowerCase() 将字符串中所有字符都转换成小写。
练习3:改进tech-support1程序中的SupportSystem类,使得程 序能够忽略输入字符串前后的空格和大写字母。
String类与 类与StringBuffer类 类与 类
String 类代表不可变字符串,即String对象的内容和长度 是固定的。 对String对象施加的操作并不改变对象实例本身,而是生 成了一个新的实例。 系统为String类对象分配内存是按照对象包含实际字符数 分配。
StringBuffer 类代表可变字符串。 如果修改一个StringBuffer类的字符串,不需要再创建新 的字符串对象,而是直接操作原来的字符串。
系统为StringBuffer类对象分配内存时,除了当前字符所 占空间外,还提供另外16个字符的缓冲区。
Java编译器对 编译器对String对象的优化 编译器对 对象的优化
String a = "ab"; String b = "a" + "b"; System.out.println((a == b)); 以上代码的运行结果如何?
结果4:true 结果3:true 结果2:false 结果1:true b "a" + "b";编译器将这个"a" + "b"作为常量表达式, String a = "ab"创建了新的对象"ab" ,执行String b = "a" + 在编译时进行优化,直接取结果"ab"。 "b"结果b= "ab" ,这里没有创建新的对象,而是从JVM字 “a” + “b” 的结果就是“ab”,这样a、b都是“ab”了,内容一 “b”会生成新的对象“ab”,a、b是不同的两个对象, String ab)是比较对象引用,因此不相等,结果false。 符串常量池中获取之前已经存在的"ab"对象。因此a、b具 样所以“相等”,结果true。 (a == = "ab"; String b = "ab"; System.out.println((a == b)); 然后根据3的解释,得到结果true。 有对同一个String对象的引用,两个引用相等,结果true。
增加随机行为——Random类 类 增加随机行为
随机与伪随机
计算机很明确地定义了它的运作方式,所有
的计算都是 可预测的和可重复的,在
计算机上很难产生真正意义上 的随机行为。 研究人员使用很多算法来产生看似随机的数的序列。这 些数并不是真正的随机数,而是依据一定的复杂规则产 生的,因此被称作伪随机数。 在Java语言中,随机数的产生是由类库中的类实现的。
增加随机行为——Random类 类 增加随机行为
Random类
Random randomGenerator; randomGenerator = new Random(); int index = randomGenerator.nextInt(); System.out.println(index);
练习4:定义一个RandomTester类,在该类中实现两个方法: printOneRandom(打印输出一个随机数);printMultiRandom(int howMany)(输出指定个数的随机数)。这个类应该只创建一个 Random类的实例(在构造器中),然后把这个实例保存在一个字段 中。注意不要在每次产生新随机数的时候都创建新的Random实例。
增加随机行为——Random类 类 增加随机行为
在有限范围内产生随机数
public int nextInt(int n) 该方法返回一个伪随机