【一步一步了解Java系列】:对这个系列的总结以及对缺漏内部类知识的补充

看到这句话的时候证明:此刻你我都在努力
加油陌生人
微信图片编辑_20240229212205.png
br />个人主页:Gu Gu Study
专栏:一步一步了解Java

喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹


喜欢的话可以点个赞谢谢了。
作者:小闭


一路来的文章

第一篇文章:image.png

记得这个系列是我今年4月29日开始写的,写的是我初始Java的总结,第一篇便是写了Java基本类型与C语言的区别,至于为什么我一开始就跟C语言对标呢?原因有两个:

  1. 我那时刚学完C语言,对C语言记忆尤为深刻。
  2. 我初始Java的基本数据类型时我就发现Java有C语言没有的基本类型如:byte,而且char在Java中占2个字节。image.png

不知不觉已经过去了两个月了,这个系列也差不多结束了,之后会是Java实现的数据结构的系列了,在之后就是更高级的Java系列。现在这个系列差一个图书馆系统的博客没有写,不过应该也快写了。


第二篇文章:

image.png

这篇文章没想到就是我这个系列里面阅读量最高的一篇,这是万万没想到的。这篇是对基本数据类型的转换得总结。关于什么int转换成double什么什么得,还有Java中得float的类型还得必须加上一个F或f等等。主要就是自动类型转换,强制类型转换,类型提升,以及字符串得转换成int,double等。image.png


第三篇文章:

image.png
这篇文章还是不知不觉与C语言进行了对比,讲的是各式各样的得运算符,像简单的算术运算符,赋值和++,逻辑运算符,位运算符,移位运算符等,image.png
记得那时讲解取模时第一次遇到了异常,这可是与C语言大不相同的一个知识点,那时不懂还没学到异常,就简单说是报错哈哈哈。还有就是Java中的double是支持取模运算的,也是和C语言的一个不同呢。image.png


第四、五篇文章

image.png
第四篇的阅读量就比较凄惨了,里面的内容也比较简单,简单的逻辑结构,记得逻辑结构我在C语言得文章里是没有写过得,那时就觉得太简单了,但到Java想想还是写一下吧,然后就有了这第四篇文章。里面讲了简单得顺序结构,选择结构,循环结构以及switch语句等等,都是非常简单的结构了。image.png
最深刻的还是,Java中不能用数字代表真假,if里的括号只能用true来表示真,false代表假,这也是和C语言的一个不同吧。
然后第五篇:image.png
也算是回到正常的播放量了吧,这篇主要也是和C语言进行对比,因为这是真的和C语言的不同了,在C语言中函数就是Java中的方法,叫法完全不一样了,但性质差不多,只不过Java面向对象的语言,多了一些限定修饰符。
这篇文章主要讲了方法的意义和形参实参,方法的递归,然后就是新概念方法重载,其实到后面还有一个方法·重写,但是那时没有学到类与对象,所以就没在这篇文章里讲。image.png


第六篇文章:

image.png
这篇文章是第一次接触引用这个概念,引用是个新概念,Java中没有指针的学习,但是有引用。
数组就是一个引用类型,记得那时我以为能直接用System.out.println直接打印出来呢,没想到的是直接打印出来的是一个地址,哈哈哈。image.png
还有在Java中数组中让我真正跟感觉到Java的简便,只需点length就可以得到数组的长度,换到C语言就是还得使用sizeof慢慢求呢。这里还学到了现成包Arrays,使用其toString就可以将数组转含为字符串就可以直接printf直接将里面的数组给打印出来了。


第七、八篇文章

image.png
第七篇文章就是真正与C语言不同的部分了,这时我学到了类与对象,说实话那时类给我的感觉就是一个C语言的结构体,他们的用法也是用“.”操作符来进行的。这篇文章主要讲述了类和对象的关系,类经过实例化后就是一个对象。然后就是一系列的有关类的知识如:构造方法,this关键字。image.png
那时知识初始类与对象,对对象的概念还不是很清楚,但在后面的学习中对对象的理解也是会越来越深的。
然后到第八篇文章的话:
image.png
既然学的是类的话,那肯定就要讲到继承了,就有了父类和子类了,这时就要牵扯到super关键字了。然后还有代码块的初始化顺序,现在印象还是很深刻呢。父类静态代码块---->子类的静态代码块---->父类的实例代码块---->父类的构造方法---->子类的实例代码块---->子类的构造方法。


第九篇文章

image.png

第九篇文章写的是关于多态,但是这时是没有讲接口和抽象类的,所以之讲了子类的多态,这时我们就讲到函数重写了,重写之后是向上转型和向下转型。

image.png

第十、十一篇文章

image.png
然后在第十篇终于迎来了,抽象类和接口得学习,不得不说抽象类和接口真的很像,两个都是为了简便代码而存在的,这篇里详细讲解了抽象类与接口的相关知识,包括抽象类不能被final,private修饰,以及不能被new直接实例化,然后就是接口,感觉与抽象类最大的不同就是它不能有构造方法,且它里面的数据和方法都是默认有一些限定修饰符修饰的。
image.png
然后这是最后一篇异常类,然后异常类就只需要知道都是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();
}
总结
  1. 成员内部类(Member Inner Class):
    • 成员内部类是定义在另一个类中的类。
    • 它可以访问外部类的成员变量和方法,包括私有的。
    • 它是一个静态成员,因此不能直接访问外部类的非静态成员。
  2. 局部内部类(Local Inner Class):
    • 局部内部类是在方法内部定义的类。
    • 它的作用域仅限于定义它的块内。
    • 它不能访问外部类的成员变量,但可以访问外部类的静态成员变量和方法。
  3. 匿名内部类(Anonymous Inner Class):
    • 匿名内部类是没有名称的内部类。
    • 通常用于实现接口或继承抽象类,且只需要一次使用。
    • 它不能有构造器,但可以访问外部类的成员变量和方法,包括私有的。
  4. 静态嵌套类(Static Nested Class):
    • 静态嵌套类是静态成员内部类的一种。
    • 它可以独立于外部类的实例存在,因此不需要外部类的实例就可以创建静态嵌套类的实例。
    • 它不能访问外部类的非静态成员,但可以访问外部类的静态成员。

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

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

相关文章

《昇思25天学习打卡营第27天 | 昇思MindSporeShuffleNet图像分类》

27天 本节学习了ShuffleNet图像分类 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型,和MobileNet, SqueezeNet等一样主要应用在移动端,模型的设计目标就是利用有限的计算资源来达到最好的模型精度。设计核心是引入了两种操作:Pointwis…

【Python机器学习】模型评估与改进——分组交叉验证

分组交叉验证是非常常见的一种交叉验证策略,它适用于数据中的分组高度相关时。比如我们想构建一个从人脸图片中识别情感的系统,并且收集了100个人的照片的数据集,其中每个人都进行了多次拍摄,分别展示了不同的情感。我们的目标是构…

使用gradle上传maven工件到新版maven central仓库central.sonatype.com

本文主要用到的插件是sonatype-uploader, 该插件主要功能是上传依赖文件夹到中央仓库。 该文件夹的生成也十分简单,不用担心。 前言 最近在研究maven插件的时候发现发布的网站发生了变化,使用之前的一些插件没能满足我发布依赖的需求,也可…

数据结构与算法笔记:实战篇 - 剖析Redis常用数据类型对应的数据结构

概述 从本章开始,就进入实战篇的部分。这部分主要通过一些开源醒目、经典系统,真枪实弹地教你,如何将数据结构和算法应用到项目中。所以这部分的内容,更多的是知识点的回顾,相对于基础篇和高级篇,其实这部…

fastapi swagger在线接口文档报错

fastapi swagger在线接口文档报错 1、报错信息 Unable to render this definition The provided definition does not specify a valid version field. Please indicate a valid Swagger or OpenAPI version field. Supported version fields are swagger: “2.0” and those …

【收藏】SaaS运营方法论:寻找合适的合作伙伴的四大方法

一、使用关键字研究工具查找您所在行业的相关博客、频道和网站 但是,根据你的业务规模和性质,如果你需要主动出击寻找合适的推广伙伴,而不仅限于让潜在合作伙伴找你,你可以使用关键字研究工具。 实话实说,最好的联盟营…

告别手工录入,企业财务凭证同步迈入智能新时代!

一、客户介绍 某金融租赁股份有限公司作为一家领先的金融租赁企业,一直秉持着创新驱动、服务至上的经营理念。随着业务的快速发展,该公司在财务管理和凭证管理方面遇到了新的挑战。为了更好地提升工作效率,降低运营成本,该公司决…

Spring两大核心思想 IoC和AoP

目录 ✨ 一、什么是IoC 1、定义 🎊 2、IoC思想 🎊 3、优势 🎊 4、对象的管理 🎊 存对象:Component 取对象:AutoWired ✨二、什么是DI 1、定义 🎊 2、IoC和DI的关系🎊 可…

嵌入式Linux系统编程 — 5.7 Linux系统中proc文件系统

目录​​​​​​​ 1 proc文件系统简介 2 proc 文件系统的使用 2.1 使用 cat 命令读取 2.2 使用 read()函数读取 1 proc文件系统简介 /proc 文件系统,也称为进程信息文件系统(Process Information file system),是一种在 Li…

Windows电脑自建我的世界MC服务器并与好友远程联机游戏教程

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

08:结构体

结构体 1、为什么需要结构体2、如何定义结构体3、怎么使用结构体变量3.1、赋值和初始化3.2、结构体变量的输出 1、为什么需要结构体 为了表示一些复杂的事物,而普通的基本类型无法满足实际要求。什么叫结构体 把一些基本类型数据组合在一起形成的一个新的数据类型&…

高性能全局内存池

什么时候使用高性能全局内存池? 1.高并发下有些资源需要被频繁创建和销毁,我们都知道系统调用是很消耗资源的。因此,内存池是一块申请好的资源放在缓存里。 2.频繁使用时增加了系统内存的碎片,降低内存使用效率。内存分配必须起…

11083 旅游背包(优先做)

这个问题可以使用动态规划来解决。我们可以定义一个三维数组dp,其中dp[i][j][k]表示前i种物品,总体积不超过j,总重量不超过k的最大价值。 我们可以使用四重循环来填充这个数组。外层循环遍历所有的物品,第二层循环遍历所有可能的…

2024软件设计师笔记之考点版(一考就过):考试前一天 考点记忆版

软件设计师之一考就过:成绩版 1、栈区:函数调用和返回,由系统控制;存非静态局部变量;用栈实现嵌套调用(递归调用),逆波兰式业绩也叫后缀式,用栈进行求值 2、堆区&#x…

Big Data Tools插件

一些介绍 在Jetbrains的产品中,均可以安装插件,其中:Big Data Tools插件可以帮助我们方便的操作HDFS,比如 IntelliJ IDEA(Java IDE) PyCharm(Python IDE) DataGrip(SQL …

【RabbitMQ问题踩坑】RabbitMQ设置手动ack后,消息队列有多条消息,只能消费一条,就不继续消费了,这是为什么 ?

现象:我发送5条消息到MQ队列中,同时,我在yml中设置的是需要在代码中手动确认,但是我把代码中的手动ack给关闭了,会出现什么情况? yml中配置,配置需要在代码中手动去确认消费者消费消息成功&…

教学技能大赛包括哪些内容

在教育的广阔天地里,教师的角色至关重要。他们不仅是知识的传递者,更是学生心灵成长的引导者。那么,当教师们聚集一堂,参加一场教学技能大赛时,会有哪些内容成为他们展示自我、互相学习的舞台呢? 教学技能大…

瓦罗兰特报错57/error code59/报错903的解决办法

《无畏契约》在注重产品设计之预,也注重世界观、英雄性格的塑造,里面的英雄灵感来源于不同的国家和地区,有非常本土化的特色,每个英雄的性格人设非常鲜明。这些人物特色让这款游戏有了新的玩法。很多玩家都进入到游戏体验。然后有…

SeeSR: Towards Semantics-Aware Real-World Image Super-Resolution

CVPR2024 香港理工大学&OPPO&bytedancehttps://github.com/cswry/SeeSR?tabreadme-ov-file#-licensehttps://arxiv.org/pdf/2311.16518#page5.80 问题引入 因为有些LR退化情况比较严重,所以超分之后的结果会出现语义的不一致的情况,所以本文训…

Python入门 2024/7/1

目录 第一个程序hello world 数据类型 注释 变量 用type类型查看数据类型 ​编辑 数据类型转换 ​编辑 标识符 运算符 字符串的三种定义方式 字符串拼接 ​编辑​编辑 字符串格式化 第一个程序hello world 区分c和python c是printf python是print print("h…