㈠ java中static怎么用
static 属于全局,也就是类的属性 和方法,换句话说 一个类,不管有多少个实例,却只有一个全局变量
class B {static int a=0;}
B b1=new B();..................;B bn=new B();
b1~bn 都是类B的实例,每个实例都共享 变量a,a是全局变量,属于类B的属性,每个实例都能引用变量a,
加入执行b1.a=1;后 那么b2.a,b3.a,b4.a......bn.a 都等于1了,
static 方法也是类似的
需要注意的是 静态属性和方法属于类方法,加载类后,就已经存在静态属性和方法,实例是需要用new构造出来后 才会有引用
根据先后顺序,就有以下两条规则
1、非静态的方法可以调用静态的或者非静态的属性和方法;
2、静态的方法不可以调用非静态的属性和方法,因为非静态的还不一定存在,只能先构造出来后,再通过实例引用
例如 在main方法中 可以直接调用static 的方法,调用非static方法 需要先构造出类的实例,通过实例才能调用方法
㈡ java 静态类是什么意思 有什么特点
java没有直接的静态类这种东西,一个类可以为static的情况只是他作为另一个类的成员,static表明他可以不用建立实例被访问而已,这样的内部类完全没有内部类的特点
1 内部类可以访问所在外部类的成员变量和方法,而静态内部类却不能
2 内部类可以使用Outter.this作为外部类引用,但静态内部类不能使用
3 静态内部类就如同外部类的一个静态成员,他只能访问外部类的静态成员和静态方法
4 在外部类外必须使用Outter.Inner外部类名和内部类名都要使用,楼上所说的不需要建立对象, 指的是不需要建立外部类实例,
比如BigOuter.Nested n = New BigOuter.Nested();
㈢ java中static的用法
static可以修饰变量(属性)、方法、代码块和内部类
static属性:属于这个类所有,即由该类创建的所有对象共享同一个static属性。可以对象创建后通过对象名.属性名和类名.属性名两种方式来访问。也可以在没有创建任何对象之前通过类名.属性名的方式来访问。
static方法:也可以通过对象名.方法名和类名.方法名两种方式来访问
static代码块:当类被第一次使用时(可能是调用static属性和方法,或者创建其对象)执行静态代码块,且只被执行一次,主要作用是实现static属性的初始化。
static内部类:属于整个外部类,而不是属于外部类的每个对象。不能访问外部类的非静态成员(变量或者方法),.可以访问外部类的静态成员
㈣ java中静态类能否实例化
静态类,一般使用在某个类的内容,简称静态内部类。
静态Static又有全局的意思,对于一般的public定义的外部类,没有必要static关键词,因为可以直接导入包得到该类的引用(只是在访问其非静态成员时需要实例化它);
而在一个类内部定义另一个类,如果该内部类不是静态的,需要实例化它,就得先有一个外部类的对象,
如:public class A{
public class B{}
}
实例化B:
A a = new A();
B b = a.new B();
如果B是静态的(全局的),即如下:
public class A{
public static class B{}
}
实例化B:
B b = A.new B();或者B b = new A.B();
㈤ java本类的静态方法如何直接调用,其他类的静态方法如何调用
java本类的静态方法,直接使用静态的方法咐裤困名传入参数就可以了,如果是其他类的,权限修饰符必须是public否者纯团无法调用,调用方法是 其他类的类名 . 方法名(参数)衡念
㈥ java中static作用详解
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。
只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。
static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。static前面加上其它访问权限关键字的效果也以此类推。
㈦ java静态类在什么时候使用
/*
static(静态\修饰符岩肆)
1. static修饰成员变量 :如果有数据需要被共享给所有对象使用时,那么就可以使用static修饰。
静态成员变量的访问方式:
方式1: 可以使用对象进行访问。
格式: 对象.变量名。
方式二: 可以使用类名进行访问。
格式: 类名.变量名;
注意:
1. 非静态的成员变量只能使用对象进行访问,不能使用类名进行访问。
2. 千万不要为了方便访问数据而使用static修饰成员变量,只有成员变量的数据是真正需要被共享的时候
才使用static修饰。
static修饰成员变量的应粗兆轿用场景: 如果一个数据需要被所有对象共享使用的时猜亏候,这时候即可好实用static修饰。
2. static修饰成员函数:
*/
class Student{
static String name; //非静态成员变量
static String country = "中国"; //静态的成员变量
public Student(String name){
this.name = name;
}
}
class Demo10 {
public static void main(String[] args)
{
Student s1 = new Student("狗娃");
Student s2 = new Student("狗剩");
//System.out.println("国籍:"+ Student.country);
System.out.println("名字:"+ s1.name);
System.out.println("名字:"+ s2.name);
}
}
㈧ JAVA 静态类写法和调用
js?还是指JSP的脚本段。先看一般是如何显示数据吧,最后在介绍js:
我们可以使用JSP页面的脚本段,首先写个Bean类:
public class SomeBean{
public String getName(){return "123";}
public void setName(String name){}
}
<!-- test.jsp-->
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%
SomeBean bean=new SomeBean();
out.println("Bean-name is "+bean.getName());
%>
就是这样,脚本段里面的东西其实就是java代码,而JSP页面本质就是servlet。我不太清楚你是否了解JSP的编译,如果你不知道的话我建议你到网络搜一下"JSP的java代码"一类的东西看看,这是基础。
你说的静态类应该是指类中包含静态域吧,除了内部类可以是静态的外,别的类都不行。不论是静态域还是普通域,用上面的脚本段都可以搞定。
再看看struts,静态的显示我放在后面了:
首先我们来写一个Action类:
public class LoginAction{
public String execute(){
return SUCCESS;
}
public void setValue(SomeBean value){
this.value=value;
}
public SomeBean getValue(){
return this.value;
}
private SomeBean value;
}
再写出Bean类:
public class SomeBean{
public String getName(){}
public void setName(String name){}
}
配置Action应该不用说了,没什么特别的,不会就上网查吧。
我们现在说方法。
方法一:
使用OGNL表达式。你可以使用struts自带的标签,他们都支持OGNL,比如s:property。举个例子:
<!--test.jsp-->
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:property value="value.name"/>
你访问LoginAction的时候s:property标签就会显示getValue().getName();
如果你想了解更多的struts2标签和OGNL表达式建议去找更详尽的资料。
方法二:
当然是使用JSP本身的性质了。通过request和session来获取值。
我们把Action类改一下:
public class LoginAction{
public string execute(){
SomeBean value=new SomeBean();
value.setName("sfsfjsfje");
ActionContext context=ActionContext.getContext();
//往request里放attribute
context.put("value",value);
//往session里放
context.getSession().put("value",value);
return SUCCESS;
}
}
接下来我们改页面:
<!-- test.jsp -->
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%= ((SomeBean) request.getAttribute("value")).getName() %>
<%= ((SomeBean) session.get("value")).getName() %>
OGNL也可以显示静态域:
public class SomeBean{
public static String name="123";
public static String getAlias(){return "abc";}
}
public class LoginAction{
public String execute(){return SUCCESS;}
}
配置文件不写了。
页面:
<!--test.jsp-->
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!--还是用s:property-->
<s:property value="@SomeBean@name"/>
<s:property value="@SomeBean@getAlias()"/>
当你访问LoginAction时就会显示SomeBean的name和getAlias()。不知道你是不是问的这个。
如果你要在js中调用数据也很容易:
<!-- test.jsp -->
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<script language="javascript" type="text/javascript">
var name="<s:property value="@SomeBean@name"/>";
</script>
这样js中就有相应的数据了。