首页 > 编程语言 >【一步一步了解Java系列】:对这个系列的总结以及对缺漏内部类知识的补充

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

时间:2024-07-01 17:01:40浏览次数:24  
标签:Java 内部 一步 C语言 实例 Test 系列 public

看到这句话的时候证明:此刻你我都在努力
加油陌生人
微信图片编辑_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() {
            @Override
            public void doSomething() {
                System.out.println("Doing something...");
            }
        };
        myObject.doSomething();

        // 使用匿名内部类继承抽象类
        AbstractClass myAbstractObject = new AbstractClass() {
            @Override
            void 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):
    • 静态嵌套类是静态成员内部类的一种。
    • 它可以独立于外部类的实例存在,因此不需要外部类的实例就可以创建静态嵌套类的实例。
    • 它不能访问外部类的非静态成员,但可以访问外部类的静态成员。

标签:Java,内部,一步,C语言,实例,Test,系列,public
From: https://blog.csdn.net/2302_81249757/article/details/140102634

相关文章

  • Java计算机毕业设计粮库商品管理系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着农业现代化和粮食流通体系的不断完善,粮库商品管理面临着日益复杂的挑战。传统的粮库管理方式往往依赖于人工记录和纸质文档,效率低下且易出错。同......
  • Java计算机毕业设计农资网络销售系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展和农业现代化的推进,农资行业正面临转型升级的重大机遇。传统的农资销售模式往往依赖于实体店面和线下交易,效率低下且成本高昂......
  • Java计算机毕业设计汉服文化平台(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着近年来“国学热”的兴起,汉服文化作为中华传统文化的重要组成部分,逐渐受到越来越多人的关注和喜爱。汉服不仅承载着中华民族的历史记忆,更是传统礼......
  • 基于Java实现图像浏览器的设计与实现
    图像浏览器的设计与实现前言一、需求分析选题意义应用意义功能需求关键技术系统用例图设计JPG系统用例图图片查看系统用例图二、概要设计JPG.javaPicture.java三、详细设计类图JPG.javaUML类图picture.javaUML类图界面设计JPG.javapicture.java四、源代码JPG.jav......
  • springboot-javax.validation检查是否属于指定的值
    引入依赖:<!--jsr303--><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version></dependency><!--hibernatevalidator--><depen......
  • 深入MySQL锁机制:原理、死锁解决及Java防范技巧
    引言在数据库系统中,锁机制是为了保证数据一致性和完整性的重要手段。MySQL作为广泛使用的关系型数据库管理系统,其锁机制尤为重要。本文将详细介绍MySQL的锁机制原理及实现,并说明在生产环境中如何解决死锁问题,以及在后续开发中如何编写Java代码避免死锁。MySQL锁机制概述MySQ......
  • java springboot过滤器
    在SpringBoot应用中添加自定义过滤器,可以通过实现Filter接口或继承OncePerRequestFilter类来创建过滤器,并使用FilterRegistrationBean将其注册到Spring容器中。以下是一个简单的示例:1.创建过滤器类        首先,创建一个实现Filter接口的类,或者为了简化单次请求处......
  • java map对象格式化为json对象
    在Java中,将Map对象转换为JSON对象通常是通过使用诸如Jackson、Gson这样的库来完成的。下面是使用这两个库进行转换的示例:一、使用Jackson库        首先,确保项目中已经添加了Jackson的依赖。        Maven示例依赖如下:<dependency><groupId>com.fast......
  • springboot-javax.validation编写自定义校验注解
    引入依赖:<!--jsr303--><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version></dependency><!--hibernatevalidator--><depen......
  • Java 将Markdown文件转换为Word和PDF文档
    Markdown凭借其简洁易用的特性,成为创建和编辑纯文本文档的常用选择。但某些时候我们需要更加精致的展示效果,例如在专业分享文档或打印成离线使用的纸质版时,就需要将Markdown文件以其他固定的文档格式呈现。通过将Markdown转换为Word和PDF格式,可以得到更多的格式设置,确保跨......