传智播客-Java语句-day2

---------------------- android培训java培训、期待与您交流! ----------------------

------0317数组

数组第1种定义形式:
元素类型[] 数组名=new 元素类型[元素个数或数组长度]
例:int [] x=new int [3]

数组是三种引用类型中的一种
java一共在内存中划分了五个区用来存储:方法区,本地方法区,寄存器,栈,堆。
栈内存的特点:栈内存数据使用完毕,会自动释放
局部变量在栈内存中开辟空间
New出来的变量在堆中(实体对象)
堆内存的每一个实体都有一个存放位置
堆内存中的每一个实体都有默认初始化值
堆内存的三个特点:1.内存地址值,2.默认初始化值,3.垃圾回收机制

------0401

数组第2种定义形式:
int[] arr={2,5,4};//这种定义也是可以的。
提示:ArrayIndexOutOfBoundsException:3  操作数组时访问到了数组中不存在的角标。
提示:NullpointerException:空指针异常

------0402数组

数组是引用类型,直接打印会打印出其地址。
例:System.out.print(arr);//arr为int型数组
结果为:[I@1e5e2c3  //[为数组,I为int类型,@后面为此数组的哈希值。
数组的打印:

只能用循环遍历每个元素例如下列程序
class printarray
{
 public static void main()
  {
  printarray(arr)
  }
}
public static void printarray(int[] arr)
{
 for(int x=0;x<arr.length;x++)
 {
  system.out.print(arr[x]);

 }
}

java一共在内存中划分了五个区用来存储:方法区,本地方法区,寄存器,栈,堆。

栈内存的特点:栈内存数据使用完毕,会自动释放

局部变量在栈内存中开辟空间

New出来的变量在堆中(实体对象)

堆内存的每一个实体都有一个存放位置
堆内存中的每一个实体都有默认初始化值
堆内存的三个特点:1.内存地址值,2.默认初始化值,3.垃圾回收机制


选择排序:选择一个元素与其它元素比较,条件满足交换。
(外循环第一遍选第一个元素与其它元素比较,最大的放在第一位
       第二遍选第二个元素与其右边元素比较,最大的在第二位...)
class ArrayTest2
{
 public static void selectSort(int[] arr)
 {
  for(int x=0;x<arr.length-1; x++)
  {
   for(int y=x+1;y<arr.length; y++)
   {
    if(arr[x]<arr[y])
    {
     int temp=arr[x];
     arr[x]=arr[y];
     arr[y]=temp;
    }
   }
  }
 }
 public static void main(String[] args)
 {
  int[] arr={5,1,6,4,2,8,9};
  PrintArray(arr);//排序前
  selectSort(arr);//排序
  PrintArray(arr);//排序后
 }
 public static void PrintArray(int[] arr)
 {
  System.out.print("[");
  for(int x=0;x<arr.length;x++)
  {
   if(x!=arr.length-1)
    System.out.print(arr[x]+",");
   else
    System.out.println(arr[x]+"]");
  }
 }
}

冒泡排序:相邻两个元素比较,条件满足交换。
(第一遍第一个元素与第二个比,第二个与第三个比...第x-1个与第x个比最大的在最右边
 第二遍第一个元素与第二个比,第二个与第三个比...第x-2个与第x-1个比第二大的在倒数第二位置...)

public static void bubbleSort(int[] arr)
{
 for(int x=0; x<arr.length-1; x++)
 {
  for(int y=0; y<arr.length-x-1;y++)//-x:让每一次比较的元素减少,-1:避免角标越界
  {
   if(arr[y]>arr[y+1])
   {
    int temp=arr[y];
    arr[y]=arr[y+1];
    arr[y+1]=temp;
   }
  }
 }
}

折半查找:
(一个有序的数组中,给定一个key,定义最大max,最小min,和中间mid。key<mid 则max=mid; mid=max+min>>>1...直到mid==key或min>max&max<min退出)

class ArrayTest
{
public static int halfSearch_2(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 -1;
}
public static void main(String[] args)
{
 int[] arr={2,4,5,7,19,32,45};
 System.out.println(hafSearch_2(arr,50));
}
}

 

---------------------- android培训java培训、期待与您交流! ----------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值