Java数组、可变参数、Arrays、面向对象

数组

注: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:赋值长度

面向对象

面向过程:一步一步执行前面的步骤执行结果直接影响后面的步骤.
程序=算法+数据结构.

面向对象:
功能模块化,属性,方法(动作).
区别:面向过程算法有优先,面向对象“如何操作数据”优先.
类:属性(数据/状态)+方法(行为/操作).
对象:时间万物皆对象一个个真实存在的实体.
理解:类描述了对象的行为(方法)和特征(属性),是对象的模板.
步骤:

  1. 抽象出类;
  2. 利用模板(类)创建对象 new( 只要new就会开辟空间);
  3. 调用对象的方法和属性.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值