java代码块引用 java在代码块的什么位置可以声明变量

java中 , 什么叫静态引用?静态引用是java 5中出现的。
我们在类中有时候可能要写很多类似System.out.println()语句 , 每次写这么长多麻烦,有了java5的
静态引用 。
由static 关键修饰的内容 为静态 ; 反之  , 为非静态静态变量 属于类,为所有对象共有分静态变
量 属于对象 ,每个对象都可以有且属性值可以各异静态变量优于非静态变量加载,故 静态代码块
中不能引用非静态成员,会报错 。
Java常见代码块的作用与区别1. 局部代码块
作用在方法当中,作用是控制变量的生命周期:
public void show(){
{
System.out.println("局部代码块运行!");
}
}123456
在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中 , 不想再用到它时,那么就没必要让x在内存中继续占用空间 。因此就有了局部代码块 。
2. 构造代码块
作用在类的定义Body中,作用是给类的部分字段统一初始化:
public class Apple {
private String size;
//构造代码块
{
System.out.println("构造代码块运行!");
size = "E";
}
}
12345678910
构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,因为构造函数是可以多个的 , 运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构造代码块 。也就是说,构造代码块中定义的是不同对象共性的初始化内容 。所以理所当然的,构造代码块在构造函数之前执行 。
3. 静态代码块
作用有两个:
(1)给类的静态变量赋值;
(2)声明静态变量;
作用在类的Body中,对类中的静态变量初始化:
public class APP {
static int x, y; // 静态变量
static {
x = 5; // 给静态变量x赋值
}
public static void myMethod() {
y = x++ + ++x; // x++ 先使用x的值再加1;++x先加1再使用x的值
}
public static void main(String[] args) {
x--;
myMethod();
System.out.println(x + y + ++x);
}
}
输出:23
JAVA 中的 synchronized 代码块用法Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码 。
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行 。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块 。
二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块 。
三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞 。
四、第三个例子同样适用其它同步代码块 。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时 , 它就获得了这个object的对象锁 。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞 。
五、以上规则对其它对象锁同样适用.
java static块有什么具体的作用和注意事项?在Java语言中 , static表示“全局”或者“静态”的意思 , 用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念 。
被static修饰的成员变量和成员方法独立于该类的任何对象 。也就是说,它不依赖类特定的实例,被类的所有实例共享 。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们 。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象 。

推荐阅读