字符串变量和整形之间的相互转化在任何编程语言中都是很常见的东西,请不要与(int)String等强制类型转换混淆,这样做是不对的,(String)int,诸如这样是不能完成字符串变量和整形之间的相互转化的,强制类型转换只用于,整形int与浮点float的互转,父类转化为子类。
在Java中的字符串String转化为整形int,可以利用Integer.parseInt(),而整形int转化成String虽然很多人都知道大名鼎鼎的toString(),但不应该对此形成定式思维,其实你在对于任意一个整形,后面加上+""都可以直接转化为字符串。
比如以下的方法:
public static void parse() { String stringA = "1"; String stringB = "2"; int intA = 0, intB = 0; try { intA = Integer.parseInt(stringA); intB = Integer.parseInt(stringB); System.out.println(intA + intB); System.out.println((intA + "") + (intB + "")); } catch (Exception e) { System.out.println("这两东西任意一个不是数!"); } }
展示了字符串stringA、B转换为整形,字符串转化为整形的时候必须抛出异常,如果字符串A、B任意一个不是数的话,就必须回退try中的所有代码,也就是说try里面的代码等于没写一样,然后执行catch里面的所有代码。如果没有异常,那么catch里面的代码等于没有一样。只执行try的代码。现在虽然看不出效果,因为我在此程序中已经保证字符串A,B都是数,但是在一些涉及用户交互的程序,必须这样做以保证我们的健壮的。由于Integer.parseInt()没有规定必须写在抛出异常结构里面,所以经常会忘记。
至于静态方法static是什么呢?一般没有什么事,尤其是在这样的工具类方法里面,什么是工具类呢?也就是说,像这样执行完,这个类再也没什么用了,你就可以考虑把类里面的方法写成这样的公共静态无返回值方法。看个程序,对比一下静态方法与非静态的区别就明白了。多讲无益。我讲不透,你也听不懂:
class classA { public static void parse() { String stringA = "1"; String stringB = "2"; int intA = 0, intB = 0; try { intA = Integer.parseInt(stringA); intB = Integer.parseInt(stringB); System.out.println(intA + intB); System.out.println((intA + "") + (intB + "")); } catch (Exception e) { System.out.println("这两东西任意一个不是数!"); } } public void notStaticMethod() { System.out.println("我不是静态方法"); } } public class StaticTest { public static void main(String[] args) { classA.parse(); new classA().notStaticMethod(); } }
上面的程序的运行结果如下图:
在主函数中,要执行classA中的两个方法,必须先有classA,但是对于静态方法parse()的调用不比先new这个classA,如果调用类成员那样简单,对于静态方法parse()用完,classA即死——也就说没用了,不必先new再用这个方法,也就不会再Java内存里面浪费空间,效率高。如果你没有定义成静态方法,首先你自己写的烦,要先new classA(),才能调用这个方法。当然如果你以后还要用到new classA()还好说,但是你以后根本就用不到这个classA()的任何东西,根本就没有必要不定义静态方法。因此编程的时候考虑一下哪些是“工具方法”,比如像我之前的《【Java】两个ArrayList之间求交并补》(点击打开链接)等“工具方法”,你就应该定义一个工具类,里面全是静态方法。这样调用起来简单。