学习笔记_计算机软件及应用_IT计算机_专业资料_第1页
学习笔记_计算机软件及应用_IT计算机_专业资料_第2页
学习笔记_计算机软件及应用_IT计算机_专业资料_第3页
学习笔记_计算机软件及应用_IT计算机_专业资料_第4页
学习笔记_计算机软件及应用_IT计算机_专业资料_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、l.summary程序二算法+数据+程序设计方法+计算机语言工具环境程序员面向过程和面相对像的理解:可以拿生活中的实例来理解面向过程少面向对象,例如五子棋,面向过程的设计思路就是首 先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白 子,6、绘制画面,7、判断输赢,8、返回步骤2, 9、输出最后结果。把上面每个步骤用分 别的函数来实现。可以将面向过程中实现的五了棋,用下而的流程图表示。图1面向过程编程如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思、路来解决问题。整 个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制

2、画 面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对彖(棋盘对象)棋子布局的变化,棋盘对彖接收到了棋子的变化就要负 责在屏幕上面显示出这种变化,同时利用第三类対象(规则系统)來对棋局进行判定。可以明显地看出,面向对象是以功能來划分问题,而不是步骤。同样是绘制棋局,这样的行 为在而向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人 员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中 出现,从而保证了绘图的统一。什么是java语言:java是一种通过解釋方式来执行的语言,其语法规则和c+类似。同

3、时,java也是一种跨 平台的程序设计语言。java语言编写的程序既是编译型的,乂是解释型的。程序代码经过编译z后转换为一种称为 java字节码的屮间语w,java虚拟机jvm将对字节码进行解释和运行。编译只进行一次, 而解释在每次运行程序时都会进行。编译后的字节码采用一种针对jvm优化过的机器码形 式保存,虚拟机将字节码解释为机器码,然后在计算机上运行。java语言程序代码的编译和 运行过程如图1所示。程序源代码 编译器 a宁节码计算机机器码 v010010丁vh.虚拟机图1 java程序的编译和运行过程java语言的可移植性表现在哪里?.java (源程序文件)文件经编译器编译为针对jav

4、a虚拟机(jvm)的.class (字节码文件)文 件,.class文件被java虚拟机(jvm)解释成计算机能识别的机器码。不同的操作系统调川 不同的jvm,只耍jvm的解释方式不变,就决定了源程序不需要修改,实现了跨平台。java®拟机(java virtual machine) (台计机if瑕什或处件棋拟的汁并机java礎拟机(jvm)读讹片处 川,r? ulpiclass <flo java編洋器什対java竝拟机产tclass文件.因此是独也j半台的 java解籽器负说将javaife拟机的代码倔定的t仟i:运行swc.cl计算机语言发展史及java的历史地位第一代语

5、言打孔机一纯机器语言第二代语言汇编第三代语言 c、pascak fortran面向过程的语言 c+面向过程/面向对象 java跨平台的纯面向对象的语言.net跨语言的平台java程序运行机制及运行过程 java两种种核心机制: java 虚拟机(java virtual machine )垃圾收集机制(garbage collection )操作系统平台unixjvm for otherother platform java语言有三种注释方式:/用于单行注释用于多行注释7”用于多行注释,且可以被doc工具解析72a va keywords:intpublicthisfinallyboolea

6、nabstractcon tinuefloatlongshortthrowthrowsreturnbreakforstaticnewinterfaceifgotodefaultbytedocasestrictfppackagesupervoidtryswitchelsecatchimplementsprivatefinalclassextendsvolatilewhilesynchronizedinstan ceofcharprotecteimportdtransie ntimplementsdafauledouble自动递增、递减运算符的操作元只能为变量,不能为字面常数和表达式,且该变 量类

7、型必须为整型、浮点型或java包装类型1. 全部小写2. 有专门含义的单词3. 用于定义数据类型:class, int, long;用于定义数据类型值:true, false, null; 流程控制:if, else, for;权限修饰:public, private, protected。标示符1. 包名称:多单词全部小写xxxyyy2. 类名接口名:多单词链接,首字母大写xxxyyy3. 变量和函数名:多单词组成时,首单词小写,后而每个单词的首字母大写xxxyyy4. 常量名:全部字母大写,多单词z间下划线链接xxx_yyy变量1. 内存中的一个存储区域2. 有自己的名称和类型(类型决定了

8、内存的大小)3. 通过变量名来访问该内存块内容4. 成员变量(静态变最,实例变量),局部变最5. 基本数据类型,引用数据类型6. 基本数据类型存放在栈内存内,引用数据类型栈內存中放的为首地址,内容放在堆内存 内7. java中默认的整形为int型,long型应定义为long xx = 123l (i);8. java中默认的浮点型为double型,float型应在后加f或f;9. char类型对应的是unicode, java支持char定义转义7符10. 不同于c, java 'i1 boolean只能是true或false,不能是数值。11自动类型转换12. 强制类型转换,bool

9、ean不能转为其他类型,字符申不能直接转化成基本类型13.数侑型整形:by te(l), short (2) t int(4), long (8) 淳点型:fl oat (4), doubl e (8)char (1)基本数据删字符型bool 型类引用数据类型接口classinterfaceboolean(l)数据类世数组aint a = 12;string str = “abf” ;基木数据类型的值直接放在栈内存内引用数据类型的值放在堆内存内,栈内存里而放的是首地址viast.a bl -类成员的初始默认值:类成员是基木类型但是未初始化时,java会默认初始化为:基本类型默认值boolean

10、falsechar'u0000z (null)byte(byte)oshort(short)oint0longolfloato.ofdoubleo.od只针对于类成员,如方法中出现的耒初始化的基本类型则不会默认初始化。3.operator逻辑运算符顺序:运算符含义冃法结合方向&&、&逻辑与opl&&op2左到右ii逻辑或opl|op2左到右1逻辑非! op右到左位运算符:位运算符川于处理整形和字符型的操作数。位运算是完全针对二进制位(bit)单位的操作运算符用法含义运算分类非-opl对opl操作数按位取反按位运算&与opl & o

11、p2opl和op2按位相与1或opl | op2opl和op2按位相或八异或opl人 op2opl和op2按位异或«左移位opl « op2opl按位左移op2次移位运算符»右移位opl » op2op2按位右移op2次»>无符号右移 位opl »> op2op2不带符号按位右移op2 次注意和逻辑运算符&m| i的区別,&和&&都nj以是逻辑打。逻辑操作吋,操作数为boolean 只为0或1,但是位操作时,操作数为整形,h会被转化为二进制表示,按位逐个操作,然 后给出结果。左移就是将左边的

12、操作数在内存中的二进制数据左移右边操作数指定的位数,左边移空的部 分补0。右移则复杂一些。当使用“>>”符号时,如果最高位是0,左移空的位就填入0; 如果最高位是1,右移空的位就填入1 0注意:移位运算符适用的数据类型有byte、short> char int、long。技巧:移位能让我们实现整数除以或乘以2的n次方的效果,如:y«2 丁 y*4的结果相同; y»l的结果于y/2的结果相同。总之,一个数左移n位,就是将这个数乘以2的n次方, 一个数右移n位,就是将这个数除以2的n次方。运算符优先级: 增量和减量运算 算术运算 比较运算 逻辑运算 赋值运算优

13、先级描述运算符高括号()9正员号+ .一元运算符+ !乘除* / %加减+ -移位运算« » »>比较大小<>>=<=比较是否相等=!=按位与运算&按位异或运算a按位或运算1逻辑与运算&&1逻辑或运算ii三元运算符?:低赋值运算符=+= *= /= %=进制1. 二进制,八进制,十进制,十六进制2. 计算机存储方式:计算机以数据的二进制补码形式存储a. 正数:补码等于原码b. 负数:补码等于反码末尾加1c. 反码:最高位不变,其余位取反d. int型为4字节,32位,默认笫32位为符号位e. long型8字节,

14、64位,默认第64位为符号位byte类型原码补码原码补码4 需要记忆的常用类string class两种初始化的比较public class stringclasspublic static void main(string arg)string strl = new string(,'hellowordh); / 构造函数初始化方法 1string str2 = “helloword”;直接初始化方法 2string str3 = “helloword”;直接初始化方法 2string str4 = new string(,hellowordn); / 构造函数初始化方法 1栈內存堆

15、內存ctrl才"helloword |str2string str2 = nhenoyrdn;string str3 = l,hgllqwqr>,;string strl = new sbb世qp");string str4 = new stjldgf'beuq蚁qld”);垃圾垃圾用构造方法初始化时,会形成垃圾,每次构造,即使字符串相同,也会分配 不同的堆内存,而字符串直接初始化则利用了变量池,利用string类的方法public boolean equals (string str)比较堆内存的内容system.out.print(strl.equals(

16、str3);/truesystem.out.print(strl.equals(str4);/truesystem.out.print(str2.equals(str3);/truesystem.out.print(strl.equals(str4);/true利用“h”比较堆内存的地址system.out.print(strl=str3);/falsesystem.out.print(strl=str4);/falsesystem.out.print(str2=str3);/truesystem.out.print(strl=str4);/false注意字符串常量被默认为匿名string类,

17、用方法2初始化string变量时,会 使用共享设计,字符串匿名对象会被jvm放入变量池屮记录下来当z后再次用到该匿名字符串时,它会被直接使用,堆内存地址不变. 构造两数初始化时,不会自动入池,需要使用intern ()手工入池。如2 手工入池string str5 = new string(" helloword").intren();string str6 = "helloword"system.out.print(str5=str6);/truesystem.out.print(str5.equals(str6);/true由于字符串常量是匿名str

18、ing类,故其可以向string类一样使用,如下:system.out.print(,helloword,.equals(str6); /truesystem.out.print(str6.equals(,>helloword>>); /true/ 但是 system.out.print(str6.equals("helloword");存在可能跑出nullpointerexception界常的悄况,如下所示string str7 = null;system.out.printjstrj.equalsc'helloword");/;?抛出

19、异常可以将两者互换來避免界常'抛出system.out.print(llhellowordiv.equals(str7);string 和 stringbuffer 的问题public class stringclasspublic static void main(string arg)string strl = "abc"strl+=ndef;利用加号连接两个字符串for(int i = 0; i<10; i+)strl+=mem;/产生较多垃圾system.out.println(strl);堆内存垃圾垃圾这种形式的编程应该使用stringbuffers

20、tring 的 constructorstringqinitializes a newly created string object so that it represents an empty character sequenee.string (byte bytes)constructs a new string by decoding the specified array of bytes using the platform,s default charset.string(byte bytes, int offset, int length)constructs a new st

21、ring by decoding the specified subarray of bytes using the platform's default charset.string (char value)allocates a new string so that it represents the sequence of characters currently contained in the character array argument.string (char value, int offset, int count)allocates a new string th

22、at contains characters from a subarray of the character array argument.string(string original)initializes a newly created string object so that it represents the same sequenee of characters as the argument; in other words, the newly created string is a copy of the argument string.string (sttingbuffc

23、r buffer)allocates a new string that contains the sequence of characters currently contained in the string buffer argument.string (stringbu订dcr builder)allocates a new string that contains the sequence of characters currently contained in the string builder argument.待续string 的 methodcharat (int inde

24、x) return charreturns the char value at the specified index.codepointat(int index)return unicode codereturns the character (unicode code point) at the specified index.codepointbefore(int index) return unicode codereturns the character (unicode code point) before the specified index. codepointcount(i

25、nt beginlndex, int endindex)returns the number of unicode code points in the speci f ied text range of this sporcto(string onothcrstring) return int compares two strings lexicographically.note: (anotherstringlarger than negative, equal zero, less than positive) comparetotgnorecase(string st

26、r)return intcompares two strings lexicographically, ignoring case differences. note: ( anotherstring larger than negative, equal zero, less than positive)concat (string str) return stringconcatenates the specified string to the end of this string.valucof(char data) return stringreturns the string re

27、presentation of the char array argument.copyvalueof(chart data) return string equivalent to valueof (char)>copyvalueof (char data, int offset, int count)return string equivalent to valueof (char, int, int) cndswith(string suffix) return booleantests if this string ends with the specified suffix.e

28、quals(object anobject) return boolean compares this string to the specified object.string类的正则表达式格式输出介绍null总结看下面的代码:package fanxingnuotable;class nodeprivate string data; public node()public string getdata() returnthis.data;publicstaticvoid main(string arg) node n = new node();node nl = null;system.o

29、ut println(n);sys tem.out:. print ln(n .get data();system.out.printin(n1);system.out.println(nlgetdata(); 输出结果如下:fanxingnuo.tablenode659e0bfdnullnullexception in thread "mairt javalang.nullpointerexceptionat fanxingnuotabletablemain(table.java:335)对象被构造后,用new分配了空间,此吋其有地址,属性在地址内为null;当直 接把对象初始化为

30、null吋,表示该对象不存在(真的为空),是个空指针,它的 屈性不存在,当访问屈性时会出错。scanner特点:final 类来白包方法:math class特点:该类为final类,无法继承 来自包方法:static方法可用类名直接调用:publicstaticdouble sin(doublea)publicstaticdouble cos(doublea) publicstaticdoubletan(doublea) publicstaticdoubleasin(doublea) publicstaticdoubleacos(doublea) publicstaticdoubleatan

31、(doublea) publicstaticdouble toradians(doubleangdeg)角度变弧度publicstaticdouble todegrees(doubleangrad)弧度变角度 publicstaticdouble exp(doublea) publicstaticdouble ceil(doublea)向上取整 publicstaticdouble floor(doublea)向下取整publicstaticdoublelog(doublea)publicstaticdouble publicstaticdouble publicstaticdoublelog

32、lo(doublea) sqrt(doublea)平方根 cbrt(doublea)立方根public static double/float/int/long abs(double a)绝对值publicstatic long/int addexact(long x, iongy)计算和常量:静态常量:publicstaticfinaldoublef = 2.7182818284590452354; publicstaticfinaldoublepi = 3.14159265358979323846;5 算法介绍递归递归结构的主要内容包括两个部分:(1) 定义递归头。如果递归结构只是一味地自

33、己调用自己将构成无限循坏,所以任 何一个递归方法都必须有一个“递归头”,即当同性质的问题被简化得足够简单时,将可 以宜接获得问题的答案,而不必再调用自身。例如当求n!的问题被简化成求i!的问题 时,可以直接获得1!的答案为1,这就是递归头°(2) 定义如何从同性质的简化问题求得当前问題“ 一个问题的解答将依赖于一个同 性质问题的解答,而解答这个同性质问题实际就是用不同的参数(体现范围缩小)来调 用递归方法自身。例如求n!这个问题被划分为求(nl)!和把(nl)!与n相乘两个步骤,通 过这样的划分,求n!的问题被简化成求(n-1)!的问题.同理,求(ml)!的问题被简化成 求(n-2)

34、!的问题,依次类推o执行递归方法时,首先逐级递归调用展开,如从调用factorial(n)到调用factorial(n- 1).再到调用factorial(n-2),,当达到递归头时再逐级返回,依次求得factorial(l), factorial(2)» ,factorial(n-l),直到最后得到 factorial(n)的结果。下面写个完整的求阶乘的程序。在该程序中,用main()方法來调用factorial()方法。简单的程序是递归结构的优点之一。但是递归调用会占用大量的系统堆栈,内存耗 用多,在递归调用层次较多时,运算速度较之循环结构要慢得多。所以,在使用时要慎 重考虑。6

35、参数传递基本数据类型和应用数据类型的参数传递package fanxingnuo; public class test private int j=0;private string str = "hello"public int get3() return j;public voidj) this.j = j;public string getstr() return str;public void setstr(string str) this.str = str; public static void main(string args) /实例化一个test类,并设置值

36、test test = new test();testsetj(100);test.setstr("hello");/初始化一个数值int numl = 111;/将引用数据class传入函数,经过函数后,class成员变化system.outprintin("function result of class num is:"+change(test)j);system.out.printin("class num is:"+testj);systemout.printin("function result of class

37、 str is:"+change(test)str);system.outprintin("class str is:”+teststr);将基本数据传入函数,经过函数后,数值不变化system.out.printinunction result is of int number:"+change(numl);system.out.printin(”int number is:"+numl);/重载函数change public static test change(test temp)temp.setj(200);temp. setstr (,word

38、h);return temp;public static int change(int num)return num=222;输出结果为:function result of class num is:200 class num is:200function result of class str is:word class str is:wordfunction result is of int number:222 int number is:lll结果分析:对于数值numl的内存分析如下:numl=lllnum=numl=lllnuml=lllnum=222对于change引用内存分析如

39、k:栈内存看下面这段代码分析结果:package fanxingnuo;public class test public static void main(string args) string str = “hello”;system.out.printin(”function result of class stris:"+change(str);system.out.printin(”str is:"+str);public static string change(string temp)t emp=,word,'return temp;结果如下:funct

40、ion result of class str is:wordstr is:hello栈内存new堆内存test"hello"temp"word"7内容讲解继承1. 继承使用extends关键字,子类将继承父类的非private属性和方法,不继承构造方法, 但是必须调用构造方法。2. 子类虽然不能直接访问private属性但是可以通过public的方法间接方位private属性3. 子类可以另外定义属性和方法4. 了类方位继承的属性和方法的方式与父类相同5. 子类使用构造函数创建实例时,对于父类继承部分是调用无参数的构造函数6. 了类的方法重写:将从父类

41、继承的方法升级改造以适m了类的使用。方法名称,参数列 表,返回值应该完全相同。访问权限不能比父类更严格。7. 对于子类的方法重写,通过类名调用不同的方法实现不同的功能。8. super在了类中使用,用于引用父类的属性和方法,与this相对应。默认情况下,了类 通过super关键字调川父类无参数构造器。若父类无不含参数的构造器,则子类要通过 super (参数)來调用父类带参数构造方法。渣程2mi1产生对累并对成 员受量飮认初绐化父类養程susi方式 mimtkis 对- 应的构it方法3构it方法中是电 qth迁语句调甩3构it方法中是电 smthi语句谓用3构it方法中是2 gth茫语句调甩

42、&渣程1方式燮銭8用山让对应的构逢方法4. super®句调用或隨式玄适程1方式:调用父亦汕方法-sig« 至:obj.c谈为生“对当11类中的成员吏量莫总加化4 super语句调用或魁式週用父真谕tg法4 ,upr语句週式 il用父剧血冻5对当窮类中的成 员竇.旻式瞬化至objx谈为止2对构it方法中 的形式多数赋值j 6执行当前构itl方法中的代同思考1)为什么super()和this()调用语句不能同时在一个构造函数中出现?2).为什么super(.)s£this(.)i用语句只能作为构造函数中的第一句出现?关键字super在java类中使super

43、来引用父类的成分-super可用于访问父类中定义的属性-super可用于调用父类中定义的成员方法-super可用于在子类构造方法中调用父类的构造方法-super的追溯不仅限于直接父类继承有纯继承和扩展继承,纯继承的导岀类屮不包含新的方法和属性;扩展继承则包含 新方法或属性。纯继承usefulvoid k) void g() assume this represents a big interface extendingthe interfacemoreuseful void f() void g() void u() void v() void w()扩展继承扩展继承增加的接口基类不能访问,向

44、上转型后这些接口将被裁减掉 向下转型的说明:class af();class b extends af();go;h();a atype = new a(), new b();atypeo.f(); okatypel.f(); okatype0.g(); erroratypel.g(); error(b)atype0.g(); error(b)atypel.g(); ok基类可以用导出类初始化,此时可以通过强制向下转型,继承扩展接口 但是基类用基类初始化时不能像导出类强制转型。抽象类的定义:将基类定义为抽象类abstract关键字此时该基类将不能创建对象可以下class前加abstract也可

45、以在几个方法或属性前加关键字访问权限关键字类内子类包内包外整体privateokprotectedokokokokpublicokokokokok组合与继承面向对象的编程生成和使用程序代码最可能采用的方法是直接将数据和方法包装到一 个类 中,并使用该类的对像。可以用组合开发新类也可以通过继承开发子类。但是一般继承使用 不多,只冇在需要向上转型的悄况下才使用。在选择继承时应该考虑是否需要向上转型。final关键字final nj*以修饰数据,方法和类。修饰数据(基础数据类型)时指该数据是不能修改的,是常量。定义时必须赋值,常量减轻 了运行是的负担。一个经过static和final修饰的数据占有一

46、个无法改变的内存空间。如來类中一个数据是final 修饰额,在每次创建对象时该数据都会被初始化一次,但是static和final修饰的数据在装 载时被初始化,每次创建对象时地址和数值都不变,不会被再次初始化。final int i = 100;static final i = 100;当final修饰引用数据类型时 (对象引用),final使引用恒定不变,一旦应用被初始化为一个对彖,该对彖就无法对改变指向另外一个对彖。然而对彖自身是可以修改的。这一 效果同样适用于数组。final string str = new string();stri ng stri = new stri ng();st

47、ri ng str2 = new stri ng();str2 = stri; okstr2 = str; okstri = str2; okstr = strl/str2; error空白final允许在声明变量为final时不初始化该值,可以编译通过,编译器保持该空final,但是在使 用它之前必须初始化。该方法提高了 final使用的灵活性。class odometerfinalint num;odometer(int num)system.out pri ntlnodometer");this, num = num;system.out.pri ntln (this, num

48、);odometer() num = 0;class test odometer odel = new odometer(120); odometer ode2 = new odometer(12);final还可以修饰力法的参数final方法final方法能够防止改变方法的意义,禁止继承类的重写。继承了类中不能重写该方法, final方法还涉及到效率问题,final方法告诉编译器将所final方法的调用转为内嵌调用。private修饰的方法在继承类中也无法重写,与该方法名和参数相同的方法将是一个新方法, 而不是重写的方法。此时多态方式的类无法继承该方法。“重载”只有在某方法是基类的接口的一部

49、分时才会出现。即,你必须能将一个对彖向上转 型为它的基本类型并调用相同的方法(这一点在下一章将得以阐明)。如果某方法为private, 它就不是基类的接口的一部分。它仅是一些隐藏丁类中的程序代码,不过具有相同的名称而 lio但你如果在导出类中以相同的名称生成一个public, protected或包访问权限(package access)方法的话,该方法就不会产生在基类中出现的“仅具有相同名称”的情况。此时你 并没有重载方法,你仅是生成了一个新的方法。由t private方法无法触及又不能有效隐藏, 所以仅仅是因为考虑到定义它的类的程序代码组织,它们才有存在的总义,除此z外,其他 任何事物都不

50、需要把它纳入考虑的范畴。final 类一个final类是不能被继承的,该类无法创建子类cfinal类中数据和方法都暗含是final型的。static关键字static属性class astatic int num;xxxxxx;a al = new a();a a2 = new a();a a3 = new a();num将被存储于全局数据区,al, a2, 的num共享一个数据区,修改一个将修改其它的 两个。同时static性质的屈性不依赖于实例化对象,利川类名.num就可以调用和修改即:a.num可见static属性不受堆,栈内存的限制,而是存在于全局数据区栈内存:保存基木数据类型和堆内存

51、的访问地址堆内存:保存引用数据类型的属性全局数据区:保存所有的全局数据,如static属性全局代码区:保存所有的操作方法static方法与static属性一样,static方法独立于类的实例,可以通过类名.方法名调用 非static方法:只能通过实例化调用,可以调用static属性和方法,也可以调用非static 属性和方法 static方法:可以通过类名称和实例化调用,可以调用static属性和方法,不可以调用 非static属性和方法原因:static方法不依赖于实例化,而非static则依赖于实例化,因为他们需要堆内存的分 配。static的应用主要有两点: static属性用于公共变最

52、的保存 使用static方法用于取得类的实例化操作,或者一些不希望有类的实例化的应用单例设计当构造方法私冇化时,该类将无法通过构造方法被实例化,此时只能在该类的内部实例化, 然示通过该实例化来实例化其他对象。由于此时该类无法实例化,则要将类内部的实例化送 出去,应该使用static关键字。如下代码:class testprivate int num;private string name;private test()system.out.println("构造 test class");this.num = 100; = "null"p

53、ublic static test test = new test();public void setnum(int num)this, num = num;public void setname(string name) = n ame;public void print()system.out.println("name is:"++" num is: "+this.num);public class demopublic static void main(string arg)test testl = test.

54、test;test test2 = test.test;testl.print(); /null 100test2.print(); /null 100testl.setname("tree");testl.print(); /tree 100test2.print(); /tree 100说明,此时test被static修饰说明他是全局变量,是类属性,地址只有一个,所以通过它实 例化的对象均指向同一个地址。也就是单例。单例设计的完整代码如下:由于test也是属性,它应该隐藏成private,同时为了表示是单例设计,还要加± final关键 字:class testprivate int num;private string name;private test()system.out.println("构造 test class");this.num = 100; = "null"private static final test test = new test();public static test gettest()return test;publi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论