本文目录一览:
- 1、java内部类可以访问外部类的静态方法吗
- 2、java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中,还是当被调用的时候才进行加载呢?
- 3、javaweb项目如何访问静态资源
- 4、一个关于JAVA静态问题?求解释,STATIC方法只能访问STATIC方法,非STATIC方法可以访问STATIC方法,
- 5、JAVA里静态的属性怎么在jsp里访问?
java内部类可以访问外部类的静态方法吗
内部类
就相当于一个外部类的成员变量,所以可以直接访问
外部变量
,外部类不能直接访问内部类变量,必须通过创建内部类实例的方法访问,
new
InnerClass
(32).m就是创建内部类实例访问内部类成员变量。
你想不通的肯定是指内部类的私有变量怎么可以被外部类访问吧,按常规,私有变量m只能在InnerClass里被访问,
但你要注意,内部类就相当于一个外部类的成员变量,举个例子。
class
Outer{
private
int
m;
private
class
Inner{
private
int
n;
private
int
k;
}
}
m和类Inner都是成员变量,他们之间是平等的,唯一不同的就是Inner它是包装了几个成员变量比如n,k,也就是说m
n
k是平等的,区别在于访问n
k要通过Inner,就是要建立Inner实例访问nk,这样解释够明白了吧
java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中,还是当被调用的时候才进行加载呢?
当类第一次被调用时加载(静态方法,静态属性的加载就是类加载) 。
1、类中的静态属性会被加入到类对象(也可以叫做类的模板,是类的描述) 的构造器中,静态方法也会被加入到类对象中。
2、当第一次使用类时,JVM会通过类加载器,加载类对象,从而初始化静态属性,并装入类的方法,包括静态方法和实例方法(方法不会被调用,只是加载,从这个意义上来说,静态方法和实例方法是类似的)。
3、当创建类的实例对象时,JVM会调用类的构造器,从而初始化类的属性。
扩展资料:
类(包括静态方法、属性)加载过程:
一、加载。
根据一个类的全限定名(如cn.edu.hdu.test.HelloWorld.class)来读取此类的二进制字节流到JVM内部。
将字节流所代表的静态存储结构转换为方法区的运行时数据结构(hotspot选择将Class对象存储在方法区中,Java虚拟机规范并没有明确要求一定要存储在方法区或堆区中)转换为一个与目标类型对应的java.lang.Class对象。
二、连接。
1、验证。
验证阶段主要包括四个检验过程:文件格式验证、元数据验证、字节码验证和符号引用验证;
2、准备。
为类中的所有静态变量分配内存空间,并为其设置一个初始值(由于还没有产生对象,实例变量将不再此操作范围内);
3、解析。
将常量池中所有的符号引用转为直接引用(得到类或者字段、方法在内存中的指针或者偏移量,以便直接调用该方法)。这个阶段可以在初始化之后再执行。
参考资料:
百度百科--Java类加载器
百度百科--JVM
javaweb项目如何访问静态资源
1 在spring框架下,如果让mvc拦截所有路径,需要配置静态资源路径:
mvc:resources location="/image" mapping="image/**"/
mvc:resources location="/css" mapping="css/**"/
现在一般都使用rest风格接口, 即mvc拦截/rest/**请求, 所以只要把静态文件放在其他路径就可以了
2 原生servlet,struct2 直接访问即可
一个关于JAVA静态问题?求解释,STATIC方法只能访问STATIC方法,非STATIC方法可以访问STATIC方法,
你好,我觉得一句话就能说清楚,说的多了,反而让你理解的更加模糊。记住这点:
静态方法是属于类的,而普通方法是属于对象的。
属于类的静态方法可以在对象不存在的时候就能访问到,而普通方法必须先new一个对象才能用这个对象访问。当我们访问调用静态方法的时候(使用类名.静态方法名)这个时候就没有对象创建,所以普通方法是访问不到的。为了避免这种错误,所以java就不允许在静态方法中访问非静态方法。
还有纠正你的错误,main方法也满足我上面说的,你仔细看下,main方法中是不是先创建的对象,然后用对象去访问的呀。
JAVA里静态的属性怎么在jsp里访问?
第一:如果是对象的话,你应该去看看jsp:bean的用法。只有配合使用jsp:getProperty才有用
第二:是静态的函数,也就不怕了。你在
%@ page language="java" import="java.util.*,com.rh.entity.*" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%
import="java.util.*,com.rh.entity.*" 加上这句,当然是你的Infomation 类的全路径,你就可以在jsp中用了
%=Infomation.getJavaRuntimeVersion() %