public class ZiFuChuan2 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
*这个程序能选出字符串内的数字类型的字符串
*/
//声明一个字符串,里面含有数字
String str = "234khj455hj234kl234好看好3423/.,/.,/.,df43554";
//声明一个String类型的数组,并且使用循环使里面的元素是字符串0-9
String[] array1 = new String[10];
for (int i = 0; i <= 9; i++) {
array1[i] = Integer.toString(i);//直接将整型转换成字符串类型
}
//声明一个整型用于保存字符串的长度
int a = str.length();
//再声明一个字符串数组,用于将字符串的元素保存在此数组中
String[] array2 = new String[a];
for (int j = 0; j < str.length(); j++) {
array2[j] = str.substring(j, j + 1);
// System.out.print(array2[j]+" ");
}
//使用循环·判断·已经将字符串保存起来的字符串数组的元素是否与包含0-9的字符串数组的元素相等
for (int k = 0; k < a; k++) {
for (int m = 0; m < array1.length; m++) {
//如果相等·则说明该元素是数字··将其输出
boolean bool=array2[k].equals(array1[m]);
if (bool) {
System.out.print(array2[k]);
}
}
} }}
//此程序中·array1[i] = Integer.toString(i);//直接将整型转换成字符串类型
这行代码里·我换一种方式也可以实现·代码如下:
array1[i]=i+"";
这是为什么呢?为什么加上“”之后就可以实现转换·而将i显示转换的时候反而不可以?实在疑惑···
解决方案 »
- PriorityQueue的方法求助
- 这输出咋是0?咋不是3?
- Java中的HashMap继承了AbstractMap类并实现了Map接口,而AbstractMap也实现了Map接口,这样一来HashMap就实现了两次Map接口,Sun为什么这么做?
- 编译出错:对于常量池来说,字符串表示的UTF过长,那我想知道,JVM的常量池到底有多大?
- 无法创建下列URL的连接:jdbc:microsoft:sqlserver://localhost:40000;DatabaseName=bbs
- jdk1.6你有怎样的看法?
- 求助!急。
- 很菜的问题!
- 有谁熟悉jtapi吗
- 多个数据表可不可以只生成一个entitybean?
- slf4j-1.5.2定期清理日志文件问题
- 有个消费者线程退不出来,帮解决下
public class ZiFuChuan2 {/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
*这个程序能选出字符串内的数字类型的字符串
*///声明一个字符串,里面含有数字
String str = "234khj455hj234kl234好看好3423/.,/.,/.,df43554";
//声明一个String类型的数组,并且使用循环使里面的元素是字符串0-9
String[] array1 = new String[10];
for (int i = 0; i <= 9; i++) {
array1[i] = Integer.toString(i);//直接将整型转换成字符串类型
}
//声明一个整型用于保存字符串的长度
int a = str.length();
//再声明一个字符串数组,用于将字符串的元素保存在此数组中
String[] array2 = new String[a];
for (int j = 0; j < str.length(); j++) {
array2[j] = str.substring(j, j + 1);
// System.out.print(array2[j]+" ");
}//使用循环·判断·已经将字符串保存起来的字符串数组的元素是否与包含0-9的字符串数组的元素相等for (int k = 0; k < a; k++) {
for (int m = 0; m < array1.length; m++) {
//如果相等·则说明该元素是数字··将其输出
boolean bool=array2[k].equals(array1[m]);
if (bool) {
System.out.print(array2[k]);
}
}
}}}
//此程序中·array1[i] = Integer.toString(i);//直接将整型转换成字符串类型
这行代码里·我换一种方式也可以实现·代码如下:
array1[i]=i+"";
这是为什么呢?为什么加上“”之后就可以实现转换·而将i显示转换的时候反而不可以?实在疑惑···为什么我发不了源代码的形式?
当一个对象或者是原型加上一个String对象的时候将自动调用对象的toString()方法(原型返回字符表现),原型显示转换为String肯定是不行的啦
public static void main(String[] args){
String str = "234khj455hj234kl234好看好3423/.,/.,/.,df43554";
char[] a =str.toCharArray();
StringBuffer sb = new StringBuffer();
for(int i=0 ; i< a.length ; i++){
char temp = a[i];
String value = temp+"";
try {
Integer.parseInt(value);
sb.append(value);
} catch (NumberFormatException e) {
}
}
System.out.println(sb.toString());
}
2. 如果没有加上“”,则编译器会发现左边是String类型的,而右边是int类型的,如前面所说的,int类型的数据不能自动转换成String类型的,所以不行。
3. 如果加上了“”,当编译到“”时,编译器认识到这是一个字符串,于是会自动的把int类型的数据也转换成字符串型,故而可行。楼主可以测试以下几个问题,就能明白是怎么回事了。
1. String a = 1 + 2 + ""; System.out.println(a);
2. String a = 1 + ""+ 2; System.out.println(a);
3. String a = "" + 1 + 2; System.out.println(a);