JAVA-代码块和内部类

news2024/11/28 12:35:02

文章目录

目录

文章目录

前言

1.代码块

1.1什么是代码块?

1.2代码块的分类及作用:

1.静态代码块

2.成员代码块(又叫做构造代码块)

3.局部代码块

2.内部类

2.1 什么是内部类?

2.2 内部类的分类

1.成员内部类

2.静态内部类

3.匿名内部类

4.局部内部类

总结


前言

作者简介:我是最爱吃兽奶,大家好啊! 又见面了

内容简介: 今天给大家聊一下什么是内部类,什么又是代码块

那么,跟着我的脚步来一起看看吧


1.代码块

1.1什么是代码块?

代码块也叫初始化块 属于类中的成员,类似于方法,将逻辑语句封装在方法体中,通过{    }连接起来。

 简而言之,就是代码被放在一对大括号中

1.2代码块的分类及作用:

代码块可以分为三类

1.静态代码块

在下面我会创建Person两个对象,大家可以猜猜控制台打印了什么?

实例化了两个对象,打印了一句静态代码快!

(上面关于类的加载相关的知识可以敬请期待博主的后续创作)


2.成员代码块(又叫做构造代码块)

成员代码块其实和普通的成员差不多

 

 下面是改进后的代码

 清爽多了没?


3.局部代码块

局部局部,真应景啊! 这个代码块非常局限

背景:早期计算机刚推出的时候,内存空间非常小,这个时候人们就发明了局部代码块,在一个方法中如果定义的变量不是从头用到尾的话,那么可以用局部代码块把开头和结尾的代码包起来,这样一来,这些变量就会节省内存,现在来看局部代码块好像一点用都没了,因为我们现在计算机的内存和磁盘空间已经不可同日而语

还是带着大家简单看下吧

public int sum(){
    int sum = 0;
    {
        int a = 10;
        int b = 20;
        sum = a+b;
    }
    return sum;
}

求和,返回a+b的值,大家凑活着看,这东西几乎没用


2.内部类

2.1 什么是内部类?


大家先来看看下面的例子 

 


汽车的发动机和汽车都可以看做是类,但是汽车的发动机类单独存在没什么意义,所以我们可以直接将其定义为内部类

2.2 内部类的分类


1.成员内部类

定义在成员位置的类叫做成员内部类

/*
 * 成员内部类,属于外部类的成员
 * 获取成员内部类的两种方式
 * 方式一:
 *    当成员内部类被private修饰时,外部类编写方法,对外提供内部类对象
 * 方式二:
 *    当成员内部类没有被private修饰时,直接创建对象
 * 格式: outer.inner 对象名 = new outer(). new inner();
 * */

 方式一

public class OuterClass {
    String name;
    public innerClass getInnerClass(){
        return new innerClass();
    }

    private class innerClass{
        public String name = "内部类";
    }
}

class TestDemo{
    public static void main(String[] args) {
        OuterClass oc = new OuterClass();
        oc.getInnerClass();
    }
}

方式二

public class OuterClass {

    class innerClass{
        public String name = "内部类";

    }

}


class TestDemo{
    public static void main(String[] args) {
        OuterClass.innerClass oi = new OuterClass().new innerClass();
        System.out.println(oi.name);
    }
}

2.静态内部类

静态静态,表名是由static修饰的,不依赖于对象

调用直接用类名调用即可

 代码如下

public class outer {

    static class inner{
        String name = "静态内部类";
    }

}

class Test{
    public static void main(String[] args) {
        outer.inner oi = new outer.inner();
        System.out.println(oi.name);
    }
}

3.匿名内部类

匿名匿名,它难道是没有名字吗?

其实不然,它其实是有名字的,内存会为其分配一个特定的编号,想要了解吗? 往下看!

接下来我们来看匿名内部类的使用

下面可能会有点抽象,但是我相信你这么聪明一定能听懂!

//上面eat方法定义不太好,已更改为eatMilk
interface eat{
   public abstract void eatMilk();

}
class B implements eat{
    @Override
    public void eatMilk() {
        System.out.println("兽宝乖,开饭了");
    }
}

class Test{
    public static void main(String[] args) {
        B b = new B();
        b.eatMilk();
    }
}

 如果每次需要使用接口中抽象方法时就实现一个B这样的类显然不现实

这里就引出了匿名内部!

格式

new 接口/类名(参数1, 参数2...)

{

           实现方法1(){ } 

           实现方法2(){ }

            ...... 

};

 System.out.println(eat.getClass()); //获取类名

大家有兴趣自行尝试

4.局部内部类

局部内部类就是定义在方法中的类

大家自行尝试,用处不大


总结


以上就是我们这篇博客讲的主要内容,大家需要重点掌握静态代码块,构造代码块,匿名内部类,成员内部类,这些在以后的学习中会被频繁的用到。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/512837.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL索引优化(超详细)

Mysql索引优化 1 索引介绍 1.1 什么时MySQL的索引 ​ MySQL官方对于索引的定义:索引是帮助MySQL高效获取数据的数据结构。 ​ MySQL在存储数据之外,数据库系统中还维护着满足特定查找算法的数据结构,这些数据结构以某种引用(指向)表中的数据&#xff…

Prometheus

Prometheus简介 prometheus是一个监控、告警的开源系统。Prometheus收集并存储时序的指标数据。指标数据存储伴随一个timestamp和可选择key-values 队列标签 Prometheus特性: 一个时序的多维数据模型,被mertic name和 key/value pairs标签唯一定义 P…

将DenseNet换成Resnet——更换深度学习骨干网络

最近我在学习一个手写公式识别的网络,这个网络的backbone使用的是DenseNet,我想将其换成ResNet 至于为什么要换呢,因为我还没换过骨干网络,就像单纯拿来练练手,增加我对网络的熟悉程度,至于会不会对模型的性…

【时间序列数据挖掘】ARIMA模型

目录 0、前言 一、移动平均模型MA 二、自回归模型AR 三、自回归移动平均模型ARMA 四、自回归移动平均模型ARIMA 【总结】 0、前言 传统时间序列分析模型: ARIMA模型是一个非常灵活的模型,对于时间序列的好多特征都能够进行描述,比如说平…

5.11黄金最新行情走势分析及多空交易策略

近期有哪些消息面影响黄金走势?本周黄金多空该如何研判? ​黄金消息面解析:北京时间周三(5月10日)20:30,美国劳工部公布4月通胀报告,整体与核心CPI年率都走低,支持美联储6月份保持利率不变。数据显示&…

RabbitMQ详解(一):Linux安装

消息队列概念 消息队列是在消息的传输过程中保存消息的容器。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。 常见的消息队列 RabbitMQ 基于AMQP(高级消息队列协议)基础上…

不要轻易放弃丢失的U盘文件夹数据,这里有按文件夹恢复数据的技巧

U盘,全名叫USB闪存盘,是一种便携式的存储设备,是一种可以插入到电脑等电子设备上进行数据传输和存储的硬件设备。U盘的使用方便、速度高、存储容量大、稳定性高,因此被广泛用于数据备份、文档传输、音频视频存储等方面。但是使用过…

easyrecovery免费版2023最新电脑数据恢复软件

通常,许多人会将工作或生活中的数据存储在我们的计算机上。很多时候,由于我们的误操作或其他一些问题,很容易错误地删除一些文件和数据。特别是,一些计算机故障总是会导致数据丢失,这是非常麻烦的。当需要重新安装系统…

【TA100】5 纹理的秘密

1 是什么? 2 为什么使用纹理 3 纹理管线 纹理投影 展开UV到UV坐标系 模型坐标> uv坐标 > 乘分辨率(256 256) > 颜色采样 4 纹理模式 重复,镜像重复,边界拉伸,填充颜色 5 采样模式 它决定了当纹理由于变换而产生拉伸时&a…

go小技巧(易错点)集锦

目录 len的魔力评论区大佬解答答案详解 结构体是否相等答案解析:结构体比较规则举例 常量的编译我的答案标准答案内存四区概念: new关键字答案 iota的魔力结果解析可跳过的值定义在一行中间插队 小结iota详解iota 原理iota 规则依赖 const按行计数多个io…

云数据库技术沙龙|多云多源下的数据复制技术解读-NineData

摘要:随着数据智能时代的到来,多云多源架构下的数据管理是企业必备的基础设施,我们认为数据存取、数据集成与分发、数据安全与数据质量是基础,也是走向多云多源架构的起点。本议题介绍云原生的多云多源数据管理NineData&#xff0…

PlSql存储过程基础

目录儿 常用指令1. 什么是PLSQL语言2. PLSQL程序结构2.1 第一个程序 HelloWord:2.2 执行程序2.2.1 在工具中执行2.2.2 在sqlplus客户端中执行(命令行) 3. 变量3.1 普通变量3.2 引用型变量3.3 记录型变量 4. 流程控制4.1 条件分支4.2 循环 5. 游标5.1 定义5.2 语法5.3 游标的属性…

或许你需要这套uni-app打包android与ios流程

1、hbuilder每个账户的每日云打包有上限次数限制,超出次数要么换账户要么换成本地打包(uni-app提供了足够多云端的打包次数) 2、android打包,也就是apk包 优先搞明白两个需求: 、android包名是否为默认值,如果是默认值&#xf…

基于轻量化深度学习网络的工业环境小目标缺陷检测

源自:控制与决策 作者:叶卓勋 刘妹琴 张森林 摘 要 工业环境下表面缺陷检测是质量管理的重要一环, 具有重要的研究价值.通用检测网络(如YOLOv4)已被证实在多种数据集检测方面是有效的, 但是在工业环境的缺陷检测仍需要解决两个问题: 一是缺陷实例在…

【接口测试】

【接口测试】 1、分层测试理论: UI测试(测试成本最高,发现BUG时间最晚) 接口测试 单元测试 2、协议分析工具 1)网络监听 TcpDump Wireshark 2)协议客户端工具 curl、postman 3)代理Pr…

phpstorm+phpstusy配置xdebug

真心觉得配置好麻烦呀 phpstorm版本: php版本用的7.3.4nts phpstudy版本:8.1.3 先下载xdebug,我用的是php_xdebug-3.1.6-7.3-vc15-nts-x86_64,phpstudy自带的那个xdebug我配置完不起作用 把下完的xdebug放到php下etc目录里,并改名为php_x…

C语言小项目之三子棋

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多C语言知识   🔝🔝 三子棋 1. 前言📕2. 思…

【英】考虑多能负荷不确定性的区域综合能源系统鲁棒规划(MatlabPython代码)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

寅家科技完成近亿元B1轮融资,加速高阶智能驾驶布局

近日,寅家科技宣布完成近亿元人民币B1轮融资,本轮融资由东方富海、深创投、深圳高新投联合投资,所募资金主要用于公司高阶智能驾驶技术产品的研发迭代,以及智能驾驶产品量产、海外市场开拓,从而进一步提升核心产品的市…

Solow模型推导模拟

Solow模型推导模拟 文章目录 Solow模型推导模拟[toc]1 Solow模型推导2 Solow模型模拟 1 Solow模型推导 在存在资本折旧、技术进步和人口增长条件下,有效劳动人均资本为 k ˙ ( t ) K ˙ ( t ) A ( t ) L ( t ) − K ( t ) [ A ( t ) L ( t ) ] 2 [ A ( t ) L ˙ …