Java 二维数组LX与面向对象基础知识

Java 二维数组L X与面向对象基础知识

文章目录

1.二维数组

  • 对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。
  • 其实,从数组底层的运行机制来看,其实也没有多维数组
  • 二维数组的使用
    • 二维数组的声明和初始化
    • 如何调用二维数组的指定位置的元素
    • 如何获取二维数组的长度
    • 如何遍历二维数组
    • 二维数组的默认初始化值
    • 数组的内存解析

1.二维数组的声明和初始化

静态数组
int[]arr=new int[][]{{1,2,3},{4,5},{6,7,8}}
动态数组1:
String[][]arr2=new String[3][2];
动态数组2:
String[][]arr3=new String[3][];

2.如何调用二维数组的指定位置的元素

System.out.println(arr1[0][1]);//2
System.out.println(arr2[1][1]);//null
System.out.println(arr3[1][0]);//空指针异常
arr3[1]=new String[4];

3.如何获取二维数组的长度

System.out.println(arr4.length);//3
System.out.println(arr4[0].length);//3

4.如何遍历二维数组

for (int i=0;i<arr4.length;i++){
	for(int j=0;j<arr4[i].length;j){
		System.out.print(arr4[i][j]);
	}
	System.out.println();
}

5.二维数组的默认初始化值

  • 二维数组分为外层数组的元素,内层数组的元素
int[][]arr2=new int[4][3];
	System.out.println(arr[0]);//地址值
	System.out.println(arr[0][0]);//0

6.二数组的内存解析

int[][]arr2=new int[4][];
arr[1]=new int[](1,2,3);
arr[2]=new int[4];
arr[2][1]=30;

  • 练习1:数组的反转
	int[] arr = {11,22,33,44,55};
	for (int i =0; i < arr.length; i++) {
    int fanzhuan=arr.length-1-i;
    System.out.println(arr[fanzhuan]);
  • 练习2:数组的前后调换
	int[] arr = {11, 32,55, 47,79,23};
    for (int i = 0; i < arr.length/2; i++) {
			int c=arr[i];
    	   arr[i]=arr[arr.length-1-i];
     	   arr[arr.length-1-i]=c;
    }
    for (int j = 0; j < arr.length; j++)
    System.out.println(arr[j]);
}

  • 练习3:查询数据55第一次出现的位置,打印第一次出现的位置
	int[] arr = {11, 32,55, 47,55, 79,23};
	int c=55;
	boolean isflage=true;
  for (int i = 0; i < arr.length; i++) {
      if (c==(arr[i])){
          System.out.println("找到了指定位置的元素,位置为:"+i);
                isflage=false;
 	              break;
      }
  }if (isflage){
      System.out.println("很抱歉没有");
  }
  • 练习4:编写方法,获取到数组中最大的元素,返回该元素的值
	int[] arr = {11, 32,55, 47,55, 79,23};
    int max=0;
   for (int i = 0; i < arr.length; i++) {
        if(max<arr[i]){
           		 max=arr[i];
        }
    }
    System.out.println("最大值是:"+max);
}
  • 练习5:杨辉三角形

      	1
      	1 1	
      	1 2 1
      	1 3 3 1
      	1 4 6 4 1 
      	1 5 10 10 5 1
      	1 6 15 20 15 6 1
      	1 7 21 35 35 21 7 1
      	1 8 28 56 70 56 28 8 1
      	1 9 36 84 126 126 84 36 9 1
    

提示

1.第一行有1个元素,第n行有n个元素

2.每一行的第一个元素和最后一个元素都是1

3.从第三行开始,对于菲第一个元素和最后一个元素的元素;即:

yanghui[i][j]=yanghui [i-1] [j-1]+yanghui[i-1] [j];

//1.声明并初始化二维数组
int[][]yanghui=new int[10][];
//2.给数组元素赋值
yangHui[i][0]=yangHui[i][i]=1;
//2.2给每行的非首末元素赋值
if(i>1){
	for(int j=1;j<yangHui[i].length-1;j++){
		yangHui[i][j]=yangHui[i-1][j-1]+yangHUi[i-1][j];
	}
}
//3.遍历二维数组
for (int i=0;i<yangHui.length;i++){
	for(int j=0;j<yangHui[i].length;j++){
		System.out.println(yangHui[i][j]+"");
	}
	System.out.println();
}

2.面向对象

  • 面向过程(POP)or面向对象(OOP)

二者都是一种思想,面向对象是对于面向过程而言的。

面向过程,**强调的是功能行为,以函数为最小单位,**考虑怎么做。

面向对象:将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做

  • 面向对象的三大特征

封装、继承、多态

  1. 面向过程:“人把大象装进冰箱”
①把冰箱门打开
②抬起大象,塞进冰箱
③把冰箱门关闭

2.面向对象:“人把大象装进冰箱”:以类/对象为最小单位,考虑谁来做

人{
	打开(冰箱){
		冰箱.开();
	}
	
	抬起(大象){
		大象,进入(冰箱);
	}
	关闭(大象){
		冰箱.闭合();
	}
}

冰箱{
		开(){
		打开冰箱,冰箱被打开的细节问题(螺母多少度,开多大..........
		}
		闭合(){
		关闭冰箱时细节问题
		}
}

大象{
	进入(冰箱){
	大象.进入(冰箱){
	大象进入冰箱的细节
	}
	}
	
}

面向对象分析方法分析问题的思路和步骤:

  • 根据问题需要,选择问题所针对的现实世界中的实体。
  • 从实体中寻找解决问题的相关属性和功能,这些属性和功能就形成了概念世界中的类
  • 把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义,即借助某种程序语言,把类构造成计算机能够识别和处理的数据结构。
  • 类实例化成计算机世界中的对象,对象是计算机世界中解决问题的最终工具。

3. 类和对象

  • 类就是对一类事物的描述,是抽象的,概念上的定义

  • 对象是实际存在的该类事物的每个个体,因而也称为实例。

    • 面向对象程序设计的重点是类的设计
    • 类的设计,其实就是类的成员的设计

属性:对应类中的成员变量

行为:对应类中的成员方法

如何使用java类

java类的实例化,即创建类的对象

创建类的对象=类的实例化=实例化类
    
类
//测试类
public class PersonTest{
    public static void main(String[] args){
        //创建Person类的对象
        Person p1-=new Person();
        //调用对象的结构:属性、方法
        //调用属性:“对象.属性”
        p1.name="TOM";
        p1.isMale=true;
       	System.out.println(p1.name);
        
        //调用方法:“对象,方法”
        p1.eat();
        p1.sleep();
        p1.talk(Chinese)
    }
}

//属性=成员变量=field=域、字段
//方法=成员方法=函数=method
class Person{
	 //属性
	 String name;
	 int age=1;
	 boolean isMale;
	//	方法
	public void eat(){
		System.out.println("人可以吃饭");
	}
	public void sleep(){
		System.out.println("人可以睡觉");
	}
    public void talk(String language){
        System.out.println("人可以说话"+language);
    }
}

4.类中方法的声明和使用

方法:描述类应该具有的功能。

比如:Math类,sqrt()\random()\ …

​ Scanner类,nextXxx()…

​ Arrays类,sort()\ binarySearch() \ teString() \ equals() \ …

举例

public void eat(){}
public void sleep(int hour){}
public String getName(){}
public String getNation(String nation){}

方法的声明:权限修饰符 返回值类型 方法名(形参列表){
		方法体
}

1.如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用
           return关键字来返回指定类型的变量或常量。
           如果方法没有返回值,则方法声明时,使用Void来表示,通常,没有返回值的方法中,就使用return,但是,如果使用的话,只能“return;”表示结束此方法的意思
2.我们定义方法该不该有返回值?
	①题目要求 
	②凭经验,具体问题,具体分析
3.方法名:属于标识符,见名知意
4.形参列表:方法可以声明0个,1个,多个
	格式,数据类型1,数据类型2,数据类型3,........
4.1我们定义方法时需不需要形参
	①题目要求
	②凭经验,具体问题,具体分析
5.方法体:方法功能的体现

6.return 关键字的使用
	1.使用范围:使用在方法体中
	2.作用:①结束方法
			②针对于有返回值的方法,使用“”return 数据“方法返回所要的数据。
			③注意点:return后面不能声明执行语句

7.方法的使用中
①可以调用当前类中的属性或方法
	②方法内部可以调用方法
	特殊的:方法A中又调用了方法A:递归
③方法中不可以定义方法

方法的分类:按照是否有形参及返回值

无返回值有返回值
无形参void 方法名(){}返回值的类型 方法名(){}
有形参void方法名(形参列表){}返回值的类型 方法名(形参列表){}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值