各位大佬好:
在学习经历的版块发技术贴,也不敢造次,发发最近的数组和对象的相关概念,如下请笑纳: 先推荐大家一个链接: https://www.runoob.com/java/java-examples.html ,有各种实例方法可以查阅试验,左侧也有各种的相关概念,概念中有超链接的方法都可以点进去看看实例用法。祝大家基础班升学考试旗开得胜。
数组:
1、声明与初始化
数组: 存储同一种数据类型的多个元素的容器。
声明格式:
dataType[] arrayRefVar; // 首选的方法
dataType arrayRefVar[]; // 效果相同,但不是首选方法
数组的初始化:
A:动态初始化
只给长度,系统给出默认值。
举例:int[] arr = new int[3];
B:静态初始化
给出值,系统决定长度。
举例:int[] arr = new int[]{1,2,3};
简化版:int[] arr = {1,2,3};
Java数组内存结构:
数组名是一个引用(指针),在栈上存储,数组元素在堆上分配内存空间,有Java垃圾回收机制管理。
数组拥有属性:
array.length ----> 数组的长度
2、二维数组
1. 元素是一维数组的数组。
2. 格式:
A: 数据类型[][] 数组名 = new 数据类型[m][n];
B: 数据类型[][] 数组名 = new 数据类型[m][];
C: 数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}};
D: 数据类型[][] 数组名 = {{...},{...},{...}};
3. 内存模型
a[m][n]中的a是引用的引用(二级指针),a[m]是引用(一级指针),a[0][0]是具体的数组元素。
3、方法
格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return 返回值;
}
使用方法时需要明确: ① 返回值类型 ② 参数列表
方法重载:
与C++中的函数重载一致。
① 在同一个类中,方法名相同,参数列表不同。与返回值无关。
② 参数列表不同:
参数的个数不同。
参数的对应的数据类型不同。
注意事项:
A: 方法之间是平级关系,不能嵌套定义
B: 如果方法有明确的返回值类型,就必须有return语句返回。
类和对象:
1、属性和方法
类是对现实事物的抽象,是对方法和属性的封装。
属性: 即类中的变量,包括:
局部变量: => 在方法、构造方法或者语句块中定义的变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
成员变量: => 在类中,方法体之外的变量定义。在创建对象的时实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
成员变量: => 类变量也声明在类中,方法体之外,但必须声明为static类型。
构造方法:
格式:
A:方法名和类名相同
B:没有返回值类型,连void都不能有
C:没有返回值
每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。
与C++类似,如如果我们给出了构造方法,系统将不再提供默认构造方法。
2、关键概念
Student s = new Student()执行的过程:
(1)把Student.class文件加载到内存
(2)在栈内存为s开辟空间
(3)在堆内存为学生对象申请空间
(4)给学生的成员变量进行默认初始化。null,0
(5)通过构造方法给成员变量进行初始化。刘意,30
(6)对象构造完毕,把地址赋值给s变量
匿名对象:
(1)没有名字的对象
(2)应用场景
A:调用方法,仅仅只调用一次的时候。
b:可以作为实际参数传递。
this关键字:
代表当前类的本身的引用。
static关键字:
(1)静态含义:
可以修饰成员变量和成员方法。
(2)静态的特点:
A:随着类的加载而加载
B:优先与对象存在
C:被类的所有对象共享
D:可以通过类名调用
(3)静态的内存图
静态的内容在方法区的静态区
(4)静态的注意事项:
A:在静态方法中没有this对象
B:静态只能访问静态
3、代码块
(1)用{}括起来的代码。
(2)分类:
A:局部代码块
用于限定变量的生命周期,及早释放,提高内存利用率。
B:构造代码块
定义在类的成员位置上,使用"{}"括起来的代码。
把多个构造方法中相同的代码可以放到这里,每个构造方法执行前,首先执行构造代码块。
C:静态代码块
定义在类的成员位置上,使用"{}"括起来的代码,只是多了一个static修饰。
静态代码块是类被加载的时候就会执行,静态代码块只会被执行一次,对类的数据进行初始化。
(3)静态代码块,构造代码块,构造方法的顺序问题?
静态代码块 > 构造代码块 > 构造方法
|
|