public class test{
static{
i=1;
}
static int i=0;
public static void main(String args[]){
System.out.println("i="+i);
}
}
编译成功不.输出多少.为什么.
public class test{
static int i=0; static{
i=1;
}
public static void main(String args[]){
System.out.println("i="+i);
}
}
编译成功不.输出多少.为什么.
关于静态变量.静态块.不静态块.常量.构造方法有人能讲的清楚些吗
static{
i=1;
}
static int i=0;
public static void main(String args[]){
System.out.println("i="+i);
}
}
编译成功不.输出多少.为什么.
public class test{
static int i=0; static{
i=1;
}
public static void main(String args[]){
System.out.println("i="+i);
}
}
编译成功不.输出多少.为什么.
关于静态变量.静态块.不静态块.常量.构造方法有人能讲的清楚些吗
解决方案 »
- 问一下,int类型不是能转换成char型吗,为什么这里会报错?而下一条代码不报错?
- 哪些是做一个简单项目所要掌握的东西?
- 对象数组问题
- 类继承的机制问题,高手请进!
- 在WINDOWS+WEBLOGIC8.1可以正确下载,在UNIX+WEBLOGIC8.12确不能下载,这是为什么?(急)
- Applet调用网页和IE的问题
- 急,100分求救,jdbc-odbc bridge 连access问题?
- 一个初学者的小问题如何进行编译(在线盼答)
- ******寻求Jbulider5的教程,还请各位朋友帮忙********
- 数据结构问题-为什么中序遍历树是有序的?
- 字符转换数字时,运行程序,系统报错
- 程序等待输入的问题,这是问第二遍了!谢谢了
i=1;
}
static int i=0; ~~~~~~~~~先使用后定义
static int i=0; ~~~~~~~~~~~main本来就是静态的
static{
i=1;
public static void main(String args[]){
System.out.println("i="+i);
}
{
static {
a=9; }
static int a;
public static void main(String[] args)
{
System.out.println(a);
}
}输出9
class StaticSec
{
static {
a=9; }
static int a=0;
public static void main(String[] args)
{
System.out.println(a);
}
}输出0,晕
public static void main(String[] args) {
ABC abc = new ABC();
}
}class ABC {
private String str1 = getString("非静态成员变量1");
private String str2 = getString("非静态成员变量2");
private static String stra = getString("静态成员变量a");
private static String strb = getString("静态成员变量b");
{
System.out.println("非静态块1");
}
{
System.out.println("非静态块2");
}
static {
System.out.println("静态块1");
}
static {
System.out.println("静态块2");
}
public ABC() {
System.out.println("构造方法");
}
private static String getString(String type) {
System.out.println(type);
return type;
}
}PS:静态块和静态方法一下,当中不能直接引用非静态的成员变量。
接下来就不会再执行了,静态成员变量在各对象间是数据共享的。把Test改成
如下,就可以看到效果了。public class Test {
public static void main(String[] args) {
ABC abc = new ABC();
System.out.println("----------");
ABC cba = new ABC();
System.out.println("----------");
ABC acb = new ABC();
}
}
{
public TestStaticMode()
{
System.out.println("in structure");
}
static int i = 0; {
System.out.println("in first no static i=" + i);
} static {
i = 1;
System.out.println("in static i=" + i);
} {
System.out.println("in second no static i=" + i);
}
public static void main(String args[])
{
TestStaticMode testStaticMode = new TestStaticMode();
System.out.println("i=" + i); }
}输出为:
in static i=1
in first no static i=1
in second no static i=1
mytest
i=1
静态变量:是指一个类被装载时,被装载的变量,它对所有的类来说,只有一个,该变量是可以静态方法所访问的,以上的main方法就是访问这个静态变量。
static {
a = 9;
}
静态块,位置最前,最先执行 此时 a=9;下面2种情况
1
static int a;
此处只是声明,没有赋值,所以a仍然是92
static int a=0;
此处不仅声明,而且赋值,所以到这里,a是0啦我个人理解,static 变量在编译时,可能就已经预留了地址空间,也就是类一但加载,就会分配空间给他们。over
静态块:是指类第一次被装载时,对类的静态变量进行初始化的地方,不静态块:是指一个对象被构造时,最先被初始化的实例成员的地方,这里指的是对象的实例变量。静态方法是无法访问的,以上的main方法是无法访问静态块的变量。 常量:是指值在任何时候都不会被改变,它也分为静态与非静态。public class test{ static{
i=1;
}//静态块
static int i=0; //这也是给静态变量赋值,但这个优先,因为在这个情况下,是按顺序的。
public static void main(String args[]){
System.out.println("i="+i);
}
}
这个输出为0,
i=1;
}
static int i=0;
public static void main(String args[]){
System.out.println("i="+i);
}
}
为什么下面这段,i怎么可以直接被赋值?貌似还没有申请变量吧?
static{
i=1;
}
static{
i=1;
}
static int i=0;不会报错啊
但是
static{
i+=1;
}
static int i=0;就会报错啊.操他奶奶啊.怎么开发JAVA垃圾语言的
static{
i=1;
}
static int i=0;不会报错啊
但是
static{
i+=1;
}
static int i=0;就会报错啊.