常用算法

xiaoxiao2021-02-28  118

1.求两数的最大公约数

public static int gcd(int p, int q) { if (q == 0) return p; int r = p % q; return gcd(q, r); }

2.判断一个数是否为素数(prime number)

public static boolean isPrime(int N) { if (N < 2) return false; for (int i = 2; i * i <= N; i++) if (N % i == 0) return false; return true; }

3.递归

方法的第一条语句总是一个包含return的条件语句

②递归调用总是去尝试解决一个规模更小的子问题。

③父问题和子问题之间不应该有交集

4.Java字节码

它是程序的一种低级表示,可以运行于Java虚拟机。将程序抽象为字节码可保证Java程序员的代码能够运行在各种设备上。

5.

System.out.println('b' + 'c');输出结果197.'b'+'c'这种‘+’运算会自动将char或string型转为int型,而'b'的asc2码为98.

6.Java内存泄漏

内存泄漏:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。

如下,是Java的ArrayList的实现,其中使用数组方式进行实现,在list删除时需要将数组的对应引用对象置为null,这样被删除的对象才会被GC回收掉,这个是一个非常经典的容易造成内存泄漏的例子。

public E remove(int index) { rangeCheck(index); modCount++; E oldValue = elementData(index); int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index, numMoved); elementData[--size] = null; // clear to let GC do its work return oldValue; }

参考:http://www.importnew.com/12961.html

7.正整数的二进制表示方法

取商和余数

public static String toBinaryString(int n) { String s = ""; for(int i=n;i>0;i/=2) { s = (i%2) + s; } return s; }8.

转载请注明原文地址: https://www.6miu.com/read-26214.html

最新回复(0)