教你从实战中领悟继承(中) | 带你学《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面向对象编程文章查看此处

相关文章
|
4天前
|
安全 Java 程序员
《从头开始学java,一天一个知识点》之:控制流程:if-else条件语句实战
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 这个系列为你打造Java「速效救心丸」!每天1分钟,地铁通勤、午休间隙即可完成学习。直击高频考点和实际开发中的「坑位」,拒绝冗长概念,每篇都有可运行的代码示例。明日预告:《for与while循环的使用场景》。 ---
45 19
|
6天前
|
存储 Java 编译器
课时11:综合实战:简单Java类
本次分享的主题是综合实战:简单 Java 类。主要分为两个部分: 1.简单 Java 类的含义 2.简单 Java 类的开发
|
6天前
|
Oracle Java 关系型数据库
课时37:综合实战:数据表与简单Java类映射转换
今天我分享的是数据表与简单 Java 类映射转换,主要分为以下四部分。 1. 映射关系基础 2. 映射步骤方法 3. 项目对象配置 4. 数据获取与调试
|
2月前
|
Java
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
159 15
|
2月前
|
存储 缓存 Java
Java中的分布式缓存与Memcached集成实战
通过在Java项目中集成Memcached,可以显著提升系统的性能和响应速度。合理的缓存策略、分布式架构设计和异常处理机制是实现高效缓存的关键。希望本文提供的实战示例和优化建议能够帮助开发者更好地应用Memcached,实现高性能的分布式缓存解决方案。
49 9
|
2月前
|
Java 数据安全/隐私保护 开发者
【潜意识Java】深入理解 Java 面向对象编程(OOP)
本文介绍了Java中的面向对象编程(OOP)核心概念,包括封装、继承、多态和抽象。封装通过访问控制保护数据,提高安全性;继承支持代码复用,减少冗余;多态实现灵活的行为调用;抽象则隐藏细节,简化接口设计。掌握这些概念有助于编写高效、灵活且易于维护的代码。文章通过实例详细讲解了每个概念在Java中的应用,并总结了它们的优势。
60 3
|
3月前
|
Java
Java基础却常被忽略:全面讲解this的实战技巧!
本次分享来自于一道Java基础的面试试题,对this的各种妙用进行了深度讲解,并分析了一些关于this的常见面试陷阱,主要包括以下几方面内容: 1.什么是this 2.this的场景化使用案例 3.关于this的误区 4.总结与练习
|
14天前
|
存储 监控 Java
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
136 60
【Java并发】【线程池】带你从0-1入门线程池
|
3天前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
50 23
|
10天前
|
Java 调度
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码
当我们创建一个`ThreadPoolExecutor`的时候,你是否会好奇🤔,它到底发生了什么?比如:我传的拒绝策略、线程工厂是啥时候被使用的? 核心线程数是个啥?最大线程数和它又有什么关系?线程池,它是怎么调度,我们传入的线程?...不要着急,小手手点上关注、点赞、收藏。主播马上从源码的角度带你们探索神秘线程池的世界...
75 0
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码

热门文章

最新文章