java学习2(31-61总结)

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)

[[email protected]

数组,整数类型,地址为,哈希值(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);//[[[email protected]

s.o.p(arr[0]);//[[email protected]

----------------------------------

int[][]arr=new int[3][];

s.o.p(arr[0]);//null

(2)定义

一维数组:int[] x; int x[];

二维数组:int[][]y; int[][]y; int[]y[];

时间: 2024-10-05 16:48:46

java学习2(31-61总结)的相关文章

疯狂Java学习笔记(61)-----------40个Java集合面试问题和答案

1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector.Stack.HashTable和Array.随着集合的广泛使用,Java1.2提出了囊括所有集合接口.实现和算法的集合框架.在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久.它还包括在Java并发包中,阻塞接口以及它们的实现.集合框架的部分优点如下: (1)使用核心集合类降低开发成本,而非实现我们自己的集合类. (2)随着使用经过严格测试的集合框架类,代

Java学习笔记31

我们知道数组是以一块连续内存区来保存所有的数组元素,所以数组在随机访问时性能最好.所有的内部以数组作 为底层实现的集合在随机访问时性能较好:而内部以链表作为底层实现的集合在执行插入.删除操作时性能较好: 进行迭代操作时,以链表作为底层实现的集合比以数组作为底层实现的集合性能好. 我们来看以下程序: public class Main { public static void main(String[] args) { ArrayList array_list=new ArrayList(); f

Java学习笔记(2015.7.27~7.31)

Java学习笔记(2015.7.27~7.31) Java 课堂 Java学习笔记(2015.7.27~7.31) 小技巧 常用方法 1.List另一个子类--LinkedList 2.数组的常用方法 3.排序 1.二分法查找 2.数组转换为List 3.可变参数Type ... param (了解) 1.容器Collection 2.自动拆装箱(了解) 3.JDK增强for循环(了解) 4.泛型(掌握) 5.iterator与for在迭代中的区别 1.概念:保存多个对象的对象. 2.JDk为什

Java学习-006-三种数据库连接 MySQL、Oracle、sqlserver

此文主要讲述在初学 Java 时,常用的三种数据库 MySQL.Oracle.sqlserver 连接的源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-1-31 10:46:48,请知悉. 所需的 jar 包下载链接为:http://yunpan.cn/cKEWbBntAjtKy  访问密码 bd58 以下为初学 Java 常用的三种数据库 MySQL.Oracle.sqlserver 连接的源代码,敬请参阅! MyS

Java学习-005-初学常用的几个经典循环控制源代码

最近一段时间公司 App 改版,一直处在需求评审.代码评审.测试计划.测试用例.用例评审.用例执行.缺陷管理.测试总结的循环中,因而博客也好久没有更新了.虽然工作确实忙了点,但是也是自己懒惰了,从今天开始陆续整理之前学习 Java 时写的 Java 程序,并记录在博客中,供自己查阅,也希望能给初学 Java 的亲们一份参考,希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激! 此文主要讲述在初学 Java 时,常用的几个经典的循环控制程序的源码整理.源代码测试通过日

Java学习-047-数值格式化及小数位数四舍五入

此小工具类主要用于数值四舍五入.数值格式化输出,很简单,若想深入研究,敬请自行查阅 BigDecimal 或 DecimalFormat 的 API,BigDecimal.setScale(位数,四舍五入法)中四舍五入法有如下 7 种: 1. ROUND_UP:远离零方向舍入.向绝对值最大的方向舍入,只要舍弃位非0即进位. 2. ROUND_DOWN:趋向零方向舍入.向绝对值最小的方向输入,所有的位都要舍弃,不存在进位情况. 3. ROUND_CEILING:向正无穷方向舍入.向正最大方向靠拢.

Java学习-040-级联删除目录中的文件、目录

之前在写应用模块,进行单元测试编码的时候,居然脑洞大开居然创建了一个 N 层的目录,到后来删除测试结果目录的时候,才发现删除不了了,提示目录过长无法删除.网上找了一些方法,也找了一些粉碎机,都没能达到想要的结果,我就简写了一个小应用,用于删除自己脑洞大开创建的级联目录.此小应用没有代码注释,也没有进行容错处理,请大家知悉!哈哈哈哈哈.....若发现有错误,也请告知,我会去修改订正,非常感谢! 闲话少述,直接上码了! 1 /** 2 * Aaron.ffp Inc. 3 * Copyright (

Java学习-011-创建文件实例及源代码

此文源码主要为应用 Java 创建文件的源代码.若有不足之处,敬请大神指正,不胜感激! 创建文件的源代码如下所示: 1 /** 2 * @function 文件操作:创建文件.若文件不存在,则直接创建文件:若文件存在且未被占用,则删除文件,并重新创建文件 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java createFile, 2015-2

Java学习-007-Log4J 日志记录配置文件详解及实例源代码

此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-1-30 13:54:02,请知悉. 所需的 jar 包下载链接为:http://yunpan.cn/cKE56sxqtQCfP  访问密码 63d8 有关 Log4J 日志文件中日志级别及文件配置的详细情况,在 Log4J 的配置文件(xml.properties)中有详细的介绍,敬请参阅!

Java学习笔记之继承

一.继承的基础 在Java术语中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass). 举例说明: 1 class Box 2 { 3 public double width; 4 public double height; 5 public double depth; 6 7 //重载构造方法 8 public Box(Box ob) 9 { 10 width = ob.width; 11 height = ob.height; 12 depth = ob.dep