在项目开发时过于追求大的知识,比如多线程下载,网络请求等,往往会忽略一些非常小的知识,有时候为了验证想法和实际我会开辟一个工程专门用来验证,接下来就是我验证过的一些,看看你是否会忽略呢?
1. arrayList.add(null)是允许的吗?
2. ArrayList添加一个String对象,改变该String对象后再添加,结果是添加了两个一样的对象还是不一样的?
ArrayList<String> strList = new ArrayList<String>();
String str = "abc";
strList.add(str);
str = "123";
strList.add(str);
strList.add(null);
System.out.println("strList = " + strList);
//输出结果
strList = [abc, 123, null]
所以
1. ArrayList是可以添加null对象的;
2. ArrayList添加一个String,改变值后再添加,得到的是两个不同的String
如果你用ArrayList存储对象,拿出来用之前记得有必要判空哦!~
而如果你需要重复添加String类型的话,定义一个String,不停覆盖值就够了!~
3.foreach的对象如果是空会怎样?
ArrayList<String> strings = null;
for (String str : strings) {
}
//结果
Exception in thread "main" java.lang.NullPointerException
所以
3.foreach的对象不能为空,否则会报空指针
这里就要注意如果以后传数据的时候,如果要用到foreach的话,最好先判断数据是否为空!~
4.String如果初始化为null,打印出来是什么?
String str = null;
System.out.println("str = " + str);
//输出结果
str = null
所以
4.String为null的话打印出来也是null。
如果你不希望得到这个结果的话,记得判空哦!~
5.Android 如何在初始化时获取TextView的宽高?
tv.measure(0, 0);
int width = tv.getMeasuredWidth();
int height = tv.getMeasuredHeight();
在初始化过程中,默认调用 tv.getHeight()
是不能得到真实高度的(得到的值为0),是因为View要等到 onLayout()
结束后才能用getWidth()|getHeight()
得到宽高。同样,在onMeasure()
结束后,才能得到getMeasuredWidth()
,第一句tv.measure(0, 0);
相当于强制调用了onMeasure()
,所以二三句就能得到宽高了(注意dp和px的误差)。
/**
* ┏┓ ┏┓
* ┏┛┻━━━┛┻┓
* ┃ ┃
* ┃ ━ ┃
* ┃ > < ┃
* ┃ ┃
* ┃... ⌒ ... ┃
* ┃ ┃
* ┗━┓ ┏━┛
* ┃ ┃
* ┃ ┃ 努力挤牙膏中~
* ┃ ┃
* ┃ ┃
* ┃ ┃
* ┃ ┃
* ┃ ┗━━━┓
* ┃ ┣┓
* ┃ ┏┛
* ┗┓┓┏━┳┓┏┛
* ┃┫┫ ┃┫┫
* ┗┻┛ ┗┻┛
*/