JAVASE基础06

数组

01- Java基础(二维数组-定义方式&内存图解)

二维数组的使用格式:
在这里插入图片描述

例如创建一个3*2的数组,
int[][] arr = new int[3][2];//创建一个二维数组,该数组中有3个一维数组,每一个一维数组中有2个元素。
内存图如下:
在这里插入图片描述
在栈中创建一个二维数组类型的的引用变量arr指向堆中新开辟的数组实体(0x0034),并且该实体的容量为三,里面每个元素的类型是一个容量为2的int型数组的引用,若不赋值给该实体(0x0034)则默认为空,当要访问或复制给二维数组的某个元素时,可以通过下标如:arr[1][1] = 88;不赋值时默认为0,若下标越界则发生错误。

02- Java基础(二维数组-内存图解2)

使用int[][] arr = new int[3][2];创建二维数组可以明确创建多少个一维数组的同时,也规定了每个一维数组的长度,但想要创建的数组长度不一样,可以使用这种方式:int[][] arr = new int[3][];,然后再为每个元素新建数组并赋值。
在这里插入图片描述

03- Java基础(二维数组-另一种定义方式)

如:int[][] arr = {{3,1,7},{5,8,2,9},{4,1}};
这样可以直接给每个数组的元素赋值,下面的例子是计算各个元素相加的实现:
int sum = 0;
int[][] arr = {{3,1,7},{5,8,2,9},{4,1}};

	for(int x=0; x<arr.length; x++)
	{
		for(int y=0; y<arr[x].length; y++)
		{

// System.out.print(arr[x][y]+",");
sum += arr[x][y];

		}
	}
	System.out.println("sum="+sum);

在这里插入图片描述

04- Java基础(二维数组-应用场景)

一般地,数据多了就用数组存起来,当数组多了,就需要使用二维数组,将数组存起来,;例如需要存储甲的年龄 身份ID 号码 工资d等等同类型的数据,我们可以用一个int型数组存起来这些信息,当乙 丙 丁也需要这样存起来的时候,就可以直接使用二维数组将这些数组存起来。

面向对象

01- 面向对象(概述)

当我们要解决一件事情或者进行一个动作,通常会想先怎样后怎样,这些内容是将实现的操作一步一步分解,注重的是过程,也就是面向过程。如果,要解决的事情十分庞大或者十分复杂,分解的各个操作就会眼花缭乱。我们可以换一种思路,将创建各种不同的对象,并决定它们能做的事情,把工作分给它们完成就好了,每个对象的功能不一样,所能做的事情也不一样,这些内容可以慢慢去补充和拓展。
特点:
1,面向对象就是一种常见的思想。符合人们的思考习惯。
2,面向对象的出现,将复杂的问题简单化。
3,面向对象的出现,让曾经在过程中的执行者,变成了对象中的指挥者。

02- 面向对象(举例)

举例:
大象装进冰箱。

面向过程。

打开冰箱。
存储大象。
关上冰箱。

对于面向过程思想,强调的是过程(动作).

C语言.

面向对象。

对于面向对象思想,强调的是对象(实体)。
冰箱打开。
冰箱存储。
冰箱关闭。

C++ Java C#

03- 面向对象(类与对象之间的关系)

简单的说,类就是生产对象时所需要用到的模板,而对象就是根据模板生产的厂品。
在这里插入图片描述

04- 面向对象(类与对象体现)

用java语言对现实生活中的事物进行描述。
通过类的形式来体现的。

怎么描述呢?
对于事物描述通常只关注两方面。
一个是属性,一个是行为。

只要明确该事物的属性和行为并定义在类中即可。

对象:其实就是该类事物实实在在存在的个体。

类与对象之间的关系?
类:事物的描述。
对象:该类事物的实例。在java中通过new来创建的。

05- 面向对象(类与对象体现-细节)

描述小汽车

分析:
1,属性。
轮胎数。
颜色。
2,行为。
运行。
class Car
{
int num;
String color;

void run()
{
	System.out.println(num+"..."+color);
}

}

生产汽车对象:
Car c = new Car();
使用汽车的run行为:
c.run;

06- 面向对象(对象的内存体现)

代码:Car c = new Car();等号右边的new关键字会在堆内存中开辟一个新空间并且类型位Car类型,里面有num和color属性;等号左边会创建Car引用变量c,并将堆空间创建的Car实体的内存地址赋值给c;c指向的对象有两个属性,一个为int型,默认为,一个为String型,默认为null;
在这里插入图片描述

07- 面向对象(成员变量和局部变量的区别)

成员变量和局部变量的区别:

1,
成员变量定义在类中,整个类中都可以访问。
局部变量定义在函数,语句,局部代码块中,只在所属的区域有效。

2,
成员变量存在于堆内存的对象中。
局部变量存在于栈内存的方法中。

3,
成员变量随着对象的创建而存在,随着对象的消失而消失。
局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。

4,
成员变量都有默认初始化值。
局部变量没有默认初始化值。

08- 面向对象(成员变量和局部变量的同名&显示初始化)

回到Car类,并且在run方法里增加一个局部变量num并初始化为10。
class Car
{
int num;
String color;

void run()
{
	int num = 10;
	System.out.println(num+"..."+color);
}

}
在main方法理面创建car实例,并给它赋值num=4,调用run方法。
class CarDemo
{
public static void main(String[] args)
{
//在计算机中创建一个car的实例。通过new关键字。
Car c = new Car();// c就是一个类类型的引用变量,指向了该类的对象。
c.num = 4;
c.color = “red”;

	c.run();//要使用对象中的内容可以通过  对象.成员 的形式来完成调用
}

}
在这里插入图片描述

结果打印的是10而不是4,说明局部变量跟成员变量同名时,调用该成员变量所属的方法会优先使用局部变量。

09- 面向对象(类类型参数)

回到Cra c,这句代码就是创建一个Car类型的引用变量,并且该变量可以作为一个方法里面的参数。假如现在需要创建一些同样的car对象(num和color都一样),可以理解为需要生产一批宝马,我们可以用一个方法负责生产该对象,如:
public static void show(Car c)//类类型的变量一定指向对象。要不就是null。
{
c.num = 3;
c.color = “black”;
System.out.println(c.num+"…"+c.color);
}
这时候c变量就作为该方法的参数,也可以理解为需要一个汽车模型,然后放在工厂里改装为宝马

10- 面向对象(匿名对象)

匿名对象。没有名字的对象 。
new Car();//匿名对象。其实就是定义对象的简写格式。
1,当对象对方法仅进行一次调用的时候,就可以简化成匿名对象。

	new Car().num = 5;
	new Car().color = "green";
	new Car().run();

2,匿名对象可以作为实际参数进行传递。

11- 面向对象(基本数据类型参数传递图解和引用数据类型参数传递图解)

在这里插入图片描述

12- 面向对象(封装-代码示例)

在这里插入图片描述
查看下面代码,Person类对象的成员属性可以在其他方法中任意修改。
class Person
{
public int age;

}

class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.age = -20;
}
}
但如果不想对外公开,可以设置为私有
private int age;
但这个时候想要修改的时候就不能直接用了。我们通常使用这种方式,在类中提供成员修改器和访问器,
public void setAge(int a)//setXxx getXxx
{
age = a;
}
public int getAge()
{
return age;
}
也就是public的set get 方法,这样就不会暴露里面的实现细节,而且提高重用性,在拓展时也更改的修改里面的细节比如Person的age不能为负数,我们可以修改方法
public void setAge(int a)//setXxx getXxx
{
If(a<0) return;
age = a;
}
这样就修改不成功了,如果没有封装该方法,在每次遇到给age赋值场景时就会比较麻烦,并且还需要加if判断,这样不利于代码的复用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值