今天写东西的时候发现一个小问题,就是关于类型转换的问题,下面简单的介绍下。
这个是我只一个手势密码校验的时候遇到的,其实后来发现校验手势密码可以不用逐个去校验,可以按照整个字符串或者将这个字符串进行MD5签名直接校验签名值都是可以的,方式有很多也各有利弊,到时还是要看自己的需求来确定。
1.我这的需求是将一个数组进行本地存储,然后在其他的时间取出来。
首先是存储代码:
for (int i = 0; i < cId.size(); i++)
{
stringBuffer.append(cId.get(i) );
}
if (mString == null || "".equals(mString))
{
sp.edit().putString("value",stringBuffer.toString().trim()).commit();
}
2.存储完成之后就是在校验密码的时候取出,并将其转换成一个int[]传递回去,下面是代码
mString = sp.getString("value", "");
if (mString != null && !"".equals(mString)) {
String myString = mString.trim();
char[] charArray = myString.toCharArray();
arrays = new int[charArray.length];//数组必须初始化,并且长度是固定的。
for (int i = 0; i < charArray.length; i++) {
//这里是要注意的地方了,char不能直接转化为int因为char转换出来是ASCII码,
//所以要做处理,虽然是数字也要按照string来做,当然应该还要很多方法,欢迎补充
arrays[i] = Integer.parseInt(String.valueOf(charArray[i]));
System.out.println(arrays[i]+"***********");
System.out.println(charArray[i]+"------------");
}
System.out.println(arrays.length);
mGestureLockViewGroup.setAnswer(arrays);//这里是设置预先的答案。
}
下面是另外的存储方式,也是很简单的,下面简单的介绍下。
1.还是存储内容
for (int i = 0; i < cId.size(); i++)
{
stringBuffer.append(cId.get(i)+"," );
}
if (mString == null || "".equals(mString))
{
sp.edit().putString("value",stringBuffer.toString().trim()).commit();
}
2.继续取出来分割
mString = sp.getString("value", "");
if (mString != null && !"".equals(mString)) {
String myString = mString.trim();
String[] split = myString.split(",");
arrays = new int[split.length];//数组必须初始化,并且长度是固定的。
for (int i = 0; i < charArray.length; i++) {
arrays[i] =Integer.parseInt(split[i]) ;
System.out.println(arrays[i]+"***********");
System.out.println(charArray[i]+"------------");
}
System.out.println(arrays.length);
mGestureLockViewGroup.setAnswer(arrays);//这里是设置预先的答案。
}
基本变化不大,这里和我以前做过的缓存用户名有些相似,不过用户名那个涉及会有去重复什么的。
基本就是这样,关于各个类型之间的转换是java中最基础的内容,也是必要掌握的知识,今天这个小内容希望对大家会有帮助。