扫码关注公众号

数据类型和关键字之 static 和并发
07-09
74观看
01

“static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。Java中static方法不能被覆盖,因为方

来自:java关键字-static
02

是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用?

不可以,静态方法只能访问静态成员,因为非静态方法的调用要先创建对象,在调用静态方法时可能对象并没有被初始化。

来自:java关键字-static
03

Staic关键字的修饰范围

static可以修饰:属性,方法,代码段,内部类(静态内部类或嵌套内部类)static修饰的属性的初始化在编译期(类加载的时候),初始化后能改变。static修饰的属性所有对象都只有一个值。static修饰的属性强调它们只有一个。static修饰的属性、方法、代码段跟该类的具体对象无关,不创建对象也能调用static修饰的属性、方法等static和“this、super”势不两立,static跟具体对象无关,而this、super正好跟具体对象有关。static不可以修饰局部变量。importstatic方式导入的包,调用静态方法时不需要使用对象.方法(Math.random)可以直接使用方法(random())

来自:java关键字-static
04

多线程访问static修饰的方法或变量,会出现并发问题吗?

1如果调用的是静态方法,且内部没有使用静态变量,则没有线程安全问题。为什么呢?因为静态方法内声明的变量是局部变量,它放在java栈中的,每个线程调用时,都会新创建一份,而不会共用一个存储单元。比如这里的inner_result,每个线程都会创建自己的一份,因此不会有线程安全问题。2当多个线程执行同一个方法的时候,且使用静态变量时,有可能会出现线程安全问题多个线程共享一块内存区域,在不加任何保护情况下对其操作就会出现异常结果,因为静态成员(staticmember)作为公共变量,就是放在共享内存区域的。

来自:java关键字-static
课程
专栏
java语言-java关键字-static
3专栏
1课程
4 试题