java的static用法

去除struts2中s:fieldError标签中的默认样式 方式一:重新编辑CSS Struts2自动生成的ul的class的名字是errorMessage(可通过右键查看源代码知道),我们就可以通过修改CSS的方式让他看起来没有什么格式 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 阅读详情

一、static

  请先看下面这段程序:

  public class Hello{
    public static void main(String[] args){ //(1)
      System.out.println("Hello,world!");   //(2)
    }
  }

  看过这段程序,对于大多数学过Java 的从来说,都不陌生。即使没有学过Java,而学过其它的高级语言,例如C,那你也应该能看懂这段代码的意思。它只是简单的输出“Hello,world”,一点别的用处都没有,然而,它却展示了static关键字的主要用法。

  在1处,我们定义了一个静态的方法名为main,这就意味着告诉Java编译器,我这个方法不需要创建一个此类的对象即可使用。你还得你是怎么运行这个程序吗?一般,我们都是在命令行下,打入如下的命令(加下划线为手动输入):

javac Hello.java
java Hello
Hello,world!

  这就是你运行的过程,第一行用来编译Hello.java这个文件,执行完后,如果你查看当前,会发现多了一个Hello.class文件,那就是第一行产生的Java二进制字节码。第二行就是执行一个Java程序的最普遍做法。执行结果如你所料。在2中,你可能会想,为什么要这样才能输出。好,我们来分解一下这条语句。(如果没有安装Java文档,请到Sun的官方网站浏览J2SE API)首先,System是位于java.lang包中的一个核心类,如果你查看它的定义,你会发现有这样一行:public static final PrintStream out;接着在进一步,点击PrintStream这个超链接,在METHOD页面,你会看到大量定义的方法,查找println,会有这样一行:

public void println(String x)。

  好了,现在你应该明白为什么我们要那样调用了,out是System的一个静态变量,所以可以直接使用,而out所属的类有一个println方法。

静态方法

  通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法。如下所示:

class Simple{
   static void go(){
     System.out.println("Go...");
   }
}
public class Cal{
  public static void main(String[] args){
    Simple.go();
  }
}

  调用一个静态方法就是“类名.方法名”,静态方法的使用很简单如上所示。一般来说,静态方法常常为应用程序中的其它类提供一些实用工具所用,在Java的类库中大量的静态方法正是出于此目的而定义的。

静态变量

  静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final则另当别论了。看下面这段代码:

class Value{
  static int c=0;
  static void inc(){
    c++;
  }
}
class Count{
  public static void prt(String s){
    System.out.println(s);
  }
  public static void main(String[] args){
    Value v1,v2;
    v1=new Value();
    v2=new Value();
    prt("v1.c="+v1.c+"  v2.c="+v2.c);
    v1.inc();
    prt("v1.c="+v1.c+"  v2.c="+v2.c); 
  }
}

  结果如下:

v1.c=0  v2.c=0
v1.c=1  v2.c=1

由此可以证明它们共享一块存储区。static变量有点类似于C中的全局变量的概念。值得探讨的是静态变量的初始化问题。我们修改上面的程序:

class Value{
  static int c=0;
  Value(){
    c=15;
  }
  Value(int i){
    c=i;
  }
  static void inc(){
    c++;
  }
}
class Count{
  public static void prt(String s){
    System.out.println(s);
  }
    Value v=new Value(10);
    static Value v1,v2;
    static{
      prt("v1.c="+v1.c+"  v2.c="+v2.c);
      v1=new Value(27);
      prt("v1.c="+v1.c+"  v2.c="+v2.c);
      v2=new Value(15);
      prt("v1.c="+v1.c+"  v2.c="+v2.c);
    }

  public static void main(String[] args){
    Count ct=new Count();
    prt("ct.c="+ct.v.c);
    prt("v1.c="+v1.c+"  v2.c="+v2.c);
    v1.inc();
    prt("v1.c="+v1.c+"  v2.c="+v2.c);
    prt("ct.c="+ct.v.c);
  }
}

运行结果如下:

v1.c=0  v2.c=0
v1.c=27  v2.c=27
v1.c=15  v2.c=15
ct.c=10
v1.c=10  v2.c=10
v1.c=11  v2.c=11
ct.c=11

  这个程序展示了静态初始化的各种特性。如果你初次接触Java,结果可能令你吃惊。可能会对static后加大括号感到困惑。首先要告诉你的是,static定义的变量会优先于任何其它非static变量,不论其出现的顺序如何。正如在程序中所表现的,虽然v出现在v1和v2的前面,但是结果却是v1和v2的初始化在v的前面。在static{后面跟着一段代码,这是用来进行显式的静态变量初始化,这段代码只会初始化一次,且在类被第一次装载时。如果你能读懂并理解这段代码,会帮助你对static关键字的认识。在涉及到继承的时候,会先初始化父类的static变量,然后是子类的,依次类推。

  通常一个普通类不允许声明为静态的,只有一个内部类才可以。这时这个声明为静态的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。如下代码所示:

public class StaticCls{
  public static void main(String[] args){
    OuterCls.InnerCls oi=new OuterCls.InnerCls();
  }
}
class OuterCls{
  public static class InnerCls{
    InnerCls(){
      System.out.println("InnerCls");
    }
   }
}

  输出结果会如你所料:

InnerCls

LabVIEW小白福音:手把手教你用NI采集卡搭建振动信号采集系统(附源码和避坑指南) 本文为LabVIEW初学者提供详细的NI采集卡振动信号采集系统搭建指南,涵盖硬件连接、驱动安装、信号处理及性能优化等关键步骤。特别针对振动信号采集系统中的常见问题提供解决方案,并附源码和避坑指南,帮助用户快速上手并避免常见错误。 阅读详情

相关推荐

WRF移动嵌套结合伏羲模型与CFD(PALM)高精度多尺度降尺度分析研究

WRF移动嵌套(Moving Nesting):动态调整高分辨率嵌套网格位置,追踪天气系统(如台风、强对流系统)以提高局地预报精度。伏羲(Fuxi)模型:国产数值模式,提供对WRF模拟的初始及边界条件优化。CFD(Computational Fluid Dynamics)PALM模型:精细化局地流场、湍流、温度分布。

m0_57411304的博客 1681

static用法总结

static用法 请先看下面这段程序:

chinayuan的专栏 1627

单元测试报告模板

单元测试报告版本:V1.3文 档 编 号保 密 等 级作 者最后修改日期审 核 人最后审批日期批 准 人最后批准日期修订记录日期版本修订说明修订人目 录1简介21.1目的21.2背景21.3范围22测试用例清单23功能测试分析24边界测试分析25覆盖率分析26内存使用分析27典型缺陷记录37.1缺陷137.1.1表现37.1.2原因37.1.3方案38测试数据分析38.1测试有效性分析38.2测试效率分析39产品质量分析410测试结论4简介目的【描述该单元测试报告的目的。】背景【描述单元测试报告的背景,单元测试活动目的。如无特殊背景信息,可裁剪。】范围【说明该单元测试报告在整个项目周期的适用范围】测试用例清单模块目标类级别用例类用例描述执行结果备注【被测的代码类】【代码级别】【Junit测试类1】【意图描述】【P/F】【Junit测试类2】功能测试分析边界测试分析覆盖率分析目标类级别方法覆盖率行覆盖率备注【被测的代码类】【代码级别】内存使用分析典型缺陷记录记录单元测试中所发现的典型缺陷或常见缺陷。供再次发现同类问题时,作为参考使用。缺陷1表现【缺陷表现描述】原因【缺陷产生原因分析描述】方案【解决方案描述】测试有效性分析【统计实际发现的缺陷数据,分析与计划值产生偏差的原因,结合《项目量化管理计划》定义的阈值,确定是否采取相关措施】计划发现缺陷数致命严重一般实际发现缺陷数偏差分析对策或调整措施产品质量分析【结合上述数据和信息,对本次测试的项目、产品的本身质量进行分析、评价和总结】测试结论 【描述测试是否达到测试计划的目的,是否满足单元测试的结束条件。】

java命令执行jar包的多种方法(四种方法)

这篇文章主要介绍了java打jar包的几种方式,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

shadow_zed的博客 1万+

static关键字用法详细总结

静态变量和静态方法 static关键字最基本的用法是: 1、被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来 2、被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来 被static修饰的变量、被static修饰的方法统一属于类的静态资源,是类实例之间共享的,换言之,一处变、处处变。JDK把不同的静态资源放在了不同的类中而不把所有静态资源放在一个类里面,很多人可能想当然认为当然要这么做,但是是否想过为什么要这么做呢?个人

kouzhili1792的博客 865

static关键字的用法

两篇关于static关键字的文章。static有两种用法:面向过程程序设计中的static 和 面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。

yunyun1886358的专栏 1639

JavaStatic关键字的四种用法

javastatic

weixin_35282769的博客 6492

struts2 fielderror去掉样式

struts2   fielderror标签 即便是将配置文件中设置为,如下仍然会带有ul、li、span标签 &lt;constant name="struts.ui.theme" value="simple" /&gt;   这个可以通过覆盖template\simple\fielderror.ftl来完成,附件中是总结的两个fielderror.ftl文件 其中fielderror....

mzlly999的专栏 213

去掉Struts2标签fielderror中ul li 方法

发现在输出 s: 总出现 ,由于所看文档是说去掉struts提供的风格只要使用theme="simple"就可以。找了一些资料也没解决 最后逼不得已修改了struts2-core-2.0.11.1.jar/template/simple/fielderror.ftl,修改完毕,保存,重新添加到jar包里面。发现问题OK了。Java code <!--Code highlighti

2149

<s:fielderror >样式修改

解决struts中错误自定义错误显示方式的步骤:    1.  找到你的struts2-core-2.XXX.jar这个核心包,用软件解压; 2.  在\struts2-core-2. XXX\template\simple目录下找到fielderror.ftl(跟我们自定义格式非常有关系的文件); 3.  根据Struts2模板中提到的,把上面的fielderror.ftl放到WEB-

yjdreams4it的专栏 1439

如何修改Struts2的 fielderror样式

有时候,使用Struts2的标签还是比较好的。 但是这个标签本来的样式实在很难看,不但换行,而且有个大大的黑点。 一看就知道用了。 [b]修改方法:[/b] [b]1. 找到struts2-core-2.XXX.jar,解压。 2. 在struts2-core-2. XXX/template/simple目录下找到fielderror.ftl 3. 在项目的src下建立...

※天涯问津 464

struts2中取消fielderror默认样式

[size=medium] Struts 2取消fielderror默认样式 1.在struts2-core-2.3.12.jar包中template/simple目录下找到fielderror.ftl文件; 2.打开fielderror.ftl,删除、等标签对,保存文件; 3.在项目的src目录下创建template.simple包,放入修改后的fielderror.ftl文件; ...

iteye_13661的博客 217

Struts 2 取消 fielderror 系统默认样式

Struts 2 取消 fielderror 系统默认样式 fielderror样式库文件名称 fielderror.ftl 在struts2-core-2.3.8.jar包中template/simple目录下 目标:取消系统默认的样式,没有样式 1.打开fielderror.ftl文件查找标签和,并删除,保存文件 2.在自己的项目中src目录下建立template.sim

小树吥倒 614

struts之修改fielderror修改样式

step 1:         在项目的src中依次新建template/simple文件夹   step 2:         将struts-core*包解压出来(步骤如下:)   step  3:     将fielderror.ftl文件中的及中间的内容删除,然后删除,注意,li标签

LiuYong 1590

【Struts2】让s:fielderror没有格式,只显示文本

使用s:fielderror默认是这样的 这里的在“错误啦”之前的点和缩进都是自带的,如果我想要把缩进和点去掉有什么好办法呢? 方法一:CSS Struts2自动生成的ul的class的名字是errorMessage(可通过右键查看源代码知道),我们就可以通过修改CSS的方式让他看起来没有什么格式 <%@ page language="java" contentType="text

Slience 1万+

struts2中如何去掉<s:fielderror>中的<ul><li>样式

当在我们注册用户时,如果给前台的提示是用户名重复并且用户名太长时,就会要往action里面添加多个errors,这时到前台怎么把它依次拿出来   解决办法 1.我想到的解决办法就是在后台相应的action处作判断,最终给一个错误信息出来,只不过这个错误信息可能会经过判断综合到一起(后台加工)。也就是说我们可以从value stack里面拿值   2.用struts2的标签可以拿到所以

u011523968的专栏 1490

struts验证fieldError actionError简单总结

今天上班,发现对于struts验证那套全然不通,现在总结几个    第一种,最简单的,Struts2 使用addFieldError方法和s:fieldError标签简单处理数据校验    步骤:        第一步:action-validation.xml配置

luckygll的专栏 1万+

struts2 <s:fielderror/> 去掉ul li

使用 <s:fielderror/> 或 <s:fielderror fieldName="键" /> 在 jsp 页面输出 validate() 中 addFieldError() 添加的报错信息时,会包含ul li 标签。这可能不是你想要的。下面看看如何把 ul li 标签去掉。找到 struts2 核心文件,我的是 struts2-core-2.3.16.3,解压,在里面 template\s

BI 619

struts2 fielderror 标签格式无法改变解决办法

Struts2中的fielderror的theme设置为simple,但是输出还是有ul和li。要想去掉有一个好办法,如下:建立目录src/template/simple/fielderror.ftl这个文件,直接复制jar包中的然后修改,删掉其中的ul和li标签即可。 

xinem的专栏 1305
上一篇: 香草山
下一篇: 自动拼写检查---jazzy简介
luanfengxia
博客等级 码龄22年 16粉丝 33原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值