初学者的思考.1
对一个static
变量带不带final
有什么区别
首先请看一个示例
public class Project4
{
static int a=1;
static final int b=1;
public static void main(String[] args){
System.out.println(a);
System.out.println(b);
System.out.println(a+b);
a=2;
System.out.println(a);
System.out.println(b);
System.out.println(a+b);
b=2;
System.out.println(a);
System.out.println(b);
System.out.println(a+b);
}
}
在Project4
中定义了static
成员变量a和static final
成员变量b
这段代码的编译并不会通过:
我们试着去掉赋值语句b=2
及后面语句:
发现编译通过:
并且运行结果如下:
容易分析得到:变量b
定义后无法改变
我的看法是:用final
加以修饰后的static
成员变量的值无法被改变,static final
用来修饰成员变量,可简单理解为“全局常量”
字符串强转int
型会怎样
同样先请看一个示例
public class Project4
{
public static void main(String[] args){
String stringNum="102201";
System.out.println(stringNum);
int intNum=(int)stringNum;
System.out.println(intNum);
}
}
在Project4
中我定义了字符串常量stringNum
并给了数据102201
,再用(int)
尝试将其强制转换为int
并赋值给整型变量intNum
但是编译并不通过:
原因很简单:String
无法转换为int
如果使用字符串变量呢
public class Project4
{
public static void main(String[] args){
StringBuffer stringNum=new StringBuffer();
stringNum.append("102201");
int intNum=(int)stringNum;
System.out.println(intNum);
}
}
编译依旧不通过:
总结:字符串无法直接强转为int
通过查阅资料,发现字符串强转
int
可按如下操作:
public class Project4
{
public static void main(String[] args){
String stringNum="102201";
System.out.println(stringNum);
int intNum=Integer.parseInt(stringNum);
System.out.println(intNum);
}
}
运行结果为:
还可以这样写:
public class Project4
{
public static void main(String[] args){
String stringNum="102201";
System.out.println(stringNum);
int intNum=Integer.valueOf(stringNum).intValue();
System.out.println(intNum);
}
}
运行结果为:
思考一下不同的方法或者心中认为的可能性将它们敲出来而找到真理有一种收获的感觉