分享
 
 
 

很不错的JAVA学习笔记

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

1.关于参数的传递

class ValHold{

public int i = 10;

}

public class ObParm{

public void amethod(){

ValHold v = new ValHold();

another(v);

System.out.println(v.i);

}

public void another(ValHold v){

v.i = 20;

ValHold vh = new ValHold();

v =vh;

System.out.println(v.i);

}

public static void main(String[] argv){

ObParm o = new ObParm();

o.amethod();

}

}此题的答案是10,20,为什么不是10,10呢?

这样解释吧,按照sun官方的说法:当一个引用变量作为参数传递给一个方法时, 在这个方法内可以改变变量的值,即改变引用指向的对象,(本题中将vh赋给v)但是方法的调用结束后,改变量恢复原来的值,即变量仍然指向原来的对象。 (即another(v)调用结束之后,v又回复到第一次ValHold v = new ValHold();时指向的地址空间。) 但是假如在方法内改变了引用指向的对象的数据(属性),那么当方法的调用结束后,尽管引用仍然指向原来的对象,这个对象的某个属性已经被改变了(v的i值在 执行v.i=20的时候就已经被改变了,所以调用another结束后,v.i已经变成了20) .

2.关于内部类

public class InOut{

String s= new String("Between");

public void amethod(final int iArgs) {

int iam;

class Bicycle{

Bicycle() {

System.out.println(s); //这两句话可以,也就是说可以访问s

System.out.println(iArgs); //和final int 常量

//System.out.println(iOther);

}

}

new Bicycle();

}

public void another(){

int iOther;

}

public static void main(String[] args) {

InOut inout= new InOut();

inout.amethod(22);

}

}

Inner class能够存取外部类的所有实例变量----无论这些实例变量有什么样的存取控制符(比如private),就像类中的方法能够存取方法所在类的所有变量一样;假如inner class定义在方法中,则inner class能够存取方法所在的类中的实例变量,也能存取该方法中的局部变量,但该局部变量必须是final的,也就是只能访问方法中的常量.(上面所说的都是普通内部类,不是静态内部类的情况).

public class Testinner {

int t=10;

public void a() {

final int u =90;

class InMethod { //方法中内部类

InMethod() { //内部类的构造方法

System.out.println("u="+u); //封装方法内的变量必须是final才能访问到!

System.out.println("t="+t); //外部类的变量可以任意访问!

}

}

new InMethod();//必须在方法a()中创建内部类对象之后,Testinner对象才能通过 a()访问到InMethod类

}

public static void main (String[] args) {

Testinner t= new Testinner();

t.a();

}

}输出:u=90 ,t=10

方法中的内部类不可以是static的!假如一个内部类是静态的(当然只能是类中的内部类啦),那么这个类就自动的成为顶级(top-level)类即普通的类。静态内部类中的方法(无论是静态的方法还是非静态的方法)只能直接访问外部类中的静态成员,要访问外部类中的非静态成员,则必须创建外部类的对象。

Photoshop教程

数据结构

五笔输入法专题

QQ病毒专题

共享上网专题

Google工具和服务专题

1.关于在静态方法中访问非静态内部类的问题

public class Outer{

public String name = "Outer";

public static void main(String argv[]){

//Inner myinner = new Inner(); //直接用这句话创建会编译错误

Outer myouter=new Outer(); //先创建外部类的对象

Outer.Inner myinner=myouter.new Inner();

myinner.showName();

}//End of main

//下面这段代码用来测试这种n烦的办法

public void amethod(){

Outer myouter=new Outer();

Outer.Inner myinner=myouter.new Inner();

myinner.showName();

}

//非静态方法访问非静态内部类

private class Inner{

String name =new String("Inner");

void showName(){

System.out.println(name);

}

}//End of Inner class

}在非静态方法访问非静态内部类直接创建该内部类的对象:new Inner().showName();当然也可以采取这种n烦的办法假设private class Inner改成static private class Inner, 那么在静态方法中访问静态内部类也是直接创建该内部类的对象,即Inner myinner = new Inner(),或者Outer.Inner myinner = new Outer.Inner()也行得通,可见这种n烦的方法在上面三种情况下都是可以用的。

2.Abstract方法不能用final,static修饰非abstract方法在abstract类中可以用final,static

抽象类中的抽象方法不能是final,但是非抽象方法前加final可以编译通过因为abstract和final相互排斥,前者专用于继续,后者禁止继续

抽象类中的抽象方法不能为static

非抽象方法可以为static

包裹类Integer、 String 、Float、 Double等都是final类,不能被继续!Integer i=new Integer(“6”);假如字符串不是数字,会产生运行异常(不会出现编译错误)但是对于boolean,这个规则不适用。当字符串时(大小写无关),Boolean对象代表的数值为true,其他字符串均为false如:

Boolean b = new Boolean(“afiwou”); 代表false

Boolean b = new Boolean(“tRue”); 是true3.多态性、虚拟方法调用

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有