黑马程序员——Java函数、数组

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

修饰符:public private 

函数
定义:也叫方法,定义在类中的具有特定功能的独立程序
格式:
修饰符 返回值类型 函数名(变量数据类型 变量1,变量数据类型 变量2)
{
功能代码块;
return 返回值;
}
优点:将功能代码块封装,便于重复调用。只有被调用时才执行,提高了复用性。
      当函数没有具体返回值的时候返回值类型为void。return语句如果在最后一句可以不写。
注意:函数1与函数2间可以调用,但是不能在函数1中又定义函数2
      定义函数时,函数结果应返回给调用者处理
如何定义:
1、该函数功能最后结果是什么?是否有返回值?
2、该函数功能被调用时是否需要传入参数(变量)参与功能运算


函数的重载
概念:简而言之,函数名相同,函数的参数列表个数或者数据类型不同即可
特点:返回值可以不同,


数组
定义;一个存放相同数据类型的集合(容器)
优点:数组会给数组中的元素从0开始编号,方便于操作数据;
格式:
元素类型[] 数组名= new 元素类型[元素个数];
例如:int[] t = new int[5];
      int x[] = new int[3];
元素类型[] 数组名= new[]{元素1,元素2,...};
例如:int t = new int[]{2,4,5};
简化:int t = new int{3,6,7};
其他形式:
int[] t = new int[2];
t[0]=1;
t[1]=4;
数组的一些问题:
1、int[] t = new int[2];
System.out.print(t[4]);
此数组定义是只有两个元素,而却访问了第4个元素,是不存在的。这里问题编译时会提示
数组脚标越界异常(ArrayIndexOutOfBoundsException)
2、int[] t = null;
System.out.print(t[0]);
此数组定义时被置为空,即没有指向实体,只是声明了t是一个数组然而却操作了实体中的
元素,这在编译时会提示
空指针异常(NullPointerException)


数组常见操作:
数组打印 
public static void printArray(int[] x)
{

for(int a=0;a<x.length;a++)
{
if(a!=x.length-1)
System.out.print(x[a]+",");
else
System.out.print(x[a]);
}
System.out.println();
}
获取最(大、小)值
1、定义一个max将max作为数组元素
public static int getMaxarray(int[] arr)
{
int max = arr[0];
for(int a=1; a<arr.length;a++)
{
if(arr[a]>max)
max=arr[a];
}
return max;
}
2、定义一个max将max作为数组下标
public static int getMaxarray_2(int[] arr)
{
int max = 0;
for(int a=1; a<arr.length;a++)
{
if(arr[a]>arr[max])
max=a;
}
return arr[max];
}
数组排序
1、选择排序
将之前的每一个元素都与之后的元素一一比较,将值较为大的元素提前
public static void sortArray(int[] arr)
{
for(int a=0;a<arr.length-1;a++)
{
for(int b=a+1;b<arr.length;b++)
{
if(arr[a]>arr[b])
{
int t = arr[a];
arr[a] = arr[b];
arr[b] = t;
}
}
}
}
2、冒泡排序
public static void sortArray(int[] arr)
{
for(int a = 0; a < arr.length-1;a++)
{
for(int b = 0; b < arr.length-a-1;b++)//-a:让比较的元素减少,-1避免角标超出范围
{
if(arr[b]>arr[b+1])
{
int t = arr[b];
arr[b] = arr[b+1];
arr[b+1] = t;
}
}
}
}
查找数组中某个具体值
1、顺序查找
public static void getIndex()
{
for(int x = 0;x<arr.length;x++)
{
if(arr[x]==val)
return x;
}
return -1;
}
2、折半查找
public static int halfSearch(int[] arr,int key)
{
int max,mid,min;
max=arr.length-1;
min=0;
mid=(max+min)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;


if(min>max)
return-1;
mid = (max+min)/2;
}
return mid;
}
/*
折半的第二种方式
*/
public static int halfSearch_2(int[] arr, int key)
{
int max,mid,min;
max=arr.length-1;
min=0;


while(min<=max)
{
mid=(max+min)>>1;//用位移一位相当于/2
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
else
return mid;

}
return -1;
}


二维数组
概念:数组中的数组,也就是数组中存放的元素也是一个数组
格式:
1、int[][] arr = new int[3][2];//该二维数组中有三个一维数组,每个一维数组中有2个元素
2、int[][] arr = new int[3][];//该二维数组有三个一维数组,每个一维数组都是默认初始化值null,然后对其分别初始化
   arr[0]= new int[3];
   arr[1]= new int[2];
   arr[2]= new int[1];
3、int[][] arr = new int{{3,2,5},{3,2},{5,6,6,6}}//该二维数组有三个一维数组,每个一维数组中的具体元素都初始化


特殊写法:
int[] x,y[]
此时的x是一维数组,y是二维数组




内存结构
简述:为了提高运算效率,Java在运行时对内存分配空间时,进行不同区域的划分
      让其有特定的处理数据方式和内存管理方式。内存被分为三大块
栈内存:存放局部变量,数据使用完之后空间就会释放;
对内存:数组和对象,当new了一个实体时,实体就会存放在堆内存中
每一个实体都有内存地址值,地址值赋值给数组或对象。实体
中变量都有默认初始化值。当实体不被使用后成为垃圾会被Java
中自带的垃圾回收器回收
方法区:存放方法代码,静态变量等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值