数组
注:forEach循环、可变参数在jdk1.5之后才有。
数组:存储一组相同类型数据的数据结构
特点:
1. 元素可以是任何一种数据类型(基本引用)
2. 每个元素都有对应的一个索引索引:用于访问元素
3. 创建好后其大小不能在改变,但其中元素的值可以动态改变
4. 数组下标从0开始
5. 都有属性length(数组长度)
声明:
数据类型【】数组名 | 数据类型数组名【】(类型:基本引用:例:MyData[] c)
创建:
注:
1.new关键字成功创建后的三个动作:
a.创建的数据对象b.内存中分配空间c.初始化默认值
2.数组默认值:
byte、short、int、long:0 ;
double:0.0 ;
float:0.0 .
结论:整形0 浮点0.0 引用类型:String:null
1.数组创建方式以及赋值:
1. Int 【】arr=new int【3】;
arr[0]=1; arr[2]=2;arr[3]=3;|for(…){ a=2*i;}
2. String str[]=new String{“”,””};
3. Int arr[]={1,2,3};
注:数组定义时 数组引用变量(int arr[])放在栈中 具体数据(值)存放在堆中
2.数组引用方式:
arr[index] 数组名+索引 Index:整型常量或者整形表达式
数组越界异常:java.lang.ArrayIndexOutOfBoundsException
原因:元素索引值大于数组长度
增强for循环 forEach :
1.遍历时无法访问索引值à无法动态改变元素值
2.只适合遍历显示元素内容
可变参数: (类型…变量名) double…doub
使用前提:
1.定义方法时使用;
2.确定该方法一定要传参数;
3.参数类型确定,个数不确定。
算法
1.冒泡:
int arr[] = new int[]{11,2,34,21,45,34};
inttemp;
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr.length-i-1; j++) {//i表示每次不需要比较的个数
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
System.out.print(arr+”“);//注意位置
}
2.选择排序:
每一趟选择最小者放到前面拍好的序中.
for (int i = 0; i < arr.length-1; i++) {
intk=i; //默认最小者索引 假设最小者为arr【0】
for(int j = i+1; j < arr.length; j++) { //选最小的记录
if(arr[j]<arr[k]){
k=j;
}
}
if(i!=k){//把最小者放在arr位置 升序
inttemp=arr;
arr=arr[k];
arr[k]=temp;
}
3.查找:
1. 顺序查找参数:数组 key:要查找的元素
2. 二分查找
前提:已经排好序的数组
思想:中间位置:int middle=(low+upper)/2 然后将待查找的值与middle比较
2.1直接返回
2.2 < low不变 upper=middle-1
2.3 >low=middle+1
注:初始:low=0;upper=arr.length-1因为不知道要比较多少次故用while(low<=upper)
二维数组arr.length:行arr.length列
Java.util.Arrays
适用于一维数组
1.Sort(int a[]): 升序
2.binarySerach(int[]a,key): 二分查找
3.toString(); 转换为字符串
4.copyOF(intarr[],newLength)//复制数组 0填充 参数:数组 新数组大小
5.copyOfRang(int arr[],int from,int to);[ ):包前不包后复制数组部分元素
6.fill(int arr【】):所有元素值被同一改变
7.System.arrayCopy(object src,int srcPos,int[] dest,int destPost,int length):
参数说明:
Src:原数组
SRCPOS:原数组起始位子
dest:目标数组
destPos:目标数组起始位置,
length:赋值长度
面向对象
面向过程:一步一步执行前面的步骤执行结果直接影响后面的步骤.
程序=算法+数据结构.
面向对象:
功能模块化,属性,方法(动作).
区别:面向过程算法有优先,面向对象“如何操作数据”优先.
类:属性(数据/状态)+方法(行为/操作).
对象:时间万物皆对象一个个真实存在的实体.
理解:类描述了对象的行为(方法)和特征(属性),是对象的模板.
步骤:
- 抽象出类;
- 利用模板(类)创建对象 new( 只要new就会开辟空间);
- 调用对象的方法和属性.