数组:数组就是相同类型数据的有序集合
数组的声明和创建:变量的类型 变量的名字 = 变量的值
一种是在变量名后面加一个中括号【】,另一种是在名字后面加一个中括号
int[ ] nums; 首选 int nums[];
nums =new int [10];//这里面可以存放10int类型的数字;定义了一个什么类型的数组,就new一个什么类型的数组
数据类型 【】 数组名 = new 数据类型【数组长度】
nums [0] = 1; nums [1] = 2;
System.out.println(num[0]);//1
若是没有赋值,则默认int类型0
java 语言使用new操作符来创造数组,你定义了一个什么样的数组,紧接着就new一个什么样的数组,如上
数组的元素是通过索引访问的,数组索引是从0开始
获取数组长度:arrays.length
for (int i=0; i<nums.length;i++);
sums = sum +nums[i];
}
System.out.println(“总和为:”+sum)//55
数组的基本特点:其长度是确定的,数组一旦被创建它的大小是不可改变的
2:其元素必须是相同的,不允许出现混合类型
3:数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型
4:数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量
5:数组本身就是对象,java中对象是在堆中的,因此数组无论保存原始数据类型还是其他数据类型,数组对象本身是在堆中的。
堆:存放new的对象和数组;可以被所有的线程共享,不会存放别的对象引用
栈:存放基本变量类型(会包括这个基本类型的具体值);引用对象的变量(会存放这个引用在堆里面的具体值)
创建加赋值:语;
静态初始化:int [ ] a= {1,2,3,4,5,6,7,8};
System.out.println(a[0]);//1
动态初始化:int[ ] = new int [10];
b[ 0 ] =10;
System.out.println(b[0]);//10
ArraylndexOutOfBoundsException:数组下标越界异常
数组的使用:1for-each 2数组做方法入参 3数组做返回值
int[ ] arrays = {1,2,3,4,5};
//打印全部的数组元素
for (int i = 0; i < arrays.length; i++}{
System.out.println(arrays[i]);
}
//计算所有元素的和
int sum = 0;
for (int i = 0; i < arrays.length; i++}{
sum = sum + arrays[i]; //sum += arrays[i];
}
System.out.println(“sum=”+sum);
//查找最大元素
int max = arrys [ 0];
for (int i = 1; i < arrays.length; i++}{
if (arrys[i]>max){
max = arraus[i];
}
}
System.out.println(“max=”+max);
}
反转数组:public static void printArray(int[] arrays){
int [] result = new int [arrays.length];
//反转操作for(int i = 0,j = result.length-1;i <arrays.length;i++,j–
){
result [j] = arrays[i];
for (int i = 1; i < arrays.length; i++}{
System.out.print(arrays[i]+" ");
}
多维数组
二维数组:int a [] [] = new int [2] [5];可以看成一个两行五列的数组!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GXyaxv6X-1618220782328)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20210408155141626.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-63LGk1YT-1618220782331)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20210408155228054.png)]
比较数组中,两个相等的元素,如果第一个数比第二个数大,那么我们就交换他们的位置;每次交换都可以产生一个最大和最小的数,下一轮可以少依次排序,直到结束
举例:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z241CPQ7-1618220782332)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20210408155701363.png)]
稀疏数组:
当一个数组大部分为0,或者同一数值时,可以使用稀疏数组来保存该数组
稀疏数组处理方式:记录数组一共有几行几列。有多少个不同的值
把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
面向对象编程:oop oo指的是面向对象
1初始面向对象
2方法回顾和加深
3对象的创建和分析
4面向对象的三大特性
5抽象类和接口
6内部类及oop实战
属性加方法就是一个类
面向对象的本质:以类的方法组织代码,以对象的组织(封装)数据
三大特性:封装。继承。多态
从认识的角度考虑是先有对象后有类,对象,是具体的事物。类是抽象的,是对对象的抽象
从代码角度考虑是先有类后有对象。类是对象的模板
类定义的方法:修饰符 返回值类型 方法名(…){
方法体}
return 返回值(返回值和返回值类型相互对应)
return结束方法,返回一个结果;void不用返回,以为他定义返回值为空
参数列表(参数类型,参数名)
static:静止的 string:一串
方法调用:静态方法:调用的话直接类名.方法名
非静态方法:实例化这个类new;对象类型 对象名 = 对象值
举例:Student student = new Student();
new student .say
调用:对象名.方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jiRWRnvC-1618220782334)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20210412144914948.png)]
引用传递:本质还是值传递
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rjAyARHn-1618220782336)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20210412145740380.png)]
回顾62
类与对象的关系: 类:就是用来描述定义某一具体的事物应该具备的特点和行为
一个项目应该只存在一个main方法
类=属性+方法 属性:字段 String name /int age
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7QsfMyOS-1618220782337)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20210412151803029.png)]
构造器:一个类即使什么都不写,他也会存在一个方法
特点:必须和类的名字相同
2:必须没有返回类型,也不能写void
作用:使用new关键字,必须要有构造器 2用来初始化值
有参构造:一旦定义了有参构造,如果想使用无参构造,无参就必须显示定义
alt+insert生成构造器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pBRbYgTC-1618220782338)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20210412154043345.png)]