我是一名初级开发人员,我使用java做网站开发。我知道推荐 org.apache.common.lang.StringUtils 因为它的 null 安全性。但是什么是空安全或空安全确切?为什么下面的代码很难看?
if( sth != null ) { ... }
byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=6;
b6=b4+b5; // line3
b3=b1+b2; // line4: error: incompatible types: possible lossy conversion from int to byte
System.out.println(b3+b6);
Run Code Online (Sandbox Code Playgroud)
为什么第3行是对的?似乎类型不正确,我应该得到第4行的错误.
当我阅读归并排序的空间复杂度时,我得到的空间复杂度是O(n+logn)。O(logn)当我们考虑递归过程的堆栈帧大小时计算。
但堆排序也利用了递归过程,即heapify过程。为什么堆排序的空间复杂度是O(1)?
我正在阅读的代码是
``java
public class HeapSort {
public void buildheap(int array[]){
int length = array.length;
int heapsize = length;
int nonleaf = length / 2 - 1;
for(int i = nonleaf; i>=0;i--){
heapify(array,i,heapsize);
}
}
public void heapify(int array[], int i,int heapsize){
int smallest = i;
int left = 2*i+1;
int right = 2*i+2;
if(left<heapsize){
if(array[i]>array[left]){
smallest = left;
}
else smallest = i;
}
if(right<heapsize){
if(array[smallest]>array[right]){
smallest = right;
}
}
if(smallest …Run Code Online (Sandbox Code Playgroud)