1、类中定义类

(1)当一类中的成员,作为另外一种事物的时候,这个成员就可以定义为内部类.

(2)分类:①成员内部类

②静态内部类

③私有内部类

④局部内部类

⑤匿名内部类

⑥Lambda表达式

2、成员内部类

(1)一个类定义在外部类的成员位置就为成员内部类,具有类的特点,继承,实现...成员内部类具有成员的特点,被成员修饰符修饰。

(2)注意:①在成员内部类中不能定义静态内容,除了静态常量,静态内部类才能任意定义静态内部。

②在成员内部类中可以使用外部类中的成员,包括私有的,静态的。

③在外部类中可以跟随成员内部类的对象使用成员内部类的成员。

③成员内部类的对象性需要通过外部类对象构建  外部类名.内部类类名 引用 = new 外部类().new 内部类()。

⑤跟随内部类的对象使用内部类的成员,注意访问权限。

3、静态内部类:

(1)可以定义静态内容(成员),成员内部类中不可以直接定义静态内容除了静态常量以外。

(2)静态内部类中可以直接使用外部类中静态内容,需要通过外部类对象使用外部类中的成员(因为内部类本身是静态的)。

(3)外部类中可以直接通过内部类对象使用内部类成员,可以通过内部类的类名使用内部类静态内容。

(4)其他类中使用静态内部类中内容:

①静态内部类中的静态内容 : 外部类类名.内部类类名.静态内容

②静态内部类中的成员内容: new 外部类类名.内部类类名();  通过内部类对象调用它成员。

4、私有内部类

只能在当前外部类中通过内部类对象使用。

5、局部内部类

(1)不能被成员修饰符等修饰(public,private,protected,static)。

(2)局部内部类中不能定义静态内容,除了静态常量。

(3)局部内部类中可以直接使用外部类成员,可以使用所在方法中的局部变量。

(4)局部内部类智能在当前所在的方法中通过内部类对象使用,其他位置无法使用。

(5)在局部内部类中使用了所在方法中的局部变量|形参,这个局部变量会默认被final修饰。

(6)jdk8开始默认被final修饰,jdk7及之前需要显示被final修饰

6、匿名内部类

(1)作用: 用来简化没有本身自己作用的实现类 | 子类。

(2)上层 : 接口 | 抽象类。

7、Lambda 表达式

jdk8新增lambda表达式

(1)作用: 为了简化匿名内部类对象

(2)前提: 函数式接口

(3)函数式接口 : 只有一个必须被重写的抽象方法的接口

(4)强制检测是否为函数式接口:注解: @FunctionalInterface

(5)语法:

()->{}

() :  匹配要重写的抽象方法的参数列表

-> : 箭头函数  箭头符号

{} : 要重写的抽象方法的方法体

8、异常:

程序无法正常执行完毕

(1)异常体系:

Throwable

/       \

Error      Exception

(2)Error : 错误,一般由虚拟机生成并脱出,无需要程序猿管理

(3)Exception : 异常

①CheckedException 编译时异常|检查时异常:  发生在程序编译期间程序如果遇到编译时异常没有处理,程序无法正常运行

②RuntimeException 运行时异常 : 发生程序运行期间一般可以通过增强程序健壮性的代码处理 if

(4)注意 :如果程序遇到异常没有处理,无法继续执行

(5)常见的一些运行时异常:

①空指针异常 NullPointerException

②数组越界异常 ArrayIndexOutOfBoundsException

③数组长度负数异常 NegativeArraySizeException

④类型转换异常 ClassCastException

⑤数学异常 ArithmeticException

⑥数字格式异常 NumberFormatException

10、Java——内部类的更多相关文章

  1. Java内部类final语义实现

    本文描述在java内部类中,经常会引用外部类的变量信息.但是这些变量信息是如何传递给内部类的,在表面上并没有相应的线索.本文从字节码层描述在内部类中是如何实现这些语义的. 本地临时变量 基本类型 fi ...

  2. Java内部类详解

    Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...

  3. java 内部类 *** 最爱那水货

    注: 转载于http://blog.csdn.net/jiangxinyu/article/details/8177326 Java语言允许在类中再定义类,这种在其它类内部定义的类就叫内部类.内部类又 ...

  4. Java内部类小程序(成员内部类,静态内部类,匿名内部类)

    /** * 测试java内部类(成员内部类,静态内部类,匿名内部类) * 局部内部类不常用,就不写了. * @package :java05 * @author shaobn * @Describe ...

  5. [转] Java内部类详解

    作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...

  6. JAVA内部类(转)

    源出处:JAVA内部类 在java语言中,有一种类叫做内部类(inner class),也称为嵌入类(nested class),它是定义在其他类的内部.内部类作为其外部类的一个成员,与其他成员一样, ...

  7. java 内部类(摘抄自网络)

    Java内部类 1.内部类分为成员内部类.静态嵌套类.方法内部类.匿名内部类. 几种内部类的共性: A.内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类 ...

  8. 【转】Java内部类详解

    一.内部类基础 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一 ...

  9. 从字节码的角度看Java内部类与外部类的互相访问

    Java中non-static内部类为何可以访问外部类的变量?Java中外部类又为何可以访问内部类的private变量?这两个问题困扰过我一段时间,查了一些网上的答案,大多从“闭包”概念入手,理解起来 ...

  10. Java 内部类.md

    Java 内部类 学习自 <Java编程思想> Overview 什么是内部类? Thinking In Java 中如此定义: 将一个类的定义放在里另一个类的定义的内部,这就是内部类. ...

随机推荐

  1. TVM源码框架安装方法

    TVM源码框架安装方法 本文提供如何在各种系统上从零构建和安装TVM包的说明.它包括两个步骤: 首先从C++代码中构建共享库(linux的libtvm.so,macOS的libtvm.dylib和wi ...

  2. Redis-持久化策略

    redis是一个内存数据库,一旦服务器宕机,内存中的数据将全部丢失.所以,对 Redis 来说,实现数据的持久化,避免从后端数据库中进行恢复,是至关重要的. 目前,Redis 的持久化主要有两大机制, ...

  3. k8s-记一次安全软件导致镜像加载失败

    近期在现场项目中遇到了一个镜像加载失败的问题,相关报错如下: Error processing tar file(exit status 1): symlink . /usr/bin/X11: per ...

  4. vagrant+java+springcloud+redis+zookeeper镜像下载(&制作详解)

    文章很长,建议收藏起来,慢慢读! 备注:持续更新中..... 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 + 涨薪必备 疯 ...

  5. 禁止特定IP访问Oracle数据库

    通过使用数据库服务器端的sqlnet.ora文件可以实现禁止指定IP主机访问数据库的功能,这对于提升数据库的安全性有很大的帮助,与此同时,这个技术为我们管理和约束数据库访问控制提供了有效的手段 在sq ...

  6. Linux Oracle 中文乱码解决

    1.Linux操作系统Oracle11g设置别名的时候发现中文乱码 2.直接修改环境变量 添加 export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 3.执行命令使环境变 ...

  7. 用jquery通过点击事件把下拉列表币种的值传给文本框1,再通过文本框1的币种名称用if转化为币别传值给文本框2保存

    <script src="https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js"></script>& ...

  8. Blazor Server 和 WebAssembly 应用程序入门指南

    翻译自 Waqas Anwar 2021年3月12日的文章 <A Beginner's Guide To Blazor Server and WebAssembly Applications&g ...

  9. Linux系统安装-C7

    1.安装部署操作系统 (1)创建虚拟机,加载系统镜像 (2)进入系统引导界面进行配置 补充:centos7系统网卡名称 默认系统的网卡名称为 eth0 eth1 –centos6 默认系统的网卡名称为 ...

  10. .NET Core如何全局获取用户信息?

    前言 在增删改查中的增和改操作中,我们经常需要更新数据流的创建人和修改人,无论我们项目是基于DDD,抑或是简单仅有服务层,此时我们都需要获取用户信息,那么我们只能将用户标识从控制器层层传递到服务或仓储 ...