黑马程序员——JAVA基础之数组
------- android培训、java培训、期待与您交流! ----------
数组:
数组的定义: 数组是相同类型数据的集合, 描述的是相同类型的若干个数据按照一定的先后顺序排列组合而成,其中每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。
优点:可以自动给数组中的元素从0开始编号,方便操作这些元素。
数组的四个基本特点:
1.长度固定,一旦被创建它的长度就是不可改变的;
2.其元素类型必须是相同类型,不允许出现混合类型;
3.数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型;
4.数组发量属亍引用类型,数组也可以看做是对象,数组中的每个元素相当于该对象的成员发量,数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组本身是在堆中的。
数组的拷贝:System.arrayCopy(源数组,从哪开始,目标数组,从哪开始贴,粘几个) 。
数组排序:Arrays.sort(被排序的数组) 。
二分法查找:Arrays.binarySearch(哪个数组,数组中的什么元素) 。
填充:Arrays.fill(a, 2, 4,100) 。//将数组a中2到4的索引的元素替换为100
格式1:
元素类型[] 数组名
= new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];
格式2:
元素类型[] 数组名
= new 元素类型[]{元素,元素,……};
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};
1.数组操作常见问题
数组脚标越界异常(ArrayIndexOutOfBoundsException)
int[] arr = new int[2];
System.out.println(arr[3]);
访问到了数组中的不存在的脚标时发生。
空指针异常(NullPointerException)
int[] arr = null;
System.out.println(arr[0]);
2.数组常见操作
获取最值(最大值,最小值)
排序(选择排序,冒泡排序)
折半查找(二分查找)
获取数组中的元素。通常会用到遍历。
/**
* 数组遍历问题,要求打印数组中的所有数
* 给定一个数组,输出最大最小值
*
*/
public class CharDemo
{
public static void main(String [] args)
{
int[] arr = {3,2,4,5,6,7,8};
printArrary(arr);
arraryMax(arr);
arraryMin(arr);
} //函数功能:遍历数组,并打印
public static void printArrary(int[] arr)
{
System.out.print("[ ");
for (int i=0;i<arr.length;i++)
{ if (i!=arr.length-1)
System.out.print(arr[i]+",");
else
System.out.println(arr[i]+" ]");
}
} //函数功能:打印数组最大值
//因为设定0角标元素为最值所以不用和自己比较,从1角标开始遍历比较就可以
public static void arraryMax(int[] arr)
{
int max = arr[0];
for (int i=1;i<arr.length;i++)
{
if (arr[i]>max)
max = arr[i];
}
System.out.println("[ "+max+" ]");
} //函数功能:打印数组最小值
public static void arraryMin(int[] arr)
{
int min = arr[0];
for (int i=1;i<arr.length;i++)
{
if (arr[i]<min)
min = arr[i];
}
System.out.println("[ "+min+" ]");
}
}
/**
* 排序的演示
* 选择排序
* 冒泡排序
*
*/
public class SortDemo
{
public static void main(String [] args)
{
int[] arr = {3,2,5,4,6,7,8,9,1};
selectSort(arr);
printArrary(arr);
bubbleSort(arr);
printArrary(arr);
} //数组内两个数换位
public static void swap(int[] arr,int x,int y)
{
int temp;
temp =arr[x];
arr[x] = arr[y];
arr[y] = temp;
} //按照格式遍历打印。
public static void printArrary(int[] arr)
{
System.out.print("[ ");
for (int t=0;t<arr.length;t++)
{
if (t!=arr.length-1)
System.out.print(arr[t]+",");
else
System.out.println(arr[t]+" ]");
}
} //给数组由小到大顺序排序,顺序排序
public static void selectSort(int[] arr)
{
for (int n=0;n<arr.length-1;n++)
{
for (int m=n+1;m<arr.length;m++)
{
if (arr[m]<arr[n])
swap(arr,n,m);
}
}
} //给数组由大到小排序,冒泡排序
public static void bubbleSort(int[] arr)
{
for (int i=0;i<arr.length-1;i++)
{
for(int c=0;c<arr.length-i-1;c++)
{
if (arr [c]<arr [c+1])
swap(arr,c,c+1);
}
}
}
}
/**
*
* 数组角标和查找等练习
*
*/
public class SearchDemo
{
public static void main(String[] args)
{
int[] arr = {1,2,3,4,6,7,8};
System.out.println(getArrary(arr,4));
System.out.println(getIndex(arr,5));
System.out.println(getArrary(arr,6));
} //定义一个函数,查找数组中某一数角标,返回数第一次出现的时候的角标
public static int getArrary(int[] arr,int key)
{
for (int i=0;i<arr.length;i++)
{
if (arr[i]==key)
return i;
}
return -1;
} //折半查找,只应用于有序数组
//java类库中定义了折半查找方法,开发时找API Arrarys.binarySearch(arr,4);
public static int halfSearch(int []arr,int key)
{
int min,mid,max;
min=0;
max=arr.length-1;
mid=(min+max)/2;
while (arr[mid]!=key)
{
if (key>arr[mid])
{
min=mid+1;
}
else if(key<arr[mid])
max=mid-1; mid=(min+max)/2;
}
return mid;
} //插入一个数到一个有序数组中,保持这个数组的有序
public static int getIndex(int[] arr,int key)
{
int min = 0,max = arr.length-1,mid; while(min<=max)
{
mid = (max+min)>>1; if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return min;
}
}
二维数组
格式1:int[][] arr = new int[3][2];
定义了名称为arr的二维数组
二维数组中有3个一维数组
每一个一维数组中有2个元素
一维数组的名称分别为arr[0], arr[1], arr[2]
给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
格式2:int[][] arr = new int[3][];
二维数组中有3个一维数组
每个一维数组都是默认初始化值null
可以对这个三个一维数组分别进行初始化
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
------- android培训、java培训、期待与您交流! ----------
黑马程序员——JAVA基础之数组的更多相关文章
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)
正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G QQ 1481135711 这是我总 ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- 黑马程序员——JAVA基础之语法、命名规则
------- android培训.java培训.期待与您交流! ---------- 1.java语言组成:关键字,标识符,注释,常量和变量,运算符,语句,函数,数组. 2.java关键字:被Jav ...
- 黑马程序员——JAVA基础之泛型和通配符
------- android培训.java培训.期待与您交流! ---------- 泛型: JDK1.5版本以后出现新特性.用于解决安全问题,是一个类型安全机制. 泛型好处: ...
- 黑马程序员——JAVA基础之简述面向对象,类,变量,匿名对象
------- android培训.java培训.期待与您交流! ---------- 面向对象: 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将 ...
- 黑马程序员——JAVA基础之Collections和Arrays,数组集合的转换
------- android培训.java培训.期待与您交流! ---------- 集合框架的工具类: Collections : 集合框架的工具类.里面定义的都是静态方法. Col ...
- 黑马程序员——JAVA基础之简述设计模式
------- android培训.java培训.期待与您交流! ---------- 设计模式(Design Patterns) 设计模式(Design pattern)是一套被反复使用.多数人知晓 ...
- 黑马程序员——JAVA基础之反射
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- Java 反射是Java语言的一个很重要的特征,它使得Java具体了"动态 ...
随机推荐
- js和C#中的编码和解码
同一个字符串,用URL编码和HTML编码,结果是完全不同的. JS中的URL编码和解码.对 ASCII 字母和数字及以下特殊字符无效: - _ . ! ~ * ' ( ) ,/?:@&=+$# ...
- [VS]vs的宏
宏的查看: 我们在Visual Studio中经常会接触到形如$(TargetFileName)这样的VS宏.它们不是全局宏,不能在一般CMD窗口中通过set命令查看, 但是可以通过VS的命令窗口打开 ...
- 分享Windows Server 2012 R2的获取正版密钥方法
然后使用“我有ISIC卡”验证,目前可用号码:S420546009858. 分享Windows Server 2012 R2的获取正版密钥方法. 首先登陆dreamspark注册一个账号https:/ ...
- copy和assign的使用和区别
1.使用copy和assign都可以进行修饰属性或者变量. 2.区别: (1)copy的使用:使用这个进行修饰的属性,当已经进行初始化之后,就无法再改变属性的数据. 如: @property (cop ...
- php大力力 [003节]php在百度文库的几个基础教程mac环境下文本编辑工具
2015-08-22 php大力力003.mac环境下文本编辑工具 在windows下,使用notepad特别多.在mac下使用“备忘录”app,word,反而没有存储过txt后缀等不同文本. mac ...
- Ubuntu 升级VisualBox后无法启动 Kernel driver not installed (rc=-1908)
VisualBox之所以在Linux上比传统的VMware快得多,关键一点就是它和Linux内核的结合比较紧密,这也是开源的优点. 不过Linux内核更新很频繁,每次更新内核后启动VirtualBox ...
- python的变量作用域
import time global mark,sum def gaosi(Q): global sum,mark # 在 使用的时候防止隔离 也要声明一下 这个是全局变量 , 引用外面的值 sum+ ...
- HTML中的边框属性
可以通过边框风格属性border-style设定上下左右边框的风格,该属性用于设置一个元素边框的样式,而且必须用于指定可见的边框.可以使用1到4个关键字,如果四个值都给出了,它们分别用于上.右.下和左 ...
- Windows Phone,向localdatabase中插入时间数据出现不能转换的错误
在开发一个小程序时,使用到了DateTime类型的 DBType, 当向数据库中插入一条信息时,报错说是DateTime类型不能转换. 后来发现是系统给我的DateTime类型的列赋予了个初值,而这个 ...
- MySQL 字符集设置
/*************************************************************************** * MySQL 字符集设置 * 说明: * 数 ...