教你从实战中领悟继承(中) | 带你学《Java面向对象编程》之四十三

简介: 本节通过介绍字符串统计算法在两种思路下的不同实现方式,为读者展示了简单实现与结构化设计下的程序的不同。

上一篇:教你从实战中领悟继承(上) | 带你学《Java面向对象编程》之四十二
【本节目标】
通过阅读本节内容,你将对继承有更进一步的理解,并能够灵活结合继承进行结构化程序设计。

案例分析三(字符串统计)

编写程序, 统计出字符串“want you to know one thing”中字母n和字母o的出现次数。
对于本程序而言,最简单的操作方式就是直接在主方法里面定义一个操作,或者直接定义一个新的类进行处理。
范例:定义一个单独的处理类

class StringUtil {
    //返回的第一个内容为字母n的个数,第二个内容为字母o的个数
    public static int [] count(String str) {
        int countData [] = new int [2] ;
        char [] data = str.toCharArray() ;    //将字符串变为字符数组
        for (int x = 0 ; x < data.length ; x ++) {
           if (data[x] == ‘n’ || data[x] == ‘N’) {
              countData[0] ++ ;
           }
           if (data[x] == ‘o’ || data[x] == ‘O’) {
              countData[1] ++ ;
           }
         }
         return countData ;
    }
}
public class JavaDemo{
    public static void main(String args[]) {
        String str = “want you to know one thing” ;
        int result [] = StringUtil.count(str) ;
        System.ou.println(“字母n的个数:” + result[0]) ;
        System.ou.println(“字母o的个数:” + result[1]) ;
    }         
}

image.png
图一 执行结果一

以上的解决方案严格来讲只是一种顺序式的思维模式解决的,假设说现在统计的是字母o或者n的个数,那么还有可能进行各种其它统计的设计。
字符串统计操作:

image.png
图二 统计设计

class StringUtil {
    private String content ;  //需要保存字符串
    public StringUtil(String content) {
        this. content = content;
    }
    public String getContent() {
        return this.content ;
    }
    public String getInfo () {        //默认的信息返回
        return this.getContent(() ;
    }
}
class StringContent extends StringUtil {
    private int nCount ;
    private int oCount ;
    public StringContent (String content) {
        super(content) ;
        this.countChar() ;     //构造方法统计
    }
    public void countChar() {
        char [] data = super.getCount().toCharArray() ;    //将字符串变为字符数组
        for (int x = 0 ; x < data.length ; x ++) {
           if (data[x] == ‘n’ || data[x] == ‘N’) {
              this.nCount ++ ;
           }
           if (data[x] == ‘o’ || data[x] == ‘O’) {
              this.oCount ++ ;
           }
        }
    }
    public int getNCount() {
        return this.nCount ;
    }
    public int getOCount() {
        return this.oCount ;
    }
    public String getInfo() {
        return “字母n的个数:” + this.nCount + “字母o的个数:” + this.oCount ;
    }
}
public class JavaDemo{
    public static void main(String args[]) {
        StringCount sc = new StringCount(“want you to know one thing”) ; 
        System.out.println(sc.getInfo()) ;      
    }         
}

image.png
图二 执行结果二

任何方案都可以,如果采用第一种方案比较直观,但是第二种方案更加适合于结构化的设计。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:教你从实战中领悟继承(下) | 带你学《Java面向对象编程》之四十四
更多Java面向对象编程文章查看此处

相关文章
|
1月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
1月前
|
安全 Java 开发者
告别NullPointerException:Java Optional实战指南
告别NullPointerException:Java Optional实战指南
242 119
|
2月前
|
人工智能 Java API
Java AI智能体实战:使用LangChain4j构建能使用工具的AI助手
随着AI技术的发展,AI智能体(Agent)能够通过使用工具来执行复杂任务,从而大幅扩展其能力边界。本文介绍如何在Java中使用LangChain4j框架构建一个能够使用外部工具的AI智能体。我们将通过一个具体示例——一个能获取天气信息和执行数学计算的AI助手,详细讲解如何定义工具、创建智能体并处理执行流程。本文包含完整的代码示例和架构说明,帮助Java开发者快速上手AI智能体的开发。
993 8
|
2月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
464 12
|
2月前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
437 100
|
2月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
325 0
|
1月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
143 1
|
1月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
160 1
|
2月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案