??xml version="1.0" encoding="utf-8" standalone="yes"?>国产剧情在线观看,香蕉久久夜色精品国产更新时间,heyzo中文字幕在线http://www.aygfsteel.com/lcgg110/javazh-cnTue, 17 Jun 2025 06:23:18 GMTTue, 17 Jun 2025 06:23:18 GMT60java---final 关键??static 用法 http://www.aygfsteel.com/lcgg110/archive/2008/07/02/212072.htmlWed, 02 Jul 2008 02:27:00 GMThttp://www.aygfsteel.com/lcgg110/archive/2008/07/02/212072.htmlhttp://www.aygfsteel.com/lcgg110/comments/212072.htmlhttp://www.aygfsteel.com/lcgg110/archive/2008/07/02/212072.html#Feedback0http://www.aygfsteel.com/lcgg110/comments/commentRss/212072.htmlhttp://www.aygfsteel.com/lcgg110/services/trackbacks/212072.html        final 关键??static 用法

一、final
ҎE序上下文环境,Java关键字final?#8220;q是无法改变?#8221;或?#8220;l态的”含义Q它可以修饰非抽象类、非抽象cL?nobr oncontextmenu="return false;" onmousemove="kwM(3);" id="key2" onmouseover="kwE(event,3, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">Ҏ和变量。你可能Z两种理解而需要阻止改变:设计或效率?/p> finalcM能被l承Q没有子c,finalcM的方法默认是final的?
finalҎ不能被子cȝҎ覆盖Q但可以被ѝ?
final成员变量表示帔RQ只能被赋gơ,赋值后g再改变?
final不能用于修饰构造方法?
注意Q父cȝprivate成员Ҏ是不能被子类Ҏ覆盖的,因此privatecd的方法默认是finalcd的?

1、finalc?/strong>
    finalcM能被l承Q因此finalcȝ成员Ҏ没有Z被覆盖,默认都是final的。在设计cL候,如果q个cM需要有子类Q类的实?

l节不允许改变,q且信q个cM会蝲被扩展,那么p计ؓfinalcR?

2、finalҎ
如果一个类不允许其子类覆盖某个ҎQ则可以把这个方法声明ؓfinalҎ?
使用finalҎ的原因有二:
W一、把Ҏ锁定Q防止Q何承类修改它的意义和实现?
W二、高效。编译器在遇到调用finalҎ时候会转入内嵌机制Q大大提高执行效率?
例如Q?

 

public class Test1 {

public static void main(String[] args) {
// TODO 自动生成Ҏ存根
}

public void f1() {
System.out.println("f1");
}
//无法被子c覆盖的Ҏ
public final void f2() {
System.out.println("f2");
}

public void f3() {
System.out.println("f3");
}

private void f4() {
System.out.println("f4");
}
}

public class Test2 extends Test1 {

public void f1(){
System.out.println("Test1父类Ҏf1被覆?");
}

public static void main(String[] args) {
Test2 t=new Test2();
t.f1();
t.f2(); //调用从父cȝ承过来的finalҎ
t.f3(); //调用从父cȝ承过来的Ҏ
//t.f4(); //调用p|Q无法从父类l承获得

}


3、final变量Q常量)
    用final修饰的成员变量表C常量,g旦给定就无法改变Q?
    final修饰的变量有三种Q静态变量、实例变量和局部变量,分别表示三种cd的常量?
    从下面的例子中可以看出,一旦给final变量初值后Q值就不能再改变了?
    另外Qfinal变量定义的时候,可以先声明,而不l初|q中变量也称为finalI白Q无Z么情况,~译器都保I白final在用之前必被初始化。但是,finalI白在final关键字final的用上提供了更大的灉|性,为此Q一个类中的final数据成员可以实C对象而有所不同Q却有保持其恒定不变的特征?/p>

 

package org.leizhimin;

public class Test3 {
private final String S="final实例变量S";
private final int A=100;
public final int B=90;

public static final int C=80;
private static final int D=70;

public final int E; //finalI白,必须在初始化对象的时候赋初?

public Test3(int x){
E=x;
}

/**
* @param args
*/
public static void main(String[] args) {
Test3 t=new Test3(2);
//t.A=101; //出错,final变量的g旦给定就无法改变
//t.B=91; //出错,final变量的g旦给定就无法改变
//t.C=81; //出错,final变量的g旦给定就无法改变
//t.D=71; //出错,final变量的g旦给定就无法改变

System.out.println(t.A);
System.out.println(t.B);
System.out.println(t.C); //不推荐用对象方式讉K静态字D?
System.out.println(t.D); //不推荐用对象方式讉K静态字D?
System.out.println(Test3.C);
System.out.println(Test3.D);
//System.out.println(Test3.E); //出错,因ؓE为finalI白,依据不同对象值有所不同.
System.out.println(t.E);

Test3 t1=new Test3(3);
System.out.println(t1.E); //finalI白变量E依据对象的不同而不?
}

private void test(){
System.out.println(new Test3(1).A);
System.out.println(Test3.C);
System.out.println(Test3.D);
}

public void test2(){
final int a; //finalI白,在需要的时候才赋?
final int b=4; //局部常?-final用于局部变量的情Ş
final int c; //finalI白,一直没有给赋?
a=3;
//a=4; 出错,已经l赋qg.
//b=2; 出错,已经l赋qg.
}

 
4、final参数
?nobr oncontextmenu="return false;" onmousemove="kwM(6);" id="key5" onmouseover="kwE(event,6, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">函数参数为finalcdӞ你可以读取用该参数Q但是无法改变该参数的倹{?/p>

 

public class Test4 {
public static void main(String[] args) {
new Test4().f1(2);
}

public void f1(final int i){
//i++; //i是finalcd?g允许改变?
System.out.print(i);
}



二、static

    static表示“全局”或?#8220;静?#8221;的意思,用来修饰成员变量和成员方法,也可以Ş成静态static代码块,但是Java语言中没有全局变量的概c?br />     被static修饰的成员变量和成员Ҏ独立于该cȝM对象。也是_它不依赖cȝ定的实例Q被cȝ所有实例共享。只要这个类被加载, Java虚拟机就能根据类名在q行时数据区的方法区内定扑ֈ他们。因此,static对象可以在它的Q何对象创Z前访问,无需引用M对象?

    用public修饰的static成员变量和成员方法本质是全局变量和全局ҎQ当声明它类的对象市Q不生成static变量的副本,而是cȝ所有实例共享同一个static变量?

    static 变量前可以有private修饰Q表C个变量可以在cȝ静态代码块中,或者类的其他静态成员方法中使用Q当然也可以在非静态成员方法中使用--废话Q,但是不能在其他类中通过cd来直接引用,q一点很重要。实际上你需要搞明白Qprivate是访问权限限定,static表示不要实例化就可以使用Q这样就Ҏ理解多了。static前面加上其它讉K权限关键字的效果也以此类推?

    static修饰的成员变量和成员Ҏ习惯上称为静态变量和静态方法,可以直接通过cd来访问,讉K语法为:
cd.静态方法名(参数列表...)
cd.静态变量名

用static修饰的代码块表示静态代码块Q当Java虚拟机(JVMQ加载类Ӟ׃执行该代码块Q用处非常大Q呵呵)?

1、static变量
按照是否静态的对类成员变量q行分类可分两种Q一U是被static修饰的变量,叫静态变量或cd量;另一U是没有被static修饰的变量,叫实例变量。两者的区别是:
对于静态变量在内存中只有一个拷贝(节省内存Q,JVM只ؓ静态分配一ơ内存,在加载类的过E中完成静态变量的内存分配Q可用类名直接访问(方便Q,当然也可以通过对象来访问(但是q是不推荐的Q?
对于实例变量Q没创徏一个实例,׃为实例变量分配一ơ内存,实例变量可以在内存中有多个拷贝,互不影响Q灵z)?

2、静态方?/strong>
     静态方法可以直接通过cd调用QQ何的实例也都可以调用Q因此静态方法中不能用this和super关键字,不能直接讉K所属类的实例变量和实例Ҏ(是不带static的成员变量和成员成员Ҏ)Q只能访问所属类的静态成员变量和成员Ҏ。因为实例成员与特定的对象关联!q个需要去理解Q想明白其中的道理,不是记忆Q!Q?
    因ؓstaticҎ独立于Q何实例,因此staticҎ必须被实玎ͼ而不能是抽象的abstract?

3、static代码?/strong>
    static 代码块也叫静态代码块Q是在类中独立于cL员的static语句块,可以有多个,位置可以随便放,它不在Q何的Ҏ体内QJVM加蝲cL会执行这些静态的代码块,如果static代码块有多个QJVM按照它们在cM出现的先后顺序依ơ执行它们,每个代码块只会被执行一ơ。例如:

 

public class Test5 {
private static int a;
private int b;

static{
Test5.a=3;
System.out.println(a);
Test5 t=new Test5();
t.f();
t.b=1000;
System.out.println(t.b);
}
static{
Test5.a=4;
System.out.println(a);
}
public static void main(String[] args) {
// TODO 自动生成Ҏ存根
}
static{
Test5.a=5;
System.out.println(a);
}
public void f(){
System.out.println("hhahhahah");
}
 

q行l果Q?
3
hhahhahah
1000
4
5

    利用静态代码块可以对一些static变量q行赋|最后再看一D些例子,都一个static的mainҎQ这样JVM在运行mainҎ的时候可以直接调用而不用创建实例?

4、static和final一块用表示什?/strong>
static final用来修饰成员变量和成员方法,可简单理解ؓ“全局帔R”Q?
对于变量Q表CZ旦给值就不可修改Qƈ且通过cd可以讉K?
对于ҎQ表CZ可覆盖,q且可以通过cd直接讉K?br />
http://www.aygfsteel.com/hongzionline/archive/2007/09/19/146392.html


2008-07-02 10:27 发表评论
]]>
Java中参C递是传D是传址Q?http://www.aygfsteel.com/lcgg110/archive/2008/06/27/211118.htmlFri, 27 Jun 2008 05:55:00 GMThttp://www.aygfsteel.com/lcgg110/archive/2008/06/27/211118.htmlhttp://www.aygfsteel.com/lcgg110/comments/211118.htmlhttp://www.aygfsteel.com/lcgg110/archive/2008/06/27/211118.html#Feedback0http://www.aygfsteel.com/lcgg110/comments/commentRss/211118.htmlhttp://www.aygfsteel.com/lcgg110/services/trackbacks/211118.html什么是g?什么是引用传?

g递是要传递的gZ副本传??
     int i=4;
     int j=i;
     q里相当于把14复制了一个副本给j,l果是i=4,j=4

引用传?传递的是引用对象的内存地址
     int *p,*p1;
     int j=5; *p=j; //q里是把j在内存当中的地址赋给了指针p
     p1=p;  //q里是把指针p中保存的地址(是j的地址)赋给了指针p1
     j=4; //q里改变j的?输出l果?j=4 , *p=4 , *p1=4 //因ؓp和p1指向的都是j 所以他们的值随j值改?
(以上说明和代码来自http://zhidao.baidu.com/question/31191252.html)


Java中函数参数的传递是g递还是引用传递?

Java中参C递时传递到函数中的参数都是原变量的一份拷贝,对于非类cd如intQfloat{,q䆾拯自然和原变量q了关p,q不隄解;
而对于类的实例而言Q这份拷贝恰巧是实例引用的拷贝,它(参数Q指向的实例地址和原实例引用指向的实例地址都是一LQ因此对参数的修Ҏ时也会媄响到实例本nQ故此造成了Java传递类实例是传递的引用卛_址的假象,如下面例子中的changeMemberField函数Q但是我们把参数指向的地址改到别的实例上时Q如changeMember函数Q我们会发现参数和原实例引用再也不会发生关系了,q里证明Java中参C递是完完全全是传D不是传址?

例子代码Q?br />
代码Q?br />
package com.sitinspring;

public class ChangeClass{
    
public void changeInt(int i){
        i
=5;
    }
    
    
public void changeLong(long i){
        i
=555;
    }
    
    
public void changeString(String str){
        str
="5555";
    }
    
    
public void changeMember(Member member){
        member
=new Member("Cindy",35);
    }
    
    
public void changeMemberField(Member member){
        member.setAge(
20);
        member.setName(
"Andy");
    }
    
    
public static void main(String[] args){
        ChangeClass changeClass
=new ChangeClass();
        
        
int intValue=10;
        changeClass.changeInt(intValue);
        System.out.println(intValue);
        
        
long longValue=10;
        changeClass.changeLong(longValue);
        System.out.println(longValue);
        
        String stringValue
="1234";
        changeClass.changeString(stringValue);
        System.out.println(stringValue);        
        
        Member member2
=new Member("Douglas",45);
        changeClass.changeMember(member2);
        System.out.println(member2);
        
        Member member
=new Member("Bill",25);
        changeClass.changeMemberField(member);
        System.out.println(member);
    }
}

package com.sitinspring;

public class Member{
    
private String name;
    
private int age;
    
    
public Member(String name,int age){
        
this.age=age;
        
this.name=name;
    }
    
    
public String toString(){
        
return "Member name="+name+" age="+age;
    }

    
public int getAge() {
        
return age;
    }

    
public void setAge(int age) {
        
this.age = age;
    }

    
public String getName() {
        
return name;
    }

    
public void setName(String name) {
        
this.name = name;
    }    
}

输出Q?br />
10
10
1234
Member name
=Douglas age=45
Member name
=Andy age=20

解释Q?br /> W一个输?0是因为int是基本类?传递的参数是intValue的拷?Ҏ贝的修改对原值intValue没有影响.
W一个输?0和上面是一个道?
W三个输?234.׃String是类cd, str是stringValue的地址拯,参数str指向的地址和stringValue的一?但在函数changeString ?׃String的特D? str=“5555”和str=new String(“5555”)是等L, str指向了新?#8221;5555”所在的地址,此句后str׃原来的stringValuedq了联p?
W四个输出Member?name=Douglas?age=45的道理和上面相同.
W五个输出Member?name=Andy?age=20是因为changeMemberField函数中修改了参数member 的?也就是修改member指向实例的?而这个实例正是member指向的?因此member变成了name=Andy 且age=20.

l论

Java中参C递的都是?对应基本cd,传递的是原值的拯;对于cȝ?传递的是引用即地址的拷?
对于函数对参数的改变是否会媄响原值的问题:值类型自然不会媄响到原?而对于类cd要看改变的是参数的地址q是?如果是前?参数和原引用指向了不同的地址,它们自然q了关p?如果是后?修改的实例就是原引用指向的实?q当然对原D行了修改.

代码下蝲Q?br /> http://www.aygfsteel.com/Files/sitinspring/PassValueOrReference20080116142420.rar

2008-06-27 13:55 发表评论
]]>
http://www.aygfsteel.com/hadeslee 学习http://www.aygfsteel.com/lcgg110/archive/2008/06/19/209230.htmlThu, 19 Jun 2008 10:29:00 GMThttp://www.aygfsteel.com/lcgg110/archive/2008/06/19/209230.htmlhttp://www.aygfsteel.com/lcgg110/comments/209230.htmlhttp://www.aygfsteel.com/lcgg110/archive/2008/06/19/209230.html#Feedback0http://www.aygfsteel.com/lcgg110/comments/commentRss/209230.htmlhttp://www.aygfsteel.com/lcgg110/services/trackbacks/209230.html

2008-06-19 18:29 发表评论
]]>
可以学习学习http://www.aygfsteel.com/lcgg110/archive/2008/06/17/alexarchive.htmlTue, 17 Jun 2008 07:12:00 GMThttp://www.aygfsteel.com/lcgg110/archive/2008/06/17/alexarchive.htmlhttp://www.aygfsteel.com/lcgg110/comments/208630.htmlhttp://www.aygfsteel.com/lcgg110/archive/2008/06/17/alexarchive.html#Feedback0http://www.aygfsteel.com/lcgg110/comments/commentRss/208630.htmlhttp://www.aygfsteel.com/lcgg110/services/trackbacks/208630.html



2008-06-17 15:12 发表评论
]]>
վ֩ģ壺 ƽ| ɽ| Ϫ| | | | Ž| е| | | | | ɽ| ɽ| | | | | ƽ| ̩| ʼ| բ| | | dz| | | ɽ| ׺| ¦| | | | | | ƽ| | Ѯ| | ɽ| 㶫ʡ|