❶ java 在static方法內,如何才能訪問非static 數據成員和非static方法
方法可以直接調用靜態屬性或方法
靜態方法可直接調用靜態屬性或方法
靜態方法可通過對象調用非靜態屬性或方法
非靜態方法可用this/super.(本類的)非靜態屬性或非靜態方法調用
非靜態方法可用對象.非靜態屬性或非靜態方法調用
參考資料:http://..com/question/26812933.html
❷ 某類文件中新建一方法,訪問修飾符為public static,同類中的其他方法可以被調用,唯獨這個不可以
static的成員屬於類,調用時要用類.名;而動態成員是屬於對象的調用時要先實例化成對象再調用。因為static的成員屬於類,類就一個所以它永遠只有一個,所以用static成員時要慎重;而一個類可以實例化出多個對象,所以動態成員可以有很多個。
❸ {java}public static 的小用法,請進
public定義的可以在另一個java文件中訪問,static是靜態修飾符。
為什麼一定要A點activityS1,這樣告訴你
A里邊有個activityS1 C、D里邊也有activityS1,
那麼你在 B里邊調用的話 如果不用類名,jvm就不知道你調用的是哪個方法。
❹ jsp頁面如何去調用java裡面public static String T()方法,進行測試,然後在頁面上顯示
首先你得導入你的java的有這個T方法的類
加入是A.java
默認包路徑比方是:com.abc.A
com包下的abc包下的A.java
<%@ page language="java" import="com.abc.A" %>
或
<jsp:Usebean id="a" class ="com.abc.A"></jsp:Usebean>
<% 在這里就可以使用a了 ,不過你的是靜態方法,故而第一個就可以了 %>
❺ 「public static」和「public」有什麼區別
「public static」和「public」有區別:
1、public static 表示公共的靜態方法;public 表示公共的方法。
static:靜態。可以設置:靜態類、靜態變數、靜態方法。 沒有使用static修飾的成員為實例成員。靜態成員的使用:通過類名。
不加static修飾的成員是對象成員,歸每個對象所有。
加static修飾的成員是類成員,可以由一個類直接調用,為所有對象共有。
用static關鍵字標識的程序元素是靜態的,不用static標識的程序元素是非靜態。
2、靜態的東西是在類型載入初始時初始化的,並且與類相關;非靜態東西一般放在實例的構造函數中初始化,它是與特定類的實例相關的。
public:公共。在類名前邊用的話,說明這個類是公共類。可以設置:public方法, public屬性, 和public類
表示在其它任何類或方法中都可以訪問。要訪問其它類中的public的屬性、public方法,則必須必對那個類進行實例化。
public : 公共成員,完全公開,沒有訪問限制。private : 私有成員, 在類的內部才可以訪問。protected : 保護成員,該類內部和繼承類中可以訪問。internal: 在同一命名空間內可以訪問。
❻ PHP請問在static的function中如何訪問變數
靜態方法只能訪問其他的靜態方法或屬性,比如
classA{
privatestatic$url;
($url){
self::$url=$url;
}
(){
returnself::$url;
}
}
//或者在你的靜態方法中獲得實例,當然這樣的話可能達不到你預期的效果,推薦你還是使用上面的方法。
classA{
private$url='demo';
publicstaticfunctiongetUrl(){
$obj=newself();
return$obj->url;
}
}
❼ 怎麼調用靜態方法
靜態方法不能訪問非靜態的實例變數和實例方法。實例方法可以訪問靜態成員和非靜態成員。
1在本來中直接調用靜態方法
2可以通過類名來調用該類的靜態方法
3通過實例調用靜態方法
// 外部類,不能是靜態的
public class OuterClass {
// 靜態方法,又稱為類方法,屬於Test類
public static void staticFun() {
}
// 非靜態方法,又稱為實例方法,屬於Test類的具體實例
public void nonStaticFun() {
}
// 靜態內部類,靜態類只能是內部類
public static class StaticInnerClass {
// 靜態方法,屬於StaticInnerClass類
public static void staticFun() {
}
// 非靜態方法,屬於StaticInnerClass類的實例
public void nonStaticFun() {
}
}
// 非靜態內部類,不能有靜態方法
public class NonStaticInnerClass {
// 非靜態方法,屬於NonStaticInnerClass的實例
public void nonStaticFun() {
}
}
// 測試代碼如下:
public static void main(String[] args) {
// 對於靜態方法,使用類直接訪問
OuterClass.staticFun();
StaticInnerClass.staticFun();
// 對於非靜態方法,需要使用類的實例訪問
new OuterClass().nonStaticFun();
new StaticInnerClass().nonStaticFun();
// 對於非靜態內部類,必須創建外部類後才能使用
OuterClass outerClass = new OuterClass();
NonStaticInnerClass nonStaticInnerClass = outerClass.new NonStaticInnerClass();
nonStaticInnerClass.nonStaticFun();
}
}
❽ java中static的用法
1.靜態方法
通常,在一個類中定義一個方法為static,那就是說,無需本類的對象即可調用此方法
聲明為static的方法有以下幾條限制:
·它們僅能調用其他的static 方法。
·它們只能訪問static數據。
·它們不能以任何方式引用this 或super。
class Simple {
staticvoid go() {
System.out.println("Welcome");
}
}
publicclass Cal {
publicstaticvoid main(String[] args) {
Simple.go();
}
}
調用一個靜態方法就是「類名.方法名」,靜態方法的使用很簡單如上所示。一般來說,靜態方法常常為應用程序中的其它類提供一些實用工具所用,在Java的類庫中大量的靜態方法正是出於此目的而定義的。
2.靜態變數
聲明為static的變數實質上就是全局變數。當聲明一個對象時,並不產生static變數的拷貝,而是該類所有的實例變數共用同一個static變數。靜態變數與靜態方法類似。所有此類實例共享此靜態變數,也就是說在類裝載時,只分配一塊存儲空間,所有此類的對象都可以操控此塊存儲空間,當然對於final則另當別論了
class Value {
staticintc = 0;
staticvoid inc() {
c++;
}
}
publicclass Count2 {
publicstaticvoid prt(String s) {
System.out.print(s);
}
publicstaticvoid 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中的全局變數的概念。
值得探討的是靜態變數的初始化問題。
如果你需要通過計算來初始化你的static變數,你可以聲明一個static塊,Static 塊僅在該類被載入時執行一次。下面的例子顯示的類有一個static方法,一些static變數,以及一個static 初始化塊:
class Value3 {
staticintc = 0;
Value3() {
c = 15;
}
Value3(int i) {
c = i;
}
staticvoid inc() {
c++;
}
}
publicclass Count {
publicstaticvoid prt(String s) {
System.out.println(s);
}
Value3 v = new Value3(10);
static Value3 v1, v2;
static {//此即為static塊
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
v1 = new Value3(27);
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
v2 = new Value3(15);
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
}
publicstaticvoid 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變數,然後是子類的,依次類推。
3.靜態類
通常一個普通類不允許聲明為靜態的,只有一個內部類才可以。這時這個聲明為靜態的內部類可以直接作為一個普通類來使用,而不需實例一個外部類。
publicclass StaticCls {
publicstaticvoid main(String[] args) {
OuterCls.InnerCls oi = newOuterCls.InnerCls();
}
}
classOuterCls {
publicstaticclass InnerCls {
InnerCls() {
System.out.println("InnerCls");
}
}
}
結果為:InnerCls