java2实用教程_Java2实用教程(第5版)重要点及遗漏点(二)
3.2 语句概述
一个分好也是一条语句,称作空语句。
3.3.1 if语句
If(表达式)
If后面的一堆小括号()内的表达式的值必须是boolean类型
3.3.2 if-else语句
If-else(表达式)
If后面的一堆小括号()内的表达式的值必须是boolean类型
3.4 switch开关语句
Switch(表达式)
{
case 常量值1:
语句;
break;
case 常量值2:
语句;
break;
……
default:
语句;
}
表达式、常量值 的值可以是byte、short、int、char类型
3.7 for语句与数组
格式:for(声明循环变量:数组的名字){
……
}
// 循环变量依次取数组的每一个元素的值
4.2.1 类声明
1、类名的首字母使用大写字母
2、多个单词复合而成的类名,每个单词的首字母都应大写
4.2.3
变量名首字母使用小写,如果变量名字由多个单词组成,从第2个单词开始的其他单词的首字母使用大写
4.2.4 方法
成员变量、局部变量
1、在方法体中声明的变量和方法的参数被称作局部变量。
2、和类的成员变量不同的是,局部变量只在方法内有效,而且与其声明的位置有关。
3、如果方法中的局部变量的名字与成员变量的名字相同,那么方法就隐藏了成员变量,如果想在该方法中使用被隐藏的成员变量,必须使用关键字this。
4、成员变量有默认值,而局部变量没有默认值,所以必须初始化。
5、对成员变量的操作只能放在方法中进行
4.2.6 类的UML图
UML图属于结构图
第1层是名字层,如果类的名字是常规字形,表示该类是具体类
如果类的名字是斜体字形,表示该类是抽象类
第2层是变量层,也称属性层,列出类的成员变量及类型,格式“变量名字:类型”
第3层是方法层, 也称操作层,列出类中的方法,格式“方法名字(参数列表):类型”
4.3.2 创建对象
创建一个对象包括对象的声明和为对象分配变量两个步骤
1、 对象的声明
类的名字对象名字;
2、 为对象分配变量
使用new运算符和类的构造方法为声明的对象分配变量,即创建对象。
对象的内存模型
1、声明对象时的内存模型
XiyoujiRenwu zhubajie;
用类XiyoujiRenwu声明对象变量zhubajie后,zhubajie的内存中还没用任何数据,这时的zhubajie是一个空对象,空对象不能使用,必须为对象分配变量,即为对象分配实体。
2、为对象分配变量后的内存模型
new XiyoujiRenwu();
new运算符和构造方法做两件事情:
1、 为XiyoujiRenwu类的成员变量分配内存空间,然后执行构造方法中的语句。
如果成员变量在声明时没有指定初值,所使用的构造方法也没有对成员变量进行初始化操作,那么,对于整型的成员变量默认初值是0,对于浮点型默认初值是0.0,对于boolean型默认初值是false,对于引用型默认初值是null.
2、new运算符在为类的成员变量分配内存空间后,将计算出一个称为引用的值一个十六进制数(该值包含代表这些成员变量内存位置及相关的重要信息),即表达式new XiyoujiRenwu()是一个值。
3、new运算符为该对象分配变量
zhubajie = new XiyoujiRenwu();
1、 将这个引用值赋值给对象zhubajie,那么分配内存空间的这些类的成员变量将由zhubajie操作管理。
2、 这些分配内存空间的类的成员变量是属于对象zhubajie的实体。
3、 将引用赋值给zhubajie,zhubajie对象可以操作管理这些实体。
4、 分配了内存空间并计算出引用后,将引用赋值给对象,这个对象就拥有了被new运算符分配了内存的成员变量,即new运算符为该对象分配了变量。
注:对象的引用存在栈中,对象的实体(分配给对象的变量)存在堆中。
栈的优势是,存取速度比堆快。缺点是存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。
堆的优势是,可以动态分配内存大小,生存周期也不比事先告诉编译器,但存取速度慢。
3、创建多个不同的对象
一个类通过使用new运算符可以创建多个不同的对象,这些对象的变量将被分配不同存储空间。
4.3.4
1、避免使用空对象,即不能让一个空对象去调用方法产生行为,否则程序在运行时会出现异常NullPointerException。
2、垃圾回收机制
Java有所谓的“垃圾回收机制”,这种机制周期地检测某个实体是否已不再被任何对象所拥有,如果发现这样的实体,就释放实体占有的内存。
4.4 类与程序的基本结构
将应用程序涉及的java源文件保存在相同的目录中,尽管一个java源文件可以有多个类,但仍然建议一个java源文件中只编写一个类。
4.5.2 基本数据类型参数的传值
对于基本数据类的参数,向该参数传递的值的级别不可以高于该参数的级别
4.5.3
“传值”传递的是变量中存放的“引用”,而不是变量所引用的实体。
4.5.4 可变参数
Public void f(int … x) // x叫做方法f的参数列表中的可变参数的“参数代表”
{
}
在方法的参数列表中,可以声明多个相同类型的参数,不给出从某项开始,只给出最后一项参数的名字。
参数代表可以通过下标运算来表示参数列表中的具体参数。即x[0]、x[1]……x[m-1]
x.length等于x所代表的参数的个数
对于可变参数,java提供了增强的for语句,允许按如下方式使用for语句遍历参数列表所代表的参数:
for(声明循环变量:参数代表)
{
……
}
for(int param:x)
{
Sum=sum+param;
}
4.6对象的组合
一个类的成员变量可以是java允许的任何数据类型
一个类A可以把某个别的类B的对象作为自己的一个成员变量,那么类A产生的对象中将包含类B的对象,类A产生的对象将把类B产生的对象作为自己的组成部分,称为Has-A.
4.6.1组合与复用
两个类之间可以没有任何的继承、实现接口的关系,只需要把类B中的一个对象,写入到类A中,这个对象在类A中作为成员变量。同时在类A中写一个方法,方法的参数是类B对象
void setBottom(Circle c),这样就可以在声明实例化一个类B的对象后,将这个对象的引用通过调用类A中的引用传递方法,传递到类A中声明的类B对象上。这样就可以通过类A的对象操作使用类B的方法,这种操作就叫对象A以组合的方式复用对象B的方法。同时声明实例化的类B的对象可以重新实例化,但是不影响类A中的类B对象。
public class SIM{
long number;
SIM(long number){
This.number = number;
}
Long getNumber(){
Return number;
}
}
Public class MobileTelephone{
SIM sim;
Void setSIM(SIM card){
Sim = card;
}
Long lookNumber(){
Return sim.getNumber();
}
}
Public class Example4_9{
Public static void main(String args[])
SIM simOne = new SIM(13889776509L);
MobileTelephone mobile = new MobileTelephone();
Mobile.setSIM(simOne);
System.out.println(“手机号码:”+mobile.lookNumber()); //对象mobile以组合的方式复用对象SIM的getNumber()方法
SIM simTwo = new SIM(15967563567L);
Mobile.setSIM(simTwo); //更换SIM卡
System.out.println(“手机号码:”+moble.lookNumber());
}
}
java2实用教程_Java2实用教程(第5版)重要点及遗漏点(二)相关推荐
- java2实用教程知识点_Java2实用教程(第5版)重要点及遗漏点(三)
4.6.2 类的关联关系和依赖关系的UML图 1.关联关系 A类中的成员变量是B类声明的对象,那么A和B的关系是关联关系 UML图是从A指向B方向实线箭头 2.依赖关系 A类中某个方法的参数是用B类声 ...
- 【秒懂】号称最为简明实用的Django上手教程
https://www.cnblogs.com/baiboy/p/django1.html 阅读目录 1 几个基本概念 2 Django配置准备 3 Django基础配置安装 摘要:Django的 ...
- 黑马全新推出《2022年最实用的PS全套教程》
康德曾经说过:自由不是想干什么就干什么,而是不想干什么就不干什么. 在当下这个社会,自由的前提是你必须足够强大.对于职场人来说,眼前的工作再好,你也永远要有自己的Plan B ,别等到哪天倒霉失业了, ...
- 最实用的深度学习教程 Practical Deep Learning For Coders (Kaggle 冠军 Jeremy Howard 亲授)
Jeremy Howard 在业界可谓大名鼎鼎.他是大数据竞赛平台 Kaggle 的前主席和首席科学家.他本人还是 Kaggle 的冠军选手.他是美国奇点大学(Singularity Universi ...
- c语言程序设计5*5矩阵求出,实用C语言程序设计教程5数组和矩阵ppt221.ppt
实用C语言程序设计教程5数组和矩阵ppt221 C语言程序设计 - 第5章 数组和矩阵 第5章 构造数据-- 数组和矩阵 本章教学目标 1.理解C语言中数组的本质及其在内存的存储结构 2.应用数组表示 ...
- 简明藏文文法和实用藏文文法教程笔记
简明藏文文法 胡书津 一.格助词 传统藏文文法称之为'属于格位范畴的虚词'.P11 它是名词在句中扮演什么样角色的一种标志.P11 通过一定的语法形式(格标志)表示名词性词语在语言结构中同其他词语的种 ...
- 【秒懂】号称最为简明实用的Django上手教程(下)
号称最为简明实用的Django上手教程(下) 作者:白宁超 2017年8月25日08:51:58 摘要:上文 号称[最为简明实用的Django上手教程]介绍了django基本概念.配置和相关操作.相信 ...
- 组态王图素制作_组态王教程很实用.doc
组态王教程很实用 组态王简明教程组态王软件的结构 "组态王"是运行于Microsoft Windows 98/NT中文平台的全中文界面的组态软件,采用了多线程.COM组件等新技术, ...
- 用C语言编写从A到Z随机步法,实用C语言程序设计教程1C语言学习基础ppt71.ppt
实用C语言程序设计教程1C语言学习基础ppt71 C语言程序设计 - 第1章 C语言学习基础 第1章 开篇 --C语言学习基础 --目标既不是精确的,也不是预先设定的,目标应是一般性的.生成性的,从而 ...
最新文章
- 实战SSM_O2O商铺_15【商铺注册】View层+Controller层之图片上传
- ART:分享收集的关于博物馆的视频纪录片,建议喜欢艺术人们的收藏
- tensorflow中张量、常量、变量、占位符
- 【开源项目】C++BASE64图像编解码算法
- 手写 instanceof 方法
- 浅谈JobExecutionContext JobDataMap
- 基于墨刀实现的原型系统:多啦阅读
- java tm插件下载_Java(TM) Platform SE binary
- 人民币金额大写转小写
- win10非核心版本的计算机上
- iOS关于破解ipa包
- oem是代工还是贴牌_OEM和ODM的区别 一、OEM是什么意思(代工、贴标) OEM全称Original Equipment Manufacturer,是指托厂商... - 雪球...
- test 4:假币问题
- windows10系统如何设置开机自启动
- CANOE使用三:不用diva也能自动化测试UDS(创建TestModule-搭配Panel界面及使用Capl识别配置文件TXT编写基于14229的UDS自动化测试流程)
- LeetCode笔记:Biweekly Contest 56(补发)
- 2022.12.29
- 一、Qt初尝试,做一个QT计算器《QT 入门到实战》
- jupyterlab下载遇到的问题及解决方案
- Lumerical Suite 2015a windows_linux光学设计软件