【一步一步了解Java系列】:对这个系列的总结以及对缺漏内部类知识的补充
看到这句话的时候证明:此刻你我都在努力
加油陌生人
br />个人主页:Gu Gu Study
专栏:一步一步了解Java
喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹
喜欢的话可以点个赞谢谢了。
作者:小闭
一路来的文章
第一篇文章:
记得这个系列是我今年4月29日开始写的,写的是我初始Java的总结,第一篇便是写了Java基本类型与C语言的区别,至于为什么我一开始就跟C语言对标呢?原因有两个:
- 我那时刚学完C语言,对C语言记忆尤为深刻。
- 我初始Java的基本数据类型时我就发现Java有C语言没有的基本类型如:byte,而且char在Java中占2个字节。
不知不觉已经过去了两个月了,这个系列也差不多结束了,之后会是Java实现的数据结构的系列了,在之后就是更高级的Java系列。现在这个系列差一个图书馆系统的博客没有写,不过应该也快写了。
第二篇文章:
这篇文章没想到就是我这个系列里面阅读量最高的一篇,这是万万没想到的。这篇是对基本数据类型的转换得总结。关于什么int转换成double什么什么得,还有Java中得float的类型还得必须加上一个F或f等等。主要就是自动类型转换,强制类型转换,类型提升,以及字符串得转换成int,double等。
第三篇文章:
这篇文章还是不知不觉与C语言进行了对比,讲的是各式各样的得运算符,像简单的算术运算符,赋值和++,逻辑运算符,位运算符,移位运算符等,
记得那时讲解取模时第一次遇到了异常,这可是与C语言大不相同的一个知识点,那时不懂还没学到异常,就简单说是报错哈哈哈。还有就是Java中的double是支持取模运算的,也是和C语言的一个不同呢。
第四、五篇文章
第四篇的阅读量就比较凄惨了,里面的内容也比较简单,简单的逻辑结构,记得逻辑结构我在C语言得文章里是没有写过得,那时就觉得太简单了,但到Java想想还是写一下吧,然后就有了这第四篇文章。里面讲了简单得顺序结构,选择结构,循环结构以及switch语句等等,都是非常简单的结构了。
最深刻的还是,Java中不能用数字代表真假,if里的括号只能用true来表示真,false代表假,这也是和C语言的一个不同吧。
然后第五篇:
也算是回到正常的播放量了吧,这篇主要也是和C语言进行对比,因为这是真的和C语言的不同了,在C语言中函数就是Java中的方法,叫法完全不一样了,但性质差不多,只不过Java面向对象的语言,多了一些限定修饰符。
这篇文章主要讲了方法的意义和形参实参,方法的递归,然后就是新概念方法重载,其实到后面还有一个方法·重写,但是那时没有学到类与对象,所以就没在这篇文章里讲。
第六篇文章:
这篇文章是第一次接触引用这个概念,引用是个新概念,Java中没有指针的学习,但是有引用。
数组就是一个引用类型,记得那时我以为能直接用System.out.println直接打印出来呢,没想到的是直接打印出来的是一个地址,哈哈哈。
还有在Java中数组中让我真正跟感觉到Java的简便,只需点length就可以得到数组的长度,换到C语言就是还得使用sizeof慢慢求呢。这里还学到了现成包Arrays,使用其toString就可以将数组转含为字符串就可以直接printf直接将里面的数组给打印出来了。
第七、八篇文章
第七篇文章就是真正与C语言不同的部分了,这时我学到了类与对象,说实话那时类给我的感觉就是一个C语言的结构体,他们的用法也是用“.”操作符来进行的。这篇文章主要讲述了类和对象的关系,类经过实例化后就是一个对象。然后就是一系列的有关类的知识如:构造方法,this关键字。
那时知识初始类与对象,对对象的概念还不是很清楚,但在后面的学习中对对象的理解也是会越来越深的。
然后到第八篇文章的话:
既然学的是类的话,那肯定就要讲到继承了,就有了父类和子类了,这时就要牵扯到super关键字了。然后还有代码块的初始化顺序,现在印象还是很深刻呢。父类静态代码块---->子类的静态代码块---->父类的实例代码块---->父类的构造方法---->子类的实例代码块---->子类的构造方法。
第九篇文章
第九篇文章写的是关于多态,但是这时是没有讲接口和抽象类的,所以之讲了子类的多态,这时我们就讲到函数重写了,重写之后是向上转型和向下转型。
第十、十一篇文章
然后在第十篇终于迎来了,抽象类和接口得学习,不得不说抽象类和接口真的很像,两个都是为了简便代码而存在的,这篇里详细讲解了抽象类与接口的相关知识,包括抽象类不能被final,private修饰,以及不能被new直接实例化,然后就是接口,感觉与抽象类最大的不同就是它不能有构造方法,且它里面的数据和方法都是默认有一些限定修饰符修饰的。
然后这是最后一篇异常类,然后异常类就只需要知道都是Exception类的子类或者是RuntimeException的子类都是异常类,我们还可以通过继承异常类类自定义异常类,然后就是里面的相关关键字try-catch之类的。finally,总之异常类啊还是挺简单的。
补充内部类内容
静态内部类
public class Test {static class Test1{String name;int a=10;public void setA(int a) {this.a = a;System.out.println(a);}}}class Test2{public static void main(String[] args) {Test.Test1 t=new Test.Test1();t.setA(100);}
}
静态内部类就是在一个类中在定义一个静态类,因为加了static所以他就是属于这个Test类,所以它的初始化就是可以直接用如上 Test.Test1 t=new Test.Test1();直接用Test.来直接实例化,然后这个t对象就是一个内部类的对象了,其就跟普通的类实例化的对象没啥区别了。然后就是静态内部类都是无法使用外部类的实例成员和实例方法的。但可以直接使用静态方法或静态成员
实例内部类
public class Test {class Test1{String name;int a=10;public void setA(int a) {this.a = a;System.out.println(a);}}}class Test2{public static void main(String[] args) {Test test=new Test();Test.Test1 t=test.new Test1();}
}
实例内部类里面则就是跟静态内部类的区别就是其实例化的方式不一样,实例内部类是需要先实例化一个外部类,才能实例化实例内部类。
局部内部类
public class Test {static String name1="hjhad";public void func1(){class Test1{int a=10;public void func2(){System.out.println("haha");}}Test1 t=new Test1();t.func2();}
局部内部类,既然是局部,其实例化也是只能在定义的方法里面进行实例化。
匿名内部类
匿名内部类通常用于实现接口或继承抽象类,不需要命名。
复制
public class Main {public static void main(String[] args) {// 使用匿名内部类实现接口MyInterface myObject = new MyInterface() {@Overridepublic void doSomething() {System.out.println("Doing something...");}};myObject.doSomething();// 使用匿名内部类继承抽象类AbstractClass myAbstractObject = new AbstractClass() {@Overridevoid abstractMethod() {System.out.println("Implementing abstract method...");}};myAbstractObject.abstractMethod();}
}interface MyInterface {void doSomething();
}abstract class AbstractClass {abstract void abstractMethod();
}
总结
- 成员内部类(Member Inner Class):
- 成员内部类是定义在另一个类中的类。
- 它可以访问外部类的成员变量和方法,包括私有的。
- 它是一个静态成员,因此不能直接访问外部类的非静态成员。
- 局部内部类(Local Inner Class):
- 局部内部类是在方法内部定义的类。
- 它的作用域仅限于定义它的块内。
- 它不能访问外部类的成员变量,但可以访问外部类的静态成员变量和方法。
- 匿名内部类(Anonymous Inner Class):
- 匿名内部类是没有名称的内部类。
- 通常用于实现接口或继承抽象类,且只需要一次使用。
- 它不能有构造器,但可以访问外部类的成员变量和方法,包括私有的。
- 静态嵌套类(Static Nested Class):
- 静态嵌套类是静态成员内部类的一种。
- 它可以独立于外部类的实例存在,因此不需要外部类的实例就可以创建静态嵌套类的实例。
- 它不能访问外部类的非静态成员,但可以访问外部类的静态成员。
相关文章:

【一步一步了解Java系列】:对这个系列的总结以及对缺漏内部类知识的补充
看到这句话的时候证明:此刻你我都在努力 加油陌生人 br />个人主页:Gu Gu Study专栏:一步一步了解Java 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者…...
TCP和UDP
目录 TCPUDPTCP 传输控制协议(Transmission Control Protocol, TCP)是一种面向连接的,可靠的,基于字节流的传输层通信协议。在该层,另一个重要传输协议是用户数据包协议(UDP)。 数据在TCP层称为流Stream,数组分组称为分段Segment。相对的在IP层,数据称为Datagram, 数…...

【ai】tx2 nx:ubuntu18.04 yolov4-triton-tensorrt 成功部署server 运行
isarsoft / yolov4-triton-tensorrt运行发现插件未注册? 【ai】tx2 nx: jetson Triton Inference Server 部署YOLOv4 【ai】tx2 nx: jetson Triton Inference Server 运行YOLOv4 对main 进行了重新构建 【ai】tx2 nx :ubuntu查找NvInfer.h 路径及哪个包、查找符号【ai】tx2…...

类与对象的创建
1.类是一种抽象的数据类型,他是对某一类事务整体描述/定义,但是并不能代表某一个具体的事物 eg:动物,植物,手机,电脑... Person类,Pet类,Car类,这些类都是用来描述、定义…...

基于单片机的 LED 照明灯智能调光系统设计
摘 要: 社会经济的不断发展,推动了智能化生活的进程,智能调光技术开始广泛应用在生活中,人们也逐渐提高了灯光亮灯率等的要求。基于此,笔者主要设计了基于单片机的 LED 照明灯智能调光系统,希望能够为相关…...
客户满意度调查方法有哪些
用户满意度调查作为改进用户体验工作中重要的一项活动,可以帮助企业深入了解客户对产品服务各方面评价。有许多企业想开展客户满意度调查,但是在调查方式上不清楚该用那种方式?另外还要考虑预算,民安智库(公众满意度调…...

为什么企业应用开发,c++干不过java?
在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「c的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! C/C这种东西,根本…...

基于盲信号处理的声音分离——最小化增益的ICA算法
基于最小化增益的ICA算法的算法是依据混合信号经过盲信号分离会产生一定的噪声,为了使得分离后的信号与原信号的比值最小时,叫做增益最小。当增益越小时,分离后噪声越小,分离信号越接近原信号,分离算法的效果越好。这是…...

自动化代码规范检查--Sonarqube部署
参考文档 官方文档安装数据库 官方给出几种数据库: # 我们选用postgres, 拉取镜像 docker pull postgres:16.0# 创建存储卷 docker volume create postgresql-data# 运行容器 docker run -d --name sonarqube-postgres \-p 5432:5432 \-e POSTGRES_DB=sonar_DB \-e POSTGRE…...

基于uni-app与图鸟UI的移动应用模板构建研究
摘要 随着移动互联网技术的迅猛发展,移动端应用已成为企业展示形象、提供服务的重要窗口。本文基于uni-app框架和图鸟UI设计,深入探讨了如何高效构建覆盖多个领域的移动端应用模板。通过对商城、办公、投票、生活服务等多种类型模板的详细介绍ÿ…...

AI智能在Type-C领域的应用
随着科技的飞速发展,Type-C接口凭借其卓越的性能和广泛的应用场景,已成为现代电子设备中不可或缺的一部分。而AI智能技术的兴起,为Type-C领域带来了革命性的变革,推动了其功能的进一步完善和应用领域的拓展。本文将探讨AI智能在Ty…...
INS-GPS组合导航——卡尔曼滤波
系列文章目录 《SAR笔记-卫星轨道建模》 《SAR笔记-卫星轨迹(三维建模)》 《常用坐标系》 文章目录 前言 一、经典卡尔曼滤波 二、扩展卡尔曼滤波 三、无迹卡尔曼滤波 总结 前言 SAR成像仪器搭载于运动平台,平台的自定位误差将影响SAR…...
day 58 739. 每日温度 496.下一个更大元素 I 503.下一个更大元素II
739. 每日温度 提示 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例…...

Dns被莫名篡改的问题定位(笔记)
引言:最近发现用户的多台机器上出现了Dns被莫名修改的问题,从系统事件上看并未能正常确定到是那个具体软件所为,现在的需求就是确定和定位哪个软件具体所为。 解决思路: 首先到IPv4设置页面对Dns进行设置:通过ProcExp…...

JVM原理(八):JVM虚拟机工具之基础故障工具
这里主要介绍监视虚拟机运行状态和进行故障处理的工具 1. jsp:虚拟机进程状况工具 jsp命令格式: jsp [options] [hostid] jps远程查询虚拟机进程状态 2. jstat:虚拟机统计信息监视工具 jstat命令格式: jstat [option vmid [interval [s|ms] [count]…...
Eureka的桥梁:服务消费者交互全解析
Eureka的桥梁:服务消费者交互全解析 在微服务架构中,服务发现是确保服务间有效通信的关键机制。Eureka,作为Netflix开源的服务发现框架,扮演着服务注册中心的角色,为服务消费者和服务提供者提供了一个动态的服务注册与…...

13_网络安全
目录 网络安全协议 网络安全协议 PGP协议 网络安全技术 防火墙技术 入侵检测系统 入侵防御系统 杀毒软件 蜜罐系统 计算机病毒与木马 网络安全协议 网络安全协议 物理层主要使用物理手段隔离、屏蔽物理设备等,其他层都是靠协议来保证传输的安全ÿ…...
C++ 中的数据类型
C规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存. 1 整型 作用:整型变量表示的是整数类型的数据 C中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同: 数据类型占用…...

CSS|04 复合选择器伪类选择器属性选择器美化超链接
基本选择器:见上篇基本选择器 复合选择器选择器1,选择器2{属性:值;} 多元素选择器,同时匹配选择器1和选择器2,多个选择器之间用逗号分隔举例: p,h1,h2{margin:0px;}E F{属性:值;} 后代元素选择器,匹配所有属于E元素后…...
探索Batch注释的奥秘:REM与::的细微差别
探索Batch注释的奥秘:REM与::的细微差别 在编写Batch文件时,注释是必不可少的部分,它们帮助我们理解代码的意图和逻辑。Batch脚本提供了两种添加注释的方法:REM命令和双冒号::。虽然它们功能相似,但在使用上存在一些细…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...