class AA { static int a = 3>2?3:5; //这里是声明一个变量,同时给了它一个值,是可以的 //你要是改成下面这样就错了 //static int a; //a = 3>2?3:5;这个是赋值语句,是不行的 }
static 优先级最高啊,先执行static部分
即使是 int a = 3>2?3:5; 这也是正确无误的。为什么???
静态代码在类被装载的时候执行的,可以没有main函数
静态的变量或者静态的代码块,是在main函数之前运行的 正解
static int a = 3>2?3:5; 这是一个初始化语句,就好象你可以在类体里面写A a = new A();一样 该语句等同于 static int a = getA(); private int getA(){ if(3>2)return 3; return 5; }if(3>2) System.out.println("if"); 这样的语句不能直接存在于类体里面,可以写在方法,static块里面这个应该是你的问题的正解!!!
最典型的例子:
没有main方法的打印操作public class Test_Java_gannbare
{
static
{
System.out.println("No main!");
System.exit(0);
}
}然后编译运行这个类,和有main方法的效果是一致的.
class A
{
if(3>2) System.out.println("if");
private int a;
}这个程序为什么出错呢???
谁能告诉我?
......
.........
一個是expression, 一個是statement...
{
private int a;
if(3>2) System.out.println("if");
}
这样也出错,好不好...
{
private int a;
static
{
if(3>2) System.out.println("if");
}
}
语句不能直接放在类的里面 一定要放在方法里面 如果放在静态的方法里面 那么这个语句会优先于main方法执行刚刚没有看清楚哇 我记得你以前提问线程的时候问的问题都蛮高级的哇 这个问题么有点意思
类里面只能定义变量和方法.if(3>2) System.out.println("if"); 这是一条语句,是必须放在方法里面的.main方法要使用main方法外的变量必须是static的.
{ static { System.out.println("1");}
public static void main(String args[])
{
System.out.println("2");
}
static { System.out.println("3");}
} 输出 1 3 2
静态块, main在所有静态块执行完后再执行
class AA
{
static int a = 3>2?3:5; //这里是声明一个变量,同时给了它一个值,是可以的
//你要是改成下面这样就错了
//static int a;
//a = 3>2?3:5;这个是赋值语句,是不行的
}
正解
这是一个初始化语句,就好象你可以在类体里面写A a = new A();一样
该语句等同于
static int a = getA();
private int getA(){
if(3>2)return 3;
return 5;
}if(3>2) System.out.println("if");
这样的语句不能直接存在于类体里面,可以写在方法,static块里面这个应该是你的问题的正解!!!