使用案例回顾类库相关知识(上) | 带你学《Java语言高级特性》之四十三

简介: 回顾之前学习的类库相关知识,我们已经对其基本概念与简单使用有了一个较为全面的了解,现在让我们一起来结合具体的一些案例巩固一下StringBuffer类和Random类的相关内容吧。

上一篇:使用红黑树实现节点增减的平衡修复 | 带你学《Java语言高级特性》之四十二
回顾之前学习的类库相关知识,我们已经对其基本概念与简单使用有了一个较为全面的了解,现在让我们一起来结合具体的一些案例巩固一下StringBuffer类和Random类的相关内容吧。

【本节目标】
通过阅读本节内容,你将结合相关案例场景进行功能实现,复习StringBuffer类,完成对字符串的各种操作与随机,复习Random类并实现抛硬币的小demo,进一步理解与掌握其使用方法。

StringBuffer使用

类库案例分析一

定义一个StringBuffer类对象,然后通过append()方法向对象添加26个小写字母,要求每次只添加一个,共添加26次,然后按照逆序的方式输出,然后删除前5个字符。

本操作主要是训练StringBuffer类中的处理方法,因为StringBuffer的主要特点是允许修改。

public class JavaAPIDemo {
    public static void main(String[] args) throws Exception{
        StringBuffer buf=new StringBuffer();
        for (int x='a';x<='z';x++){     //直接循环设置
           buf.append((char)x);  //保存字符
        }
        buf.reverse().delete(0,5);   //反转处理
        System.out.println(buf);  //utsrqponmlkjihgfedcba
    }
}

因为StringBuffer的内容是允许修改的,而String内容不允许修改,现在的程序是一个单线程的开发,所以不需要去考虑所谓的并发访问问题。

随机数组

类库案例分析二

利用Random类产生5个1~30之间(包括1和30)的随机整数。

Random产生随机数的操作之中会包含有数字0,所以此时不应该存在有数字0。

import java.util.Arrays;
import java.util.Random;
public class JavaAPIDemo {
    public static void main(String[] args){
        int result [] =NumberFactory.create(5);
        System.out.println(Arrays.toString(result)) ;
    }
}  
class NumberFactory{
    private static Random random = new Random() ;
     /**
     * 通过随机数来生成一个数组的内容,该内容不包括有0
     * @param len 要开辟的数组大小
     * @return 包含有随机数的内容
     */
    public static int [] create(int len) {
        int data [] = new int[len] ;   //开辟新的数组
        int foot = 0;
        while (foot < data.length) {
             int num = random.nextInt(30) ;
             if(num != 0) {
                 data[foot ++]= num ; //保存数据
             }
        }
        return data;
    }
}

执行结果:
[4, 2, 7, 22, 12]

扔硬币

类库案例分析三

编写程序,用0~1之间的随机数来模拟扔硬币实验,统计扔1000次后出现正、反面的次数并输出。

import java.util.Random;
public class JavaAPIDemo {
    public static void main(String[] args){
        Coin coin = new Coin();
        coin.throwCoin(1000);
        System.out.println("正面出现次数:"+ coin.getFront()+"、背面出现次数:"+ coin.getBack()) ;
    }
}
class Coin{     //模拟硬币扔的操作
    private int front ;   //保存正面次数
    private int back ;   //保存背面的次数
    private Random random = new Random();
    /**
     *扔硬币的处理
     * @param num 扔硬币的执行次数
     */
    public void throwCoin(int num) {
        for(int x=0; x < num; x ++) {
           int temp=random.nextInt(2);
           if (temp == 0) {
              this.front ++ ;
           }else {
               this.back ++ ;
           }
        }
     }
     public int getFront() {
         return this.front ;
     }
     public int getBack() {
         return this.back ;
     }
}

执行结果:
正面出现次数:485、背面出现次数:515

想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:使用案例回顾类库相关知识(中) | 带你学《Java语言高级特性》之四十四
更多Java面向对象编程文章查看此处

相关文章
|
20天前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
47 2
|
3天前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
14 4
|
9天前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
39 3
|
11天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
26 2
|
12天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
10 2
|
18天前
|
存储 Java API
优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。
【10月更文挑战第19天】本文介绍了如何优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。内容包括Map的初始化、使用Stream API处理Map、利用merge方法、使用ComputeIfAbsent和ComputeIfPresent,以及Map的默认方法。这些技巧不仅提高了代码的可读性和维护性,还提升了开发效率。
39 3
|
17天前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
13 1
|
18天前
|
存储 安全 Java
Java Map新玩法:深入探讨HashMap和TreeMap的高级特性
【10月更文挑战第19天】Java Map新玩法:深入探讨HashMap和TreeMap的高级特性,包括初始容量与加载因子的优化、高效的遍历方法、线程安全性处理以及TreeMap的自然排序、自定义排序、范围查询等功能,助你提升代码性能与灵活性。
23 2
|
24天前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
41 3
|
27天前
|
移动开发 Java 大数据
深入探索Java语言的核心优势与现代应用实践
【10月更文挑战第10天】深入探索Java语言的核心优势与现代应用实践
42 4
下一篇
无影云桌面