版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA程序设计
对象和类知识图谱理解对象和类的概念以及它们之间的关系;
学会用UML表示类与对象;
掌握类成员、类成员访问控制符、this关键词;
掌握静态变量、实例变量、静态方法、实例方法;
掌握构造方法、访问器方法、toString()方法;
掌握创建对象、对象引用变量、对象数组、对象作为方法参数、变量作用域;
掌握代码块、类代码执行顺序、不可变类与对象。学习目标类与对象的关系①对象(object)表示现实世界中可以明确识别的实体。例如,学生、圆、按钮等。对象具有属性和行为。属性(变量):学号、姓名、平均分...行为(方法)姓名:张敏学号:0001平均分:97学习选课考试......②类(class)定义了一类对象共有的属性和方法。③类是对象的模板、蓝图;对象是类的实例。学生类类的UML表示11/7/2023类的UML表示类名实例变量(非静态变量)实例方法(非静态方法)构造方法类变量(静态变量)类方法(静态方法)对象的UML表示对象名实例变量(非静态变量)类变量(静态变量)堆区方法区count:2......类成员类成员类成员属性成员变量静态变量(类变量)方法构造方法静态方法(类方法)非静态方法(实例方法)访问器方法toString()方法业务方法类常量实例变量(非静态变量)类常量类常量是用staticfinal修饰的变量。
例如,Math类中的常量PI定义为:publicstaticfinaldoublePI=3.14159265358979323846;实例变量与静态变量实例变量(instancevariable):未用static修饰的成员变量,属于类的具体实例(对象),只能通过对象引用变量访问。存储于堆中。静态变量(staticvariable):用static修饰的变量,在一个类的所有实例间共享,也称类变量。静态变量可以通过类名或对象引用变量访问。存储于方法区。实例方法与静态方法实例方法(non-staticmethod)是没用static修饰的方法,也称非静态方法。
(1)可通过对象引用变量调用。(2)可被其他实例方法调用,不可在静态方法中直接调用。静态方法(staticmethod)是用static修饰的方法,也称为类方法。例如:main(),Math.random()等
(1)静态方法可以通过类名、对象引用变量或在类的实例方法中直接调用。(2)静态方法只能访问类的静态成员,不能访问类中的非静态成员。类的定义类的定义类成员访问控制类成员访问控制类中代码可以访问自身的所有成员。其它类的代码访问类的成员,受访问控制符的限制:private:
只能当前类自身可以访问。无访问修饰符的成员:只有相同包中的代码可以访问。protected:
子类、同一包中的类可以访问。public:
所有其它类都可以访问。访问控制是在类的层次上进行的,相对于类而言的,而不是在每个对象上。类属性类的属性声明成员的属性语法如下:[public|protected|private][static][final]<type><variable_name>public、protected、private:用于表示成员变量的访问权限。static:表示该成员变量为类变量,也称为静态变量。final:表示将该成员变量声明为常量,其值无法更改。type:表示变量的类型。variable_name:表示变量名称。类的属性默认值整型byte、short、int、long的基本类型变量的默认值为0。单精度浮点型float的基本类型变量的默认值为0.0f。双精度浮点型double的基本类型变量的默认值为0.0d。字符型char的基本类型变量的默认值为“\u0000”。布尔型的基本类型变量的默认值为false。数组引用类型的变量的默认值为null。如果创建了数组变量的实例,但没有显式地为每个元素赋值,则数组中的元素初始化值采用数组数据类型对应的默认值。构造方法构造方法构造方法:
特殊的方法,用于初始化对象。
在使用new运算符创建一个对象时调用的。
语法:modifieroptclassName(parameterList){ statementsopt }缺省构造方法缺省构造方法:如果类未定义任何类型的构造方法,编译器会自动提供一个不带参数的构造方法。如果已存在带参数的构造,则不会提供不带参数的构造方法。构造方法特点①必须具备和所在类相同的名字。②没有返回值类型,甚至连void
也没有。③可以重载;即一个类可以定义多个方法签名不同的构造方法;④可以没有参数,没有参数的构造方法称为无参构造方法。⑤如果类未定义任何类型的构造方法,编译器会自动提供一个不带参数的构造方法。⑥如果已定义的构造方法,则不会提供无参构造方法。this关键字this关键字(1)
this表示当前对象在构造方法或实例方法中,实例变量被局部变量或方法参数隐藏,可以通过this.instanceVariable访问实例变量。不可用于静态方法内。(2)调用当前类的其它构造方法。this(actualParameterListopt)必须是构造方法的第1条语句。访问器方法访问器方法通常为私有(private)成员变量提供Getter和Setter方法。例如:成员变量为DataTypepropertyNameGetter方法用于获取成员变量的值
签名:publicDataTypegetPropertyName()Setter方法用于设置成员变量的值
签名:publicvoidsetPropertyName(DataTypevalue)toString()方法toString方法Object类中定义的toString()方法:getClass().getName()+"@"+Integer.toHexString(hashCode());getClass().getName()代表返回对象所属类的包名.类名Integer.toHexString(hashCode())代表将对象的哈希值用16进制表示,其中hashCode()代表返回该对象的哈希值。(2)在实际开发中,通常重写toString()方法需要的信息。业务方法业务方法业务方法是类中用于处理业务逻辑而定义的方法块。可以是静态的,也可以是非静态的。例如:Student类定义如下业务方法:创建对象创建对象
使用new关键字创建对象语法:newClassName(arguments);例如:newStudent();//调用无参构造方法newStudent(“019907”,“张敏”);
//调用参数的构造方法Java虚拟机为新创建的对象分配内存,并返回对象的引用。对象引用变量11/7/2023对象引用变量对象通过引用变量(referencevariable)进行访问,引用变量中存储的是对象的引用地址。对象引用变量可以是静态变量,也可以是实例变量。声明引用变量语法:
ClassNameobjectRefVar;
例如:
Studentstu1;引用变量初始化
objectRefVar=newClassName(arguments);
例如:
stu=newStudent();11/7/2023对象引用变量同时声明和创建对象引用变量ClassNameobjectRefVar=newClassName(arguments);
例如:Studentstu1=newStudent(“019907”,“张敏”);1.声明一个引用变量,变量类型为Student,变量名为stu13.将对象的引用赋值给变量stu12.创建对象,返回对象的引用访问对象的实例变量和实例方法访问对象的实例变量和实例方法访问对象的实例变量语法:objectRefVar.data例如:;//访问对象stu1的name成员变量调用对象的实例方法objectRefVar.method(arguments)
例如:stu1.test();//调用对象的test()实例方法基本类型变量和引用类型变量的区别11/7/2023基本类型变量和引用类型变量的区别1基本类型iinti=1;null引用类型stu1Studentstu1;变量表示存储数据的内存单元。基本类型变量存储的是基本类型的值。引用类型变量存储的是对象的引用。当变量未引用任何对象时,它的值为null。对象的引用stu1Studentstu1=newStudent(“019907”,“张敏”);11/7/2023基本类型变量和引用类型变量赋值区别1基本类型i2j赋值前inti=1;intj=2;2i2ji=j;赋值后对象的引用引用类型stu1对象的引用stu2Studentstu1=newStudent(“019907”,“张敏”);Studentstu2=newStudent(“019936”,“曹舟”);stu1=stu2;对象的引用stu1对象的引用stu2不再被引用的对象,将被运行时系统自动回收变量作用域变量作用域
成员变量(实例变量和静态变量)的作用域是整个类,与声明的位置无关。如果一个变量的初始化依赖于另一个变量,则另一个变量必须先声明如果一个局部变量具有与类中的变量相同的名称,那么局部变量优先,成员变量被隐藏。
对象数组对象数组
与基本数据类型一样,可以声明并创建对象数组。当创建对象数组时,数组元素的缺省初值为null。
例:Student[]studentArray=newStudent[10];
数组的引用studentArraynullnull…nullstudentArray[0]studentArray[1]studentArray[9]栈堆对象引用对象引用…对象引用对象数组
与基本数据类型一样,可以声明并创建对象数组。当创建对象数组时,数组元素的缺省初值为null。例:Student[]studentArray=newStudent[10];for(inti=0;i<studentArray.length;i++){ studentArray[i]=newStudent();}
Student对象0Student对象1Student对象9数组的引用studentArraystudentArray[0]studentArray[1]studentArray[9]栈堆对象引用变量作为方法参数11/7/2023对象引用变量作为方法参数与传递数组一样,传递对象实际是传递对象的引用。基本数据类型传递的是实际值的拷贝,修改形参,不影响实参。引用类型变量传递的是对象的引用,通过形参修改对象,将改变实参引用的对象。实参:1形参:copy基本类型copy实参:ref形参:refobject引用类型1代码块11/7/2023代码块方法代码块:
在方法内定义的{...}语句代码。静态代码块:
在类中方法外定义的static{...}语句代码。构造代码块:
在类中方法外定义的{...}语句代码。同步代码块:
在代码块或方法内定义的synchronized(Xxx){...}语句代码。用于线程同步。11/7/2023方法代码块方法代码块是在方法体中定义的,且方法代码块的执行顺序和书写顺序一致。语法:执行时机:方法调用时执行。作用:更好的可读性、功能模块化、避免局部变量命名冲突。11/7/2023静态代码块在类中方法外使用static关键字和{}声明的代码块。语法:执行时机:静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造方法。如果一个类中有多个静态代码块,会按照书写顺序依次执行。作用:用于在系统启动的时候就执行,如初始化系统参数,加载配置文件,建立数据库或网络连接等。静态代码块不能存在任何其他方法体中。静态代码块不能访问非静态成员。11/7/2023构造代码块在类中方法外使用{}声明的代码块(和静态代码块的区别是少了static关键字)语法:执行时机:构造代码块在创建对象时被调用,每次创建对象都会调用一次,但是优先于构造方法执行。注意构造代码块依托于构造方法,即如果不实例化对象,构造代码块是不会执行的。如果存在多个构造代码块,则执行顺序按照书写顺序依次执行。作用:由于构造方法重载原因,创建对象实例时调用的构造方法可能不同,可用构造代码块执行每次创建一个对象实例时都必须的代码。例如统计创建对象的次数。类代码执行顺序11/7/2023类代码执行顺序含有main()方法的应用程序类代码执行顺序:静态变量被赋予默认初值(只执行一次);静态变量初始化(只执行一次);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 康复治疗技术模拟考试题与答案
- 机械租赁发票合同范例
- 合伙加盟合同范例
- 2025年运城货运资格证考试题答案
- 河北省邯郸市八年级语文上册 第五单元 第18课 苏州园林教学实录 新人教版
- 2025年海西驾校考试货运从业资格证考试
- 2025年河南货运从业资格证考试模拟考试题及答案解析
- 水产种苗供应合同范例
- 个人出售小产权房合同范例
- 2023九年级数学上册 第二十一章 一元二次方程21.2 解一元二次方程21.2.1 配方法第2课时 配方法教学实录(新版)新人教版
- 中国饮食文化智慧树知到期末考试答案2024年
- 《电力勘测设计企业安全生产标准化实施规范》
- 第五单元《京腔昆韵》-欣赏 ☆姹紫嫣红 课件- 2023-2024学年人音版初中音乐八年级下册
- 国家粮食和物资储备局招聘考试试题及答案
- 宿舍零食盒子项目策划
- 糖尿病治疗研究进展
- 工业互联网标准体系(版本3.0)
- 山东省菏泽市10校2023-2024学年高二上学期期末联考地理试题(含答案解析)
- 初一数学期中考试分析
- 松果体区肿瘤护理
- 招聘司机方案
评论
0/150
提交评论