Java語言是目前廣泛應用的編程語言之一,在程序開發過程中,開發者經常需要計算數據占用的空間大小。C/C++語言中有一個sizeof運算符可以用來計算內存占用大小,Java中并沒有sizeof運算符。
public class Test{ private int num; private String name; public static void main(String[] args){ Test test = new Test(); System.out.println(test.size()); } public int size(){ //計算對象占用的空間大小 int size = 0; //對一個對象的實例變量進行遍歷 Class clazz = this.getClass(); Field[] fields = clazz.getDeclaredFields(); for(Field field : fields){ //排除靜態變量 if(!Modifier.isStatic(field.getModifiers())){ //根據類型累加size大小 if(field.getType().equals(int.class)){ size += 4; }else if(field.getType().equals(long.class)){ size += 8; }else if(field.getType().equals(byte.class)){ size += 1; }else if(field.getType().equals(short.class)){ size += 2; }else if(field.getType().equals(float.class)){ size += 4; }else if(field.getType().equals(double.class)){ size += 8; }else if(field.getType().equals(boolean.class)){ size += 1; }else{ size += 4; } } } return size; } }
在Java中,可以通過反射機制來實現類對象中各個成員變量占用的空間大小計算。以上代碼通過對類的靜態成員變量進行遍歷,判斷成員變量類型累加空間大小,計算對象占用的空間大小。
上一篇css圖復選框