当前课程知识点:Java语言程序设计 >  第五章 面向对象:接口与嵌套类 >  5.7 嵌套类 >  5.7.2 局部类

返回《Java语言程序设计》慕课在线视频课程列表

5.7.2 局部类在线视频

5.7.2 局部类

/*
 * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *   - Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *
 *   - Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 *   - Neither the name of Oracle or the names of its
 *     contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */ 
 
public class LocalClassExample {
  
    static String regularExpression = "[^0-9]";  //正则表达式,代表“除了0到9的数字字符”
  
    public static void validatePhoneNumber(String phoneNumber1, String phoneNumber2) {
      
        final int numberLength = 10; //假定正确的电话号码包含且仅包含10个数字
        
        // Valid in JDK 8 and later:
       
        // int numberLength = 10;
       
        class PhoneNumber {
            
            String formattedPhoneNumber = null;

            PhoneNumber(String phoneNumber){
                String currentNumber = phoneNumber.replaceAll(regularExpression, "");//将所有非数字字符替换为空字符
                if (currentNumber.length() == numberLength)
                    formattedPhoneNumber = currentNumber;
                else
                    formattedPhoneNumber = null;
            }

            public String getNumber() {
                return formattedPhoneNumber;
            }
            
            // Valid in JDK 8 and later:

//            public void printOriginalNumbers() {
//                System.out.println("Original numbers are " + phoneNumber1 +
//                    " and " + phoneNumber2);
//            }
        }

        PhoneNumber myNumber1 = new PhoneNumber(phoneNumber1);
        PhoneNumber myNumber2 = new PhoneNumber(phoneNumber2);
        
        // Valid in JDK 8 and later:

//        myNumber1.printOriginalNumbers();

        if (myNumber1.getNumber() == null) 
            System.out.println("First number is invalid");
        else
            System.out.println("First number is " + myNumber1.getNumber());
        if (myNumber2.getNumber() == null)
            System.out.println("Second number is invalid");
        else
            System.out.println("Second number is " + myNumber2.getNumber());

    }

    public static void main(String... args) {
        validatePhoneNumber("123-456-7890", "456-7890");
    }
}


下一节:5.7.3 匿名类

返回《Java语言程序设计》慕课在线视频列表

Java语言程序设计课程列表:

第零章 如何学习本课程

-课程学习概述

-Java语言程序设计学习方法

-考核方式

-课程学习资源(2021春更新)

-课程教材与参考资料

-课程FAQ

第一章 绪论

-1.1 Java应用、历史与基本特点

--1.1.1 Java应用、历史与基本特点

-1.2 第一个Java程序

--1.2.1 第一个Java程序

--代码解析:HelloWorld

-1.3 Java虚拟机、JRE、JDK等

--1.3.1 Java虚拟机、JRE与JDK

-1.4 课程学习目标与方法

--1.4.1 学习目标与方法

--思考:怎么学习Java?

-1.5 实验指导:开发环境安装与配置

--1.5.1 Java的安装与配置

--1.5.2 HelloWorld FAQ

--1.5.3 Eclipse入门

--思考:java HelloWorld命令的含义

-1.6 Java常用类

--1.6.1 Java常用类的使用

--1.6.2 Scanner类的使用

--1.6.3 线上实验平台(PTA)使用方法

-第1章测验 绪论

-第1章 编程题

- 第1章 课件

第二章 Java基本语法

-2.1 Java基本语法概述

--2.1.1 Java基本语法概述

-2.2 数据类型与变量

--2.2.1 变量与数据类型

--2.2.2 数据类型转换与变量作用域

--2.2.3 小练习:表达式正误判断

--思考:分析如下代码输出并解释原因

-2.3 运算符

--2.3.1 运算符1:算数运算符、赋值运算符、比较运算符

--2.3.2 运算符2:逻辑运算符、优先级

-2.4 选择结构

--2.4.1 if语句

--2.4.2 switch语句

-2.5 循环结构

--2.5.1 while与do-while

--2.5.2 for循环、循环嵌套

--2.5.3 循环结构跳转语句

--思考:循环的使用

-2.6 方法

--2.6.1 方法的定义

--2.6.2 方法的重载

-2.7 数组与数组列表

--2.7.1 数组的定义

--2.7.2 数组的常见操作

--2.7.3 多维数组

--2.7.4 强大的Arrays数组工具类

--2.7.5 数组列表ArrayList

-2.8 引用数据类型

--2.8.1 引用类型初探与字符串

--2.8.2 引用类型初探与字符串常量池、不可变性

--2.8.3 引用类型之包装类

--思考:引用数据类型与基本数据类型的区别是什么?

-第2章测验 Java基本语法

-第2章 课件

第三章 面向对象基础

-3.1 面向对象基本概念

--3.1.1 面向对象基础概念

--3.1.2 类与对象

--3.1.3 常用类的使用

--3.1.4 对象的引用

-3.2 封装与模块化

--3.2.1 封装与模块化

-3.3 对象的初始化

--3.3.1 对象的初始化

--练一练:编写Circle类并分享你的代码

--思考:对象的初始化

--3.3.2 线上实验平台(PTA)上提交多个类的方法

-3.4 static与final

--3.4.1 static、类变量与类方法

--练一练:static关键字

--3.4.2 static与final

--思考:什么时候使用static?

-3.5 使用包管理类

--3.5.1 包(package)机制

--练一练(可选):使用git下载代码仓库

--3.5.2 管理源文件与class文件(命令行)

--练一练:在Eclipse中查看String等常用类的代码

-3.6 案例:面向对象之类的设计

--3.6.1 案例:面向对象设计初探(购物车)

--思考:购物车案例中的代码有何可以改进的地方?

--练一练:阅读Employee相关代码并改进

-第3章测验 面向对象基础

-第3章 课件

第四章 面向对象:继承与多态

-4.1 面向对象继承

--4.1.1 继承基本概念

--练一练:设计一个Triangle三角形类与Shape形状类,并用UML类图进行描述

--4.1.2 Object类-所有类的父类

--练一练:equals方法

-4.2 继承与覆盖

--4.2.1 覆盖(Override)

--4.2.2 super关键字

--练一练:覆盖、super相关代码阅读并回答问题

-4.3 继承与多态

--4.3.1 继承与多态

--练一练:继承与多态

--4.3.2 类型转换与instanceof运算符

--练一练:使用instanceof筛选对象

-4.4 访问控制符

--4.4.1 访问控制符

-4.5 final关键字

--4.5.1 final关键字-阻止继承

--思考:final关键字的使用

-4.6 抽象类

--4.6.1 抽象类(abstract)

-4.7 面向对象设计

--4.7.1 使用继承设计类

--4.7.2 案例:面向对象设计(使用继承)

--4.7.3 UML类图

--思考:阅读Manager与Employee代码并回答问题

-4.8 实验指导:Eclipse的使用(自动代码生成)

--4.8.1 Eclipse的使用(自动生成代码)

--讨论:说说你使用的IDE上你最喜欢的5个快捷键

-第4章测验 面向对象(继承与多态)

-第4章 课件

第五章 面向对象:接口与嵌套类

-5.1 接口基本概念

--5.1.1 接口基本概念

-5.2 常用接口

--5.2.1 Comparable接口

--练一练:Comparable接口

--思考:使用Comparable接口改造Shape及其子类

--5.2.2 Comparator接口

--思考:Comparable接口与Comparator接口的区别

--5.2.3 Cloneable接口(可选)

--思考(可选):Cloneable接口

-5.3 使用接口还是继承

--5.3.1 使用接口还是使用继承

-5.4 案例:DAO模式

--5.4.1 案例:DAO模式

--思考:说说DAO模式

-5.5 总结:接口

--5.5.1 总结:接口

-5.6 Java8接口新特性:默认方法

--5.6.1 Java8接口新特性:默认方法

-5.7 嵌套类

--5.7.1 嵌套类基本概念

--思考:静态嵌套类的使用

--5.7.2 局部类

--5.7.3 匿名类

--5.7.4 Java8中匿名类语法改进

-5.8 Lambda表达式

--5.8.1(可选) Lambda表达式

-5.9 案例:购物车改进

--5.9.1 面向对象案例:购物车改进

-第5章测验 面向对象(接口与嵌套类)

-第5章 课件

第六章 集合框架

-6.1 集合概述

--6.1 集合框架概述

-6.2 List接口

--6.2.1 ArrayList

--6.2.2 LinkedList

--思考:ArrayList与LinkedList的区别

-6.3 Iterator迭代器

--6.3.1 迭代器(Iterator):遍历集合

--思考:使用迭代器进行遍历

-6.4 Set接口

--6.4.1 Set接口

--练一练:HashSet

-6.5 Map接口

--6.5.1 Map接口

--练一练:Map接口应用

-6.6 泛型

--6.6.1 泛型

--思考(可选):ArrayList源代码分析

-6.7 集合应用

--6.7.1 一对多映射

--6.7.2 多对多映射

--思考:使用集合来改造你的购物车

--思考:随机生成大量不同的id

-6.8 集合其他常用方法

--6.8.1 集合常用方法

--思考(可选):集合常用方法深入

-可选:6.9 Collections工具类

--可选:Collections

--思考(可选):Collections

-可选:6.10 Java8集合新特性

--可选:Java8新增的集合相关语法

-第6章测验 集合框架

-第6章 课件

第七章 异常

-7.1 基本概念

--7.1.1 程序错误与异常

--7.1.2 异常对象

--练一练:自己使用代码生成指定异常

-7.2 程序处理机制

--7.2.1 异常处理机制

--思考:异常处理机制

-7.3 异常继承层次

--7.3.1 异常继承层次

--思考:识别异常类型

-7.4 异常处理:try...catch...finally

--7.4.1 try...catch

--7.4.2 finally

--练一练:try...catch...finally综合练习

-7.5 异常处理:throws与throw关键字

--7.5.1 throws:声明抛出异常

--7.5.2 throw:手动抛出异常

--思考:throw与throws的使用

-7.6 不要滥用异常

--7.6.1 不要滥用异常

--思考:不要滥用异常

-第7章测验 异常处理

-第7章 课件

第八章 文件与流

-8.1 概述

--8.1.1 文件与流概述

-8.2 输入流、输出流基本概念

--8.2.1 流的基本概念

-8.3 File类

--8.3.1 File类

-8.4 字节流

--8.4.1 字节流

-8.5 字符流

--8.5.1 字符流

-8.6 缓冲流

--8.6.1 缓冲流

-第8章测验 文件与流

-第8章 课件

5.7.2 局部类笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。