二维数组
定义:数组中还有数组。
二维数组的应用场景
当我们需要把数组进行分组管理的时候,就需要运用到二维数组。
二维数组的的静态初始化。
格式:数据类型[]数组名 = new 数据类型[][]{{元素1,元素2} ,{元素1,元素2}};
范例:int[][] arr = new int[][]{{11,22},{33,44}};
简化格式:数据类型[] 数组名 = {{元素1,元素2},{元素3,元素4}};
范例:int[][]arr = {{11,22},{33,44}};{习惯用这个}
范例:int arr[][] = {{11,22},{33,44}};
//以后建议这样定义,把每一个一维数组,单独写成一行
//注意:每一个一维数组其实是二维数组中的元素,所以每一个一维数组中间需要用逗号隔开,最后一个一维数组不用加逗号。
int[][] arr3 = {
{1,2,3},
{4,5,6,7,8}
};
//2.获取元素
//arr[i][j];
arr:二维数组
i:二维数组的索引,获取出来的是里面的一维数组
j:表示一维数组中的索引,获取出来的就是真正的元素。
System.out.println(arr3[0][0]);//表示获取二维数组中的第一个一维数组
//arr3[0]:二维数组中的第一个一维数组
//arr3[0][0]:获取第一个一维数组中0索引的元素:1
System.out.println(arr3[1][4]);//打印数字8
//3.遍历
先得到一维数组,在遍历一遍数组获取元素
//外循环:遍历二维数组,得到里面的每一个一维数组
for(int i = 0; i < arr3.length; j++) {
//j:表示一维数组中的每一个元素
System.out.print(arr3[i][j] + " ");
}
System.out.println();
二维数组的动态初始化
格式:数据类型[][] 数组名 = new 数据类型[m][n];
m表示这个二维数组,可以存放多少个一维数组
n表示每一个一维数组,可以存放多少个元素
范例:int[][] arr = new int[2][3];
该数组可以存放2个一维数组,每一个一维数组中可以存放3个 int类型元素。
//1.利用动态初始化格式创建二维数组
//3:表示二维数组长度为3,可以3个一维数组
//5:表示每一个一维数组的长度都是5
int[][]arr = new int[3][5];
//给二维数组赋值一个元素
arr[0][0] = 10;
//遍历二维数组
//外循环:
//内循环
for(int i = 0,i < arr.length; i++){
for(int j = 0; j < arr[i].length;j++){
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
二维数组的内存图
面向对象
面向:拿,找
对象:能干活的东西
面向对象编程:拿东西过来做对应的事情
面向对象的重点学习什么?
学习获取已有对象并使用
学习如何自己设计对象并使用
设计对象并使用
类和对象
类(设计图):是对象共同特征的描述
对象:是真实存在的具体东西。
在JAVA中,必须先设计类,才能获取对象。
如何定义类
如何得到类的对象
类名 对象名 = new 类名();
Phone p = new Phone();
如何使用对象
访问属性:对象名.成员变量
访问行为:对象名.方法名(.....)
类的几个补充注意事项
用来描述一类事物的类,专业叫做:Javabean类。在Javabean类中,是不写main方法的。
在以前,编写main方法的类,叫做测试类。
我们可以在测试类中创建javabean类的对象并进行赋值调用。
{1、JavaBean必须是一个公开的类,也就是说JavaBean的类访问权限必须是public的。
2、JavaBean必须是具有一个无参数的构造方法。如果在JavaBean中定义了自定义的有参构造方法,就必须添加一个无参数构造方法,否则将无法设置属性,如果没有定义自定义的有参构造方法,则可以利用编译器自动添加的无参构造方法。
3.JavaBean
JavaBean是一种Java语言写成的可重用组件。
所谓javaBean,是指符合如下标准的Java类:
--类是公共的
--有一个无参的公共的构造器
--有属性,且有对应的get、set方法
--用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。
用户可以认为JavaBean提供了一种随时随地的复制和粘
贴的功能,而不用关心任何改变。
————————————————
原文链接:https://blog.csdn.net/weixin_57219104/article/details/122005510}
类名首字母建议大写,需要见名知意,驼峰模式。
一个JAVA文件中可以定义多个class类,且只能一个类是public修饰。而且public修饰的类名必须成为代码文件名。
实际开发中建议还是一个文件定义一个class类。
成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值;一般无需指定初始化值,存在默认值。
面向对象 03封装
封装
封装的好处:
原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为
降低我们的学习成本,可以少学,少记,或者说压根不用学,不用记对象有哪些方法,有需要时去找就行。
让编程变得简单,有什么事,找对象,调方法就行。
封装告诉我们,如何正确设计对象的属性和方法。
private关键字
是一个权限修饰符
可以修饰成员(成员变量和成员方法)
被private修饰的成员只能在本类中访问
针对private修饰的成员变量,如果需要被其它类使用,提供相应的操作。
提供“setXxx(参数)”方法,用于给成员变量赋值,方法用public修饰。
提供“getXxx()”方法,用于获取成员变量的值,方法用public修饰
this关键字
this的作用:可以区别成员变量和局部变量
成员变量和局部变量
成员变量:定义在方法外面
局部变量:定义在方法里面
打印(System.out.println(age)):就近原则,谁离我近,我就用谁。
如果要用成员变量,需要在age前面加上this
eg:
System.out.println(this.age);
局部变量
public void setName(String name){
//局部变量表示测试类中调用方法传递过来的数据
//等号的左边,就表示成员位置的name
this.name = name;
}
构造方法的学习目标
构造方法的格式
构造方法的作用:创造对象的时候,由虚拟机自动调用,给成员变量进行初始化的。
构造方法概述
构造方法也叫做构造器,构造函数
作用:在创建对象的时候给成员变量进行赋值的。
构造方法有两种
无参数构造方法:初始化的的对象,成员变量的数据均采用默认值。
有参数构造方法:在初始化对象的时候,同时可以为对象进行赋值。
构造方法注意事项
构造方法的定义
如果没有定义构造方法,系统将给出一个默认的无参数构造方法。
如果定义了构造方法,系统将不再提供默认的构造方法。
构造方法的重载
带参构造方法,和无参数构造方法,两者方法名相同,但是参数不同,这叫做构造方法的重载。
推荐的使用方式
无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法。
任何类定义出来,默认就自带了无参数构造器,写不写都有。
一旦定义了有参数构造,无参数构造就没有了,此时就需要自己写无参数构造器了。
标准的JavaBean类
类名需要见名知意
成员变量使用private修饰
提供至少两个构造方法
无参构造方法
带全部参数的构造方法
成员方法
提供每一个成员变量对应的setXxx()/getXxx()
如果还有其他行为,也需要写上。
对象内存图
Java内存分配介绍
一个对象的内存图
一个对象的内存图
Student s = new Student();
加载class文件:把Student加载到内存
申明局部变量:对s进行申明
在堆内存中开辟一个空间:new
默认初始化
显示初始化
构造方法初始化
将堆内存中的地址值赋值给左边的变量
4.5.6.都是对3.的变量进行赋值
多个对象的内存图
两个变量指向同一个对象内存图
this的内存原理
this的作用:区分局部变量和成员变量
this的本质:代表方法调用者的地址值
基本数据类型和引用数据类型的原理
基本数据类型:数据值是存储在自己的空间中
特点:赋值给其他变量,也是夫的真实的值。
引用数据类型:数据值是存储在其他空间中,自己空间中存储的是地址值。
特点:赋值给其他变量,赋的地址值。
局部变量和成员变量的区别(了解)
API
应用程序编程接口
简单理解:API就是别人已经写好的东西,我们不需要自己编写,直接使用即可。
public static void main(String[]args){
Random r = new Random;
int nummber = r.nextInt(100);
}
Java API指的就是JDK中提供的各种功能的JAVA类。这些类将底层的实现封装了起来,不需要管新蕾是如何实现的,只要学习这些类是如何使用即可。
还会有更多API
API帮助文档
帮助开发人员更好的使用API和查询API的一个工具。
字符串在开发中的应用场景
用户登录
屏蔽一些字符
字符串学习内容
String ,StringBuilder,StringJonier,StringBuffer,Pattern,Pattern,Matcher
可以掌握字符串的一些常见操作了
实际开发中的一些常见案例
掌握分析问题,解决问题的能力