zoukankan      html  css  js  c++  java
  • 黑马程序员——java学习2(31-61)——基础2

    1、for与while相比

    for控制循环的变量只作用于for循环,执行完毕释放内存
    比while节省内存
     
    2、重载
    函数名同,参数列表不同
    与返回值无关
     
    3、内存的划分:
    (1)寄存器。
    (2)本地方法区。
    (3)方法区。
    (4)栈内存。局部变量
    (5)堆内存。new出来的实体(数组、对象)
     
    4、栈,自动释放内存
    堆,java垃圾回收机制,不定时。
     
    5、数组的两种异常
    ArrayIndexOutOfBoundsException: 操作数组时,访问到了数组中不存在的下标。
    NullPointerException: 空指针异常,当引用没有任何指向,值为null的情况,该引用还在用于操作实体。
     
    6、s.o.p(arr)
    [I@de6ced
    数组,整数类型,地址为,哈希值(16进制)
     
    7、选择排序
    第一圈,最值出现在第一位
     1 package array;
     2 public class ArrayTest {
     3  public static void selectSort(int[] arr)
     4  {
     5   for(int x=0;x
     6   {
     7    for(int y=x+1;y
     8    {
     9     if(arr[x]>arr[y])
    10     {
    11      int temp=arr[x];
    12      arr[x]=arr[y];
    13      arr[y]=temp;
    14     }
    15    }
    16   }
    17  }
    18  public static void main(String[] args)
    19  {
    20   int []arr={5,1,6,4,2,8,9};
    21   //排序前
    22   printArray(arr);
    23   //排序
    24   selectSort(arr);
    25   //排序后
    26   printArray(arr);
    27  }
    28  public static void printArray(int[] arr)
    29  {
    30   System.out.print("[");
    31   for(int x=0;x
    32   {
    33    if(x!=arr.length-1)
    34     System.out.print(arr[x]+", ");
    35    else
    36     System.out.print(arr[x]);
    37   }
    38   System.out.println("]");
    39  }
    40 }
     
    8、冒泡排序


    第一圈,最值出现在最后位
     
      
     1 public static void bubbleSort(int[] arr)
     2  {
     3   for(int x=0;x
     4   {
     5    for(int y=0;y
     6    {
     7     if(arr[x]>arr[y])
     8     {
     9      int temp=arr[y];
    10      arr[y]=arr[y+1];
    11      arr[y]=temp;
    12     }
    13    }
     
     9、最快排序
    希尔排序
     
    PS:真实开发时Arrays.sort(arr);
     
    10、数组中元素交换时,对数组的元素操作,而不是直接对元素操作
     
    11、操作失败,通常返回-1
     
    12、数组做查找时,存在多个key值时,获取key第一次出现在数组中的位置
     
    13、折半查找
    前提:数组有序
     1 package array;
     2 public class ArrayTest4 {
     3  public static void main(String[] args)
     4  {
     5   int[] arr={2,4,5,7,19,32,45};
     6   int index=halfSearch(arr,32);
     7   int index_2=halfSearch_2(arr,2);
     8   System.out.println("index="+index);
     9   System.out.println("index_2="+index_2);
    10  }
    11  public static int halfSearch(int[] arr,int key)
    12  {
    13   int min,max,mid;
    14   min=0;
    15   max=arr.length-1;
    16   mid=(min+max)/2;
    17   while(arr[mid]!=key)
    18   {
    19    if(key>arr[mid])
    20     min=mid+1;
    21    else if(key
    22     max=mid-1;
    23    if(min>max)//如果查找的值大于最大值,则min无限+1,便大于max
    24     return -1;
    25    mid=(max+min)/2;
    26   }
    27   return mid;
    28  }
    29  public static int halfSearch_2(int[] arr,int key)
    30  {
    31   int min=0,max=arr.length-1,mid;
    32   while(min<=max)
    33   {
    34    mid=(max+min)>>1;
    35   if(key>arr[mid])
    36    min=mid+1;
    37   else if(key
    38    max=mid-1;
    39   else
    40    return mid;
    41   }
    42   return -1;
    43  }
    44  
    45 }
     
    14、进制转换
    (1)十进制-二进制
    %2
    /2
     
    (2)十进制-十六进制
     
    >>>4
     
     1 package array;
     2 public class ArrayTest7 {
     3  public static void main(String[] args)
     4  {
     5   toBin(-6);
     6   toBa(15);
     7   toHex(60);
     8  }
     9  public static void toBin(int num)
    10  {
    11   //十进制转-二进制
    12   trans(num,1,1);
    13  }
    14  
    15  public static void toBa(int num)
    16  {
    17   //十进制转-二进制
    18   trans(num,7,3);
    19  }
    20  
    21  public static void toHex(int num)
    22  {
    23   //十进制转-十六进制
    24   trans(num,15,4);
    25  }
    26  
    27  
    28  public static void trans(int num,int base,int offset)
    29  {
    30   if(num==0)
    31   {
    32    System.out.println(0);
    33    return;
    34   }
    35   char[] chs={'0','1','2','3','4',
    36     '5','6','7','8','9',
    37     'A','B','C','D','E','F'};
    38   char[] arr=new char[32];
    39   int pos=arr.length;
    40   while(num!=0)
    41   {
    42    int temp=num&base;
    43    arr[--pos]=chs[temp];
    44    num=num>>>offset;
    45   }
    46   for(int x=pos;x
    47   {
    48    System.out.print(arr[x]);
    49   }
    50   System.out.println("");
    51  }
    52 }
     
    15、查表法
    建立表格,内部存储0到F,表格有下标,可调整与进制内部对应
     
    16、字符数组被定义时,空位都是u0000
     
    17、二维数组
    (1)初始化
    int [][]arr=new int[3][4];
    s.o.p(arr);//[[I@XXXXX
    s.o.p(arr[0]);//[I@XXXX
    ----------------------------------
    int[][]arr=new int[3][];
    s.o.p(arr[0]);//null

    (2)定义
    一维数组:int[] x; int x[];
    二维数组:int[][]y; int[][]y; int[]y[];
  • 相关阅读:
    在Bootstrap开发框架基础上增加WebApi+Vue&Element的前端
    使用Vue-TreeSelect组件的时候,用watch变量方式解决弹出编辑对话框界面无法触发更新的问题
    使用Vue-TreeSelect组件实现公司-部门-人员级联下拉列表的处理
    利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
    利用过滤器Filter和特性Attribute实现对Web API返回结果的封装和统一异常处理
    使用代码生成工具快速开发ABP框架项目
    基于ABP框架的SignalR,使用Winform程序进行功能测试
    使用egg.js开发后端API接口系统
    小样本学习领域的几篇优秀文章解读——都是度量学习
    用于对机器学习模型进行对抗性攻击、防御和基准测试的Python库:CleverHans 3.0.0
  • 原文地址:https://www.cnblogs.com/sunxlfree1206/p/4657188.html
Copyright © 2011-2022 走看看