Java学习笔记(二维数组\面向对象\类、方法、构造器)--day_5

本文深入探讨Java中多维数组的实现原理,揭示其实质为一维数组的嵌套结构,并详细介绍二维数组的初始化与遍历方法。此外,文章阐述了面向对象的基本概念,包括类、对象、继承、封装和多态,以及面向对象的设计优势。
摘要由CSDN通过智能技术生成

【1】没有多维数组
Java语言提供了多维数组的语法,但多维数组实质上还是一维数组。Java语言里的数组类型是引用类型,因此,数组变量其实是一个引用,这个引用指向真实的数组内存。数组元素的类型也可以是引用,如果数组元素的引用再次指向真实的数组内存,这种情形看上去很像多维数组。
定义二维数组的语法:
type[ ] [ ] arrName;

public static void main(String[] args)
    {
	//定义一个二维数组
	int[ ] [ ] a; 
//把a当成一维数组进行初始化,初始化a是一个长度为3的整数
	//a数组的数组元素又是引用类型
	a = new int[3][ ]; 
	//把a数组当成一维数组,遍历a数组的每个元素
	for (int i = 0; i < a.length; i++)
	{
		System.out.println(a[i]);
	}
	//初始化a数组的第一个元素
	a[0] = new int[2]; 
	//访问a数组的第一个元素所指数组的第二个元素
	a[0][1] = 6; 
//a数组的第一个元素是一个一维数组,遍历这个一维数组
	for (int i = 0; i < a[0].length; i++)
	{
		System.out.println(a[0][i]);
	}
	}
}

我们可以得到一个结论:二维数组是一维数组,其数组元素是一维数组;三维数组也是一维数组,其数组元素是二维数组;四维数组还是一维数组,其数组元素是三维数组……从这个角度来看,Java语言里没有多维数组。

【2】二维数组初始化

public class A2 
{
	public static void main(String[] args) 
	{
		int[][] a=new int[][]{
			new int[2],//二维数组动态初始化
			new int[3],
			new int[5]
	};
	for(int i=0;i<a.length;i++)
		{
			int[]y=a[i];
			for(int j=0;j<y.length;j++)
			{
			System.out.print(y[j] + "\t");
			}
			System.out.println();
		}
		System.out.println(a.length);

		int [][] b=new int [][]{
			new int[]{22,23,25},//二维数组静态初始化
			new int[]{5,20,53},
			new int[]{256,908,897,776}
		};
		System.out.println(b.length);
		
		/*二维数组的遍历*/
		for(int i=0;i<b.length;i++)
		{
			for(int j=0;j<b[i].length;j++)
			{
			System.out.println(b[i][j]);
			}
		}
		int [][]c=new int[][]{
		new int[4],
		new int[]{4,5,8},
		new int[3]
		};
		System.out.println(c.length);
	}
	for(int[] it:c)//for(变量:数组名)
		{
			for(int ix:it)//(变量:数组名)
			{
			System.out.print(ix + "\t");
			}
			System.out.println();
		}
		System.out.println(c.length);
	}
}

public class Aa
{
	public static void main(String[] args) 
	{
		int[][] arr=new int[4][5];//二维数组初始化
		int[][] b=new int[][]{
		new int [5],
		new int [5],					
		new int [5],
		new int [5]
		};
		
		System.out.println(arr.length);
	}
}
 

【3】面向对象
面向对象是一种更优秀的的程序设计方法,它的基本思想是使用类、对象、继承、封装,消息等基本概念来进行程序设计。它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以现实世界中的事物(即对象)为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的类,作为系统的基本构成单元(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它过程来构造系统),这使得系统可以直接映射客观世界,并保持客观世界中事物及其相互关系的本来面貌。
如果采用面向对象方式开发的软件系统,其最小的程序单元是类,这些类可以生成系统中的多个对象,而这些对象则直接映射成客观世界的各种事物。

【4】面向对象的特征
面向对象方法具有三个基本特征:继承(Inheritance)、封装(Encapsulation)和多态(Polymorphism)。
面向对象还支持如下几个功能:
对象是面向对象方法中最基本的概念,它的基本特点有:标识惟一性、分类性、多态性、封装性、模块独立性好。
类是具有共同属性、共同方法的对象的集合。类是对象的抽象对象则是类的实例。而类是整个软件系统最小的程序单元,类的封装性将各种信息细节隐藏起来,并通过公用方法来暴露该类对外所提供的功能,从而提高了类的内聚性,降低了对象之间的耦合性。
对象间的这种相互合作需要一个机制协助进行,这样的机制称为“消息”。消息是一个实例与另一个实例之间传递的信息。
在面向对象方法中,类之间共享属性和操作的机制称为继承。已有的类可当作基类来引用,则新类相应地可当作派生类来引用。继承具有传递性。可分为单继承(一个继承只允许有一个直接父类,即类等级为树形结构)与多继承(一个类允许有多个直接父类)。

【5】定义类
定义类的语法格式:
[修饰符] class 类名 {….类体……}
类体可以由多个属性、方法、构造器组成。
注意:类的修饰符可以是public、final|abstract 或省略这两个。
类名只要是合法的标识符.
一个类里可以包含三种最常见的成员:构造器、属性、方法。
在这里插入图片描述

【6】方法
[修饰符] 方法返回值类型 方法名(形参列表) {….方法体….}
方法中的修饰符可以是public ,protected,private,static,final,abstract,其中访问控制符只能出现一个,abstract ,final 只能出现其一.
返回值类型可以是基本类型和引用类型,如果无返回值,要用void 来声明
形参列表,可以由零到多组组成,参数之间用逗号(“,”)隔开.
static 是一个特殊的关键字,译为”静态”,所有有static 修饰的叫类属性,类方法,类成员.
在这里插入图片描述

public class Person
{
	// 下面定义了两个成员变量
	public String name;
	public int age;
	// 下面定义了一个say方法
	public void say(String content)
	{
		System.out.println(content);
	}
}

【7】构造器
[修饰符] 构造器名(形参列表) {……}
修饰符可以是public protected private 构造器必须和类名相同,形参和方法的形参一样.

构造器最大的用处就是在创建对象时执行初始化,系统会默认的进行初始化。如果程序员没有Java 类提供任何构造器,则系统会为这个类提供一个无参的构造器。一旦程序员提供了自定义的构造器,遇系统不再提供默认的构造器。

创建对象的根本途径就是构造器,所以创建对象通过关键字new 加上对应的构造器即可.
如果访问权限允许,类里定义的属性和方法可以通过类或实例来调用,
有static 修饰的访求和属性,既可通过类来调用,也可以通过实例来调用.
在这里插入图片描述

public class ConstructorTest
{
	public String name;
	public int count;
	// 提供自定义的构造器,该构造器包含两个参数
	public ConstructorTest(String name , int count)
	{
		// 构造器里的this代表它进行初始化的对象
		// 下面两行代码将传入的2个参数赋给this代表对象的name和count实例变量
		this.name = name;
		this.count = count;
	}
	public static void main(String[] args)
	{
		// 使用自定义的构造器来创建对象
		// 系统将会对该对象执行自定义的初始化
		ConstructorTest tc = new ConstructorTest("张三" , 90000);
		// 输出ConstructorTest对象的name和count两个实例变量
		System.out.println(tc.name);
		System.out.println(tc.count);
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值