一堆数组声明
一堆数组的声明方式:
type var[]或type[] var;
例如:
int a[];
int[] a1;
double b[];
Mydate[] c;//对象数组
一堆数组的初始化
动态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行
int[] arr=new int[3];
arr[0]=3;
arr[1]=9;
arr[2]=8;
静态初始化:在定义数组的同时就为数组元素分配空间并赋值。
int a[]=new int[]{3,9,8};
int[] a={3,9,8};
数组元素的引用
定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;
数组元素的引用方式:数组名[数组元素的下标]
数组元素的下标可以是整型常量或整形表达式。如a[3],b[i],c[6*i];
数组元素下标从0开始;长度为n的数组合法下标取值范围:0->n-1;如int a[]=new int a[3];可引用的数组元素为a[0]、 a[1]、a[2]
每个数组都有一个属性length指明它的长度,例如:a.length指明数组a的长度(元素个数)
数组一旦初始化,其长度是不可变的
数组元素的默认初始化
数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量相同的方式被隐式初始化。例如:
public class Test{
public static void main(String argv[]){
int a[]=new int[5];
System.out.println(a[3]);//a[3]的默认值为0
}
}
使用动态初始化的时候,数组的元素会有默认值,数字类型的默认值是0,对象的默认类型是null
多维数组
二维数组[][]:数组中的数组 |
格式1(动态初始化):int[][] arr=new int[3][2]; |
定义了名称为arr的二维数组 二维数组中有三个一维数组 每一个一维数组中有2个元素 一维数组的名称分别为arr[0],arr[1],arr[2] 给第一个一维数组1脚标位赋值为78写法是:arr[0][1]=78; |
格式2(动态初始化):int[][] arr=new int[3][]; |
二维数组中有三个一维数组 每一个一维数组都是默认初始化值null(注意:区分于格式1) 可以对这三个一维数组分别进行初始化 arr[0]=new int[3]; arr[1]=new int[1]; arr[2]=new int[2]; 注: int[][] arr=new int[][3];//非法 |
int[][] ii=new int[][]{
{1,2},
{4,2}
};
int[][] ii0=new int[2][3];//第一维部分的长度是2,第二维也就是第一维的每个元素的长度是3
//{
// {1,23,4},
// {2,4,6}
//}
格式3(静态初始化):int[][] arr=new int[][]{{3,8,2},{2,7},{9,0,1,6}}; |
定义一个名称为arr的二维数组,二维数组中有三个一维数组 每一个一维数组中具体元素也都已初始化 第一个一维数组arr[0]={3,8,2}; 第二个一维数组arr[1]={2,7}; 第三个一维数组arr[2]={9,0,1,6}; 第三个一维数组的长度表示方式:arr[2].length; |
>注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。 >Java中多维数组不必都是规则矩阵形式 |
冒泡排序
排序思想:
相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其他的数进行类似操作。
数组操作常见问题
(编译时不报错)
数组下标越界异常(ArrayIndexOutOfBoundsException) |
int[] arr=new int[2]; System.out.println(arr[2]); 访问到了数组中不存在的脚本时发生。 |
空指针异常(NullPointerException) |
int[] arr=null; System.out.println(arr[0]); arr没有引用指向实体,却在操作实体中的元素时。 |
3.1 面向对象与面向过程
·面向对象(OOP)与面向过程(POP)
>二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。面型对象,将功能封装进行对象,强调具备了功能的对象。
>面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
·面向对象的三大特征
>封装(Encapsulation)
>继承(Inheritance)
>多态(Polymorohism)
OOP:Object Oriented Programming
面向过程:procedure oriented programming
类的语法格式
修饰符 class 类名{
属性声明;
方法声明;
}
说明:修饰符public:类可以被任意访问
类的正文要用{ }括起来
举例:
public class Person{
public int age; //声明公有变量age
public void showAge(){//声明方法showAge()
System.out.println(age);
}
}
创建Java自定义类
步骤:
1、定义类(考虑修饰符、类名)
2、编写类的属性(考虑修饰符、属性类型、属性名、初始化值)
3、编写类的方法(考虑修饰符、返回值类型、方法名、形参等)
对象的创建和使用
>使用new+构造器创建一个新的对象;
>使用“对象名.对象成员”的方式访问对象成员(包括属性和方法);
举例:
public class Animal{
public int legs;
public void eat(){
System.out.println("Eating.");
}
public void move(){
System.out.println("Move.")
}
}
public class Zoo{
public static void main(String args[]){
Animal xb=new Animal();
xb.legs=4;
System.out.println(xb.legs);
xb.eat();
xb.move();
}
}
3.3 类的成员之一:属性
·语法格式:
修饰符 类型 属性名=初值;
>说明:修饰符private:该属性只能由该类的方法访问。
修饰符public:该属性可以被该类以外的方法访问。
类型:任何基本类型,如int、boolean和任何类。
·举例:
public class Person{
private int age; //声明private变量age
public String name="Lila"; //声明public变量name
}
补:变量的分类:成员变量与局部变量
·在方法体外,类体内生成的变量称为成员变量。
·在方法体内部声明的变量称为局部变量。