JAVA基础知识(七)

5.11 代码块

所谓的代码块是指使用“{}”括起来的一段代码,根据位置不同,代码块可以分为普通代码块、构造块、静态代码块、同步代码块4种。

5.11.1 普通代码块

普通代码块就是指直接在方法或是语句中定义的代码块。

5.11.2 构造块

构造代码块是直接写在类中的代码块。
构造块优先于构造方法执行,而且每次实例化对象时都会执行构造块中的代码,会执行多次。

5.11.3 静态代码块

静态代码块是使用static关键字声明的代码块。
静态代码块优先于主方法执行,而在类中定义的静态代码块会优先于构造块执行,而且不管有多少个对象产生,静态代码块只执行一次。

5.12 构造方法私有化

在设计模式中将这样的设计称为单例设计模式,即无论程序怎么运行,类永远只会有一个实例化对象存在。

5.13 对象数组

所谓对象数组,就是指包含了一组相关的对象的数组。在使用对象数组时,数组一定要先开辟内存空间,因为其是引用数据类型,所以数组中的每一个对象都是null值,则在使用时数组中的每一个对象必须分别进行实例化操作。

格式 对象数组的声明

类 对象数组名称[] = new 类[数组长度];

主方法中的String args[]就是对象数组。
在主方法中,可以使用String args[]接收初始化参数,实际上这里的String本身就是一个类,所以在主方法中的参数本身就是以对象数组的形式出现的。

5.14 内部类

5.14.1 内部类的基本定义

在类内部可定义成员变量与方法,而且在类内部可以定义另一个类。如果在类Outer得内部在定义一个类Inner,此时类Inner就称为内部类,而类Outer则称为外部类。
内部类可声明成public或private。当内部类声明成public或private时,对其访问的限制与成员变量和成员方法完全相同。

内部类的声明格式

标识符 class 外部类的名称{
    
    
   //外部类的成员
   标识符 class 内部类的名称{
    
    
        //内部类的成员 
   }
}

内部类的唯一好处就是可以方便地访问外部类中的私有属性。同时,外部类也可以方便地访问内部类中的私有属性,这样就可以避免封装所带来的操作结构复杂的问题。

5.14.2 使用static定义内部类

使用static可以声明属性或方法,而使用static也可以声明内部类,用static声明的内部类则变成外部类,但是用static声明的内部类不能访问非static的外部类。

5.14.3 在外部访问内部类

一个内部类除了可以通过外部类访问,也可以直接在其他类中进行调用,调用的基本格式为:

外部类.内部类 内部类对象 = 外部类实例.new 内部类();

以上的操作格式中,首先要找到外部类的实例化对象之后,才可以通过外部类的实例化对象去实例化内部类的对象。

观察内部类的class文件。
内部类定义之后,生成的class文件是以“

Outer$Inner.class

”的形式存在的,在Java中只要是在文件中看见了“$”,则在程序中使用将其替换为“.”。

5.14.4 在方法中定义内部类

理论上,内部类可以定义在程序的任意位置,例如:代码块中、方法中,但是在方法中定义的内部类不能直接访问方法中的参数,如果方法中的参数想被内部类访问,则参数前必须加上final关键字。

5.15.2 单向链表实现(1)

链表是在数据结构中经常见到的一种形式。所谓链表就好像火车车厢那样,从火车头开始,每一节车厢之后都连着一节车厢。每一节车厢就相当于是一个节点,每一个节点除了要保存自己的内容之外,还要保存下一个节点的引用。

节点类

class Node{
    
    
    private String data;//保存节点内容
    private Node next;//保存下一个节点
    public Node(String data){
    
    //构造方法设置节点内容
	this.data=data;
    }
    public String getData(){
    
    //得到节点内容
	return this.data;
    }
    public void setNext(Node next){
    
    //设置下一节点
	this.next=next;
    }
    public Node getNext(){
    
    //取得下一节点
	return this.next;
    }
};

判断一个节点之后是否还有后续节点,如果存在后续节点,则输出;如果不存在则不输出,输出可以使用方法的递归调用完成(递归调用就是自己调用自己)。

猜你喜欢

转载自blog.csdn.net/qq_43480434/article/details/112852850
今日推荐