java2 实用教程第四章
博主原创 转载请注明地址
1成员变量
声明变量所声明的变量被称为成员变量和域变量,成员变量在类中的书写位置与前后顺序无关,
但是有个特点就是变量的赋值问题:成员变量在定义的时候可以有默认值,而域变量在定义的时候没默认值,所以在定义的时候应该特别注意是否需要赋值的问题
变量名的定义也有规范的要求,如果变量是一个单词组成的,那么最好首字母大写,如果是两个甚至两个以上的单词组成,那么最好从第二个单词开始首字母大写
在类中对变量的操作只能在方法中操作,例如需要计算或赋值的一系列问题,赋值当然也可以在定义的时候赋值,但是记住不要在除了方法中和定义意外赋值,java中不允许这么做
2创建对象用类创建一个对象需要分成两部,
1)先用类定义一个变量
2)使用new方法为对象分配内存
例如:类Lader 定义对象lader
Lader lader;
lader=new Lader();
new运算符再为对象分配变量以后,将返回一个引用给对象变量
分配给对象的变量我们习惯性的称为对象的实体
3垃圾收集
有时候我们在操作的过程中会将一个对象赋给另外一个对象,说白了就是把a对象的引用赋给了b对象,这时就是两个对象公用一段内存,a对象的实体就不属于任何一个变量了,
java有所谓的垃圾收集机制,这种机制可以周期性的检测某个实体是否已经不再属于任何一个对象拥有,如果发现了这样的实体,就释放实体所占有的内存,
如果希望java虚拟机立刻执行垃圾收集操作,可以用System类调用gc()方法
4
在java语言中,类有构造方法,但是没有析构方法
5
如果需要编译某个目录下的所有java文件,可以进入该文件,使用通配符*代表所有源文件名字来执行编译全部文件的功能
例如c:p/目录下的文件
那么只是需要执行 c:p/ >javac *.java
6对象的组合与类之间的关系
如果一个对象组合了另一个对象,那么a对象可以使用b对象的方法
通过组合对象有几个特点
(1)通过组合对象来复用方法也称为黑盒复用,因为当前对象只能使用组合对象的方法,而所组合的对象的方法的细节及其算法的实现时不知道的,所以习惯性称为黑盒复用
(2)当前对像可以随时改变所包含的对象,其实即对象与所包含的的对象属于弱耦合关系
关系在UML中学了大家学了4种主要关系,这里课本只是介绍了两种,那么我就大致概括一下这两种
如果a类中的成员变量是用b类声明的对象,那么a和b的关系式关联关系
依赖关系:如果A类中某个方法的参数是b类声明的对象或某个方法返回的数据类型b类的对象,那么a和b是依赖关系
7实例成员与类成员(变量)
定义:在声明成员变量的时候,如果用关键字static给予修饰的称作类变量,否则叫做实例变量,(类变量也叫static变量,静态变量)
两种变量的区别:
类变量:当类有类变量的时候,如果使用类 new创建不同的对象的时候,分配给这些对象的类变量共同占有一块内存,而实例变量是每个对象的实体分别占有一个属自己对象的内存;
不管在类中有没有声明类变量,但是在java程序执行的时候,类的字节码文件被加载到内存的时候,都会自动为类变量生成一段内存,当程序执行结束的时候才开始释放,但是实例成员是只有定义的时候
才会在内存中为它生成一段空间,否则不会生成空间
访问方式:实例成员变量只能通过对象来进行调用与访问
而类成员变量不仅可以通过对象来进行访问,也可以通过类名进行访问
8 实例方法和类方法的区别
(1)对象调用实例方法:当类的字节码文件被加载到内存的时候,内存并没有为其分配入口地址,只有当该类创建一个对象的时候,才会分配相应的入口地址
(2)而类方法恰恰相反,在类的字节码文件被加载到内存的时候,就已经为其分配了入口地址,
综上所述:调用类的实例方法只能通过对象进行调用,而调用类的类方法可以通过类名和对象名进行调用
类的实例方法不仅可以调用实例成员,而还可以调用类成员
但是类方法只能调用类成员。因为在创建对象之前,类的实例成员变量还没有分配内存
设计类方法的原则:我们通常都是定义的实例方法,但是有的时候定义类方法效果会更好,当一个方法不需要操作任何类的势力成员的时候,我们可以定义为类方法,因为这样通过类就可以
对他进行调用。不必另外定义对象,那样反倒还会为实例变量分配内存,反倒浪费了不必要的内存空间。比如java类库中的Array类,Math类等等,该类中的所有方法都是static方法。这样对
这些库中的类的方法进行调用得时候直接通过类名调用其方法就可以了,不必要再创建一个对象在对其进行调用
9方法重载
java中有两种多态:方法重载和方法重写
重写主要是和继承有关的,再第五章还会学到
下面这句话对方法重载概括的很好:
对象的行为时通过类中的方法来体现的,行为的多态性就是方法的重载
再使用方法重载的时候要尽量避免出现歧义
10:this关键字
this是java中的一个关键字,具体表示某个对象,它可以出现在实例方法和构造方法中,但是不可以出现在类方法中
this关键字出现在类的构建方法中,代表该构建方法所创建的对象
(1)在实例方法中如何使用this
实例方法可以操作类的成员变量和类变量、、下面四个实在实例方法中对下面几种情况进行调用得规则
操作成员变量的时候默认的格式为
this 。成员变量
操作类变量的默认格式为
类名。成员变量
操作成员方法的默认格式为
this。成员方法
操作类方法的默认格式为
类名。类方法
当然在实例方法中调用另一个方法的时候完全可以省略this关键字和类名,即上面提到的最后两种是不必要的
(2)this虽然可以出现在实例方法中,但是不可以出现在类方法中,原因是类方法可以通过类名直接进行调用,这时候,可能还没有任何对象产生
11包问题
包名的目的主要是为了区别相同的类名,当java不同的源文件有相同的类名的时候,可以通过不用的包进行区分
通过关键字package语句可以 声明包语句,即为该源文件中声明的类指定包名
eg:package 包名;
如果源文件中省略了包名,那么源文件中所定义的类都会被默认的认为是无名包的一部分,只要这些类的源文件被保存在相同的目录下,他们就属于同一个包,只不过是没有包名;
包名可以是一个合法的标识符,可以是诺干个标识符中间加上小数点分割而成;
eg
package sum;
package sum。nihao。cn;
(1)如何运行有包名的主类
先找到包名主类的目录的上一级目录,在运行的时候,必须写上主类的全名,因为使用了包名,所以在运行的时候,主类的全名就是“包名.主类名”
12import语句
如果一个类想要使用的类和他不在一个包中,那么就需要使用import语句实现
(1)引入类库中的类:如果要使用某个包中的类,就是用import语句
eg: 如果要引入java。util包中的date类 就使用下面的语句import java.util.Date;
另外扩展:java.lang包时java语言的核心类库,它包含了许多java运行时候不可缺少的类库,系统会·自动为程序引入该包中的类(例如System类,Math类),因此并不是需要使用import语句来引入该类
使用import语句引入整个包的所有类的话,那么可能会增加编译时间,但是绝对不会影响程序的运行性能,因为当程序真正运行的时候,只有需要使用的类的字节码文件才会被编译到内存之中;
(2)引入自定义的包中的类: 为了时用户可以引入自定义包中的类,可以在classpath中指定自己需要包的路径,默认的classpath路径的后边会有下面两个标点符号,; 整个符号就时可以加载应用程序当前目录中
的无名包类
13访问权限
访问权限的关键字就是c++中大家学到的那几个,除此之外还有一个友好型default
需要特别注意的是,在编写类的时候,类中的实例方法总是可以操作类中的实例变量和类变量,类中的类方法总是可以操作类中的类变量,这些鱼访问权限并没没有直接的关系
面向对象编程提倡对象应当在调用方法的时候改变自己的属性,类应当提供操作数据的方法
(1)友好变量和友好方法
不用public,pricate,protected修饰的变量和方法都被称作友好型
(2)可以在另外任何一个类中使用public的类创建对象,日过一个类不适用public类修饰,那么这个类被称作友好类·,在另外一个类使用友好类创建的对象的时候,要保证这两个类应该在同一个包种
下面列出一个表格,这个表格是我们java老师给我们整理的,感觉还不错,方便记忆
下面用1代表可以,0代表不可以
类内部 本包 子类 外部包
public 1 1 1 1
protected 1 1 1 0
default 1 1 0 0
private 1 0 0 0
14基本类型的类封装
java在提供基本数据类型的时候也提供了与基本数据类型相关联的类,实现了对基本数据类型的封装
这些类在java.lang包中,分别是Byte,Integer,Short,Long,Float,Double,Character类
他们的构造函数和对象的调用方法都相似,举一个例子便可以
eg:double类
他的构造方法就是 Double(double num)
Double对象调用方法doubleValue()就可以返回想要的类型的值,
其他的几个类都是相关的
15对象数组
对象数组最重要的就是数组的定义和使用
例如Student类想定义一个大小为10的对象数组,
Student 【】 stu;
stu=new Student();
上述两部仅仅是定义了数组stu中有10个元素,每个元素都是Student类的独享,但是目前这些对象都是空的
在使用之前,应该创建数组所包含的对象
stu【0】=new Student();
16jar文件
JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件
中文名字是java归档文件
类型是压缩文件
JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。JAR 文件非常类似 ZIP 文件——准确的说,它就是 ZIP 文件,所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的
zip文件及时一个如今非常流行的压缩文件
(1)如何使用java运行环境中扩展的类
首先我们使用jar。exe命令吧一些类的字节码文件压缩成一个jar文件,然后将这个文件存放在java运行环境的扩展中去,即将jar文件存放在JDK安装目录的文件夹下,这样,java应用程序就可以使用这个jar文件中1的类创建对象了
17搭建流水线
18课后小结
(1)通过对象的组合可以实现方法复用
(2)对象访问自己的方法以及调用方法受访问权限的限制
java2 实用教程第四章的更多相关文章
- 《Java2 实用教程(第五版)》学习指导
<Java2 实用教程(第五版)> 第1章Java入门 主要内容:P1 1.1Java的地位:P1 1.2Java的特点:P2 1.3安装JDK:P5 1.4Java程序的开发步骤:P8 ...
- 《Java2 实用教程(第五版)》教学进程
目录 <Java2 实用教程(第五版)>教学进程 预备作业1:你期望的师生关系是什么? 预备作业2 :学习基础和C语言基础调查 预备作业3:Linux安装及命令入门 第一周作业 第二周作业 ...
- [Learn Android Studio 汉化教程]第四章 : Refactoring Code
[Learn Android Studio 汉化教程]第四章 : Refactoring Code 第四章 Refactoring Code 重构代码 在Android Studio中开发,解决 ...
- Cobalt Strike系列教程第四章:文件/进程管理与键盘记录
Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...
- 2018-06-20 中文代码示例视频演示Python入门教程第四章 控制流
知乎原链 续前作: 中文代码示例视频演示Python入门教程第三章 简介Python 对应在线文档: 4. More Control Flow Tools 录制中出了不少岔子. 另外, 输入法确实是一 ...
- python 教程 第四章、 控制流
第四章. 控制流 控制语句后面要加冒号: 1) if语句 if guess == number: print 'Congratulations, you guessed it.' # New b ...
- [ABP教程]第四章 集成测试
Web应用程序开发教程 - 第三章: 集成测试 //[doc-params] { "UI": ["MVC","NG"], "DB& ...
- Flask 教程 第四章:数据库
本文翻译自 The Flask Mega-Tutorial Part IV: Database 在Flask Mega-Tutorial系列的第四部分,我将告诉你如何使用数据库. 本章的主题是重中之重 ...
- 脚本语言丨Batch入门教程第四章:调用与传参
今天是Batch入门教程的最后一章内容:调用与传参.相信通过前面的学习,大家已经掌握了Windows Batch有关的基础知识和编程方法,以及利用Windows Batch建立初级的编程思维方式.今后 ...
随机推荐
- JavaScript_3_输出
1. JavaScript通常用于操作HTML元素,可以使用getElementById(id)方法. JavaScript由Web浏览器来执行. 2. document.write()仅仅向文档输出 ...
- HTML5新增的音频标签、视频标签
我们所说的H5就是我们所说的HTML5中新增的语言标准 一.音频标签 在HTML5当中有一个叫做audio的标签,可以直接引入一段音频资源放到我们的网页当中 格式: <audio autopla ...
- websocket+订阅发布者模式模拟实现股票价格实时刷新
1.新建文件夹 2.文件夹中新建index.html 和 index.js index.html <!DOCTYPE html> <html lang="en"& ...
- solver
slover中有type,用于优化算法的选择,有6种: Stochastic Gradient Descent (type: “SGD”), AdaDelta (type: “AdaDelta”), ...
- 正确适配苹果ATS审核要求的姿势
首先,ATS的技术行为不会有任何变化(除了新增两个字段NSAllowsArbitraryLoadsInWebContent和NSRequiresCertificateTransparency,也就是更 ...
- 利用SignalR实现实时聊天
2018/10/10:博主第一次写原创博文而且还是关于C#的(博主是从前端转过来的),菜鸟一枚,如果有什么写的不对,理解错误,还望各位轻喷.,从SignalR开始! 首先先介绍一下关于SignalR的 ...
- python生成四位随机数
有些时候需要发送短信给用户生成四位随机数字,这里在python中我们可以根据python自带的标准库random和string来实现. random下有三个可以随机取数的函数,分别是choice,ch ...
- java--String、StringBuilder、StringBuffer的解析和比较?
一.String的解析 1.String的含义 ①String是不可以被继承的,String类是final类,String类是由char[]数组来存储字符串. ②String是不可变的字符序列,如果存 ...
- centos 安装 python3 分类链接
上一篇文章描述了如何安装python3,但是在后续安装pip便不断报出缺少各类模块,安装一个又需要依赖另一个,导致安装过程非常繁琐.究其原因,我是安装centos-minimal版本,有许多功能不是完 ...
- destoon 屏蔽会员组,让个人,游客不显示
include/post.fun.php 文件的group_select函数增加 排除参数 except function group_select($name = 'groupid', $titl ...