当前位置:首页 » 编程语言 » java空对象

java空对象

发布时间: 2022-10-25 17:47:03

⑴ 一个java对象到底占用多大内存

Object o=new Object():
在java中空对象占八个字节,对象的引用占四个字节。所以上面那条语句所占的空间是4byte+8byte=12byte.java中的内存是以8的倍数来分配的,所以分配的内存是16byte.
举个例子:
Class O{
int i;
byte j;
String s;
}
其所占内存的大小是空对象(8)+int(4)+byte(1)+String引用(4)=17byte,因要是8的整数倍,所以其占大小为24byte.
当然,如果类里有其他对象的话,也要把其他对象的空间算进去

⑵ java中一个void修饰的方法无返回值,那么有是不是返回一个空对象,有空对象这种说法吗

空对象是指null。void表示没有返回,包括没有返回空对象。
你可以测试下void方法内部,return null;是会报编译错误的。只能return;

⑶ java对象为空的判断

/**
*判断对象或对象数组中每一个对象是否为空:对象为null,字符序列长度为0,集合类、Map为empty
*
*@paramobj
*@return
*/
(Objectobj){
if(obj==null)
returntrue;

if(objinstanceofCharSequence)
return((CharSequence)obj).length()==0;

if(objinstanceofCollection)
return((Collection)obj).isEmpty();

if(objinstanceofMap)
return((Map)obj).isEmpty();

if(objinstanceofObject[]){
Object[]object=(Object[])obj;
if(object.length==0){
returntrue;
}
booleanempty=true;
for(inti=0;i<object.length;i++){
if(!isNullOrEmpty(object[i])){
empty=false;
break;
}
}
returnempty;
}
returnfalse;
}
应用场景:
读取excel文件,转化为一个二维数组:Object[][]arrays
但是excel中有空行,所以需要过滤Object[][]arrays中的空的一维数组:
Java代码
/***
*过滤数组中的空元素
*
*
*@paramarrays
*@return
*/
publicstaticObject[][]filterEmpty(Object[][]arrays){
intsumNotNull=0;
/***
*统计非空元素的总个数
*/
for(inti=0;i<arrays.length;i++){
Objectobject=arrays[i];
if(!ValueWidget.isNullOrEmpty(object)
&&!SystemUtil.isNullOrEmpty((Object[])object)){//判断元素是否为空
sumNotNull=sumNotNull+1;
}
}
Object[][]filtedObjs=newObject[sumNotNull][];
intindex=0;
for(inti=0;i<arrays.length;i++){
Object[]object_tmp=arrays[i];
if(!ValueWidget.isNullOrEmpty(object_tmp)
&&!SystemUtil.isNullOrEmpty((Object[])object_tmp)){//判断元素是否为空
filtedObjs[index++]=object_tmp;
}
}
returnfiltedObjs;
}
判断对象的所有成员变量是否为空
Java代码
/***
*Determinewhethertheobject'sfieldsareempty
*
*@paramobj
*@paramisExcludeZero:true:数值类型的值为0,则当做为空;----false:数值类型的值为0,则不为空
*
*@return
*@throwsSecurityException
*@
*@throwsNoSuchFieldException
*@throwsIllegalAccessException
*/
(Objectobj,booleanisExcludeZero)
throwsSecurityException,IllegalArgumentException,
NoSuchFieldException,IllegalAccessException{
if(ValueWidget.isNullOrEmpty(obj)){//对象本身就为null
returntrue;
}
List<Field>fieldList=ReflectHWUtils.getAllFieldList(obj.getClass());
booleanisNull=true;
for(inti=0;i<fieldList.size();i++){
Fieldf=fieldList.get(i);
ObjectpropertyValue=null;
try{
propertyValue=getObjectValue(obj,f);
}catch(NoSuchFieldExceptione){
e.printStackTrace();
}

if(!ValueWidget.isNullOrEmpty(propertyValue)){//字段不为空
if(){//是数字
if(!((Integer)propertyValue==0&&isExcludeZero)){
isNull=false;
break;
}
}elseif(propertyValueinstanceofDouble){//是数字
if(!((Double)propertyValue==0&&isExcludeZero)){
isNull=false;
break;
}
}elseif(propertyValueinstanceofFloat){//是数字
if(!((Float)propertyValue==0&&isExcludeZero)){
isNull=false;
break;
}
}elseif(propertyValueinstanceofShort){//是数字
if(!((Short)propertyValue==0&&isExcludeZero)){
isNull=false;
break;
}
}else{
isNull=false;
break;
}
}
}
returnisNull;
}
测试:
Java代码
@Test
publicvoidtest_isNullObject()throwsSecurityException,
IllegalArgumentException,NoSuchFieldException,
IllegalAccessException{
Person2p=newPerson2();
Assert.assertEquals(true,ReflectHWUtils.isNullObject(p,true));
Assert.assertEquals(false,ReflectHWUtils.isNullObject(p,false));

p.setAddress("beijing");
Assert.assertEquals(false,ReflectHWUtils.isNullObject(p,true));
Assert.assertEquals(false,ReflectHWUtils.isNullObject(p,false));

p.setAddress(null);
p.setId(0);
Assert.assertEquals(true,ReflectHWUtils.isNullObject(p,true));
Assert.assertEquals(false,ReflectHWUtils.isNullObject(p,false));

}
Person2源代码(省略getter,setter方法):
Java代码
importjava.sql.Timestamp;

publicclassPerson2{
privateintid;
privateintage;
privatedoubleweight;
privateStringpersonName;
privateTimestampbirthdate;
publicStringidentitify;
protectedStringaddress;
Stringphone;

}

⑷ java中如何判断一个对象是不是为空

Item item = new Item();这个对象肯定是为空的
错了,这个对象已经分配了内存,不是空的,用System.out.println(item)打印就知道已经存在地址,如果是空,打印null;

判断一个对象是否为空,就是按那个条件判断,没有错,System.out.println();是控制台比较实用的调试,测试方法

⑸ java 怎样判断一个对象是否为空

Item item = new Item();这个对象肯定是为空的
错了,这个对象已经分配了内存,不是空的,用System.out.println(item)打印就知道已经存在地址,如果是空,打印null;

判断一个对象是否为空,就是按那个条件判断,没有错,System.out.println();是控制台比较实用的调试,测试方法

⑹ Java中判断对象为空的问题

  • 首先来看一下工具StringUtils的判断方法:
    一种是org.apache.commons.lang3包下的;
    另一种是org.springframework.util包下的。这两种StringUtils工具类判断对象是否为空是有差距的:

    StringUtils.isEmpty(CharSequence cs); //org.apache.commons.lang3包下的StringUtils类,判断是否为空的方法参数是字符序列类,也就是String类型StringUtils.isEmpty(Object str); //而org.springframework.util包下的参数是Object类,也就是不仅仅能判断String类型,还能判断其他类型,比如Long等类型。12345

  • 从上面的例子可以看出第二种的StringUtils类更实用。

    下面来看一下org.apache.commons.lang3的StringUtils.isEmpty(CharSequence cs)源码:public static boolean isEmpty(final CharSequence cs) { return cs == null || cs.length() == 0;



    接下来是org.springframework.util的StringUtils.isEmpty(Object str)源码:public static boolean isEmpty(Object str) { return (str == null || "".equals(str));



    基本上判断对象是否为空,StringUtils.isEmpty(Object str)这个方法都能搞定。

    接下来就是判断数组是否为空

    list.isEmpty(); //返回boolean类型。


⑺ java程序中使用空对象会出现什么错误

java程序中使用空对象
如果是对空对象赋值 不会报错
而对其取值 就会 抛出一个异常 NullPoniterException 空指针异常
你可以用 try ....catch 语句捕获这个异常 就不会报错了

⑻ java中怎么判断一个对象是不是为空

这样写是存在问题的,如果pb为空,pb.equals(null))会出现空指针异常.
if(null == pb)
System.out.println("为空");
else
System.out.println("不为空");

热点内容
我的世界国际服一进服务器就崩 发布:2025-01-06 05:30:53 浏览:395
云主机网站源码 发布:2025-01-06 05:30:40 浏览:88
整数指数幂的运算法则 发布:2025-01-06 05:22:32 浏览:362
php数据缓存技术 发布:2025-01-06 05:22:24 浏览:516
jdk卸载linux 发布:2025-01-06 05:21:48 浏览:665
昂克赛拉哪个配置最走量 发布:2025-01-06 05:13:03 浏览:425
税务uk密码是什么密码 发布:2025-01-06 05:10:45 浏览:41
罗兰音响什么配置较好 发布:2025-01-06 05:09:17 浏览:794
怎么查看服务器是虚拟还是实体机 发布:2025-01-06 05:09:16 浏览:46
清除手机缓存软件 发布:2025-01-06 04:56:29 浏览:329