数组 utils.Arrays 面向对象

来源:互联网 发布:unetbootin windows 编辑:程序博客网 时间:2024/06/06 21:03

数组和常用算法
//forEach循环、可变参数在jdk1.5之后才有。
数组:存储一组相同类型数据的数据结构
特点
1. 元素可以是任何一种数据类型(基本引用)
2. 每个元素都有对应的一个索引索引:用于访问元素
3. 创建好后其大小不能在改变,但其中元素的值可以动态改变
4. 数组下标从0开始
5. 都有属性length(数组长度)
声明:
数据类型【】数组名 | 数据类型数组名【】(类型:基本引用:例:MyData[] c)
创建:
New 关键字 成功创建后的三个动作:
A. 创建的数据对象b.内存中分配空间c.初始化默认值
数组默认值:
Byte、short、Int、long:0 double:0.0 float:0.0
结论:整形0 浮点0.0 引用类型:String:null
数组创建方式以及赋值:
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[])放在栈中 具体数据(值)存放在堆中

数组引用方式:arr[index] 数组名+索引
Index:整型常量或者整形表达式
数组越界异常:java.lang.ArrayIndexOutOfBoundsException
原因:元素索引值大于数组长度
增强for循环 forEach :
1.遍历时无法访问索引值à无法动态改变元素值
2.只适合遍历显示元素内容
可变参数: (类型…变量名) double…doub
使用前提:1.定义方法时使用2.确定该方法一定要传参数3.参数类型确定,个数不确定
算法:——————————————————————————》
冒泡:
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+”“);//注意位置
}
选择排序:
每一趟选择最小者放到前面拍好的序中

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;                            }

查找
1. 顺序查找参数:数组 key:要查找的元素
2. 二分查找
前提:已经排好序的数组
思想:中间位置:int middle=(low+upper)/2 然后将待查找的值与middle比较
2.1直接返回
2.2《 low不变 upper=middle-12.3》low=middle+1
注意:初始:low=0;upper=arr.length-1因为不知道要比较多少次故用while(low<=upper)
二维数组arr.length:行arr.length列
Java.util.Arrays一维数组
Sort(int a[]):升序binarySerach(int[]a,key):二分查找
toString();转换为字符串
copyOF(intarr[],newLength)//复制数组 0填充 参数:数组 新数组大小
copyOfRang(int arr[],int from,int to);[ ):包前不包后复制数组部分元素
fill(int arr【】):所有元素值被同一改变
System.arrayCopy(object src,int srcPos,int[] dest,int destPost,int length):
Src:原数组
SRCPOS:原数组起始位子
dest:目标数组
destPos:目标数组起始位置,
length:赋值长度

面向对象
面向过程:一步一步执行前面的步骤执行结果直接影响后面的步骤
程序=算法+数据结构
面向对象:
功能模块化,属性,方法(动作)
区别:面向过程算法有优先,面向对象“如何操作数据”优先
类:属性(数据/状态)+方法(行为/操作)
对象:时间万物皆对象一个个真实存在的实体
理解:类描述了对象的行为(方法)和特征(属性),是对象的模板
步骤:
1. 抽象出类
2. 利用模板(类)创建对象 new 只要new就会开辟空间
3. 调用对象的方法和属性

0 0