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版)重要点及遗漏点(二)相关推荐

  1. java2实用教程知识点_Java2实用教程(第5版)重要点及遗漏点(三)

    4.6.2 类的关联关系和依赖关系的UML图 1.关联关系 A类中的成员变量是B类声明的对象,那么A和B的关系是关联关系 UML图是从A指向B方向实线箭头 2.依赖关系 A类中某个方法的参数是用B类声 ...

  2. 【秒懂】号称最为简明实用的Django上手教程

    https://www.cnblogs.com/baiboy/p/django1.html 阅读目录 1 几个基本概念 2 Django配置准备 3 Django基础配置安装   摘要:Django的 ...

  3. 黑马全新推出《2022年最实用的PS全套教程》

    康德曾经说过:自由不是想干什么就干什么,而是不想干什么就不干什么. 在当下这个社会,自由的前提是你必须足够强大.对于职场人来说,眼前的工作再好,你也永远要有自己的Plan B ,别等到哪天倒霉失业了, ...

  4. 最实用的深度学习教程 Practical Deep Learning For Coders (Kaggle 冠军 Jeremy Howard 亲授)

    Jeremy Howard 在业界可谓大名鼎鼎.他是大数据竞赛平台 Kaggle 的前主席和首席科学家.他本人还是 Kaggle 的冠军选手.他是美国奇点大学(Singularity Universi ...

  5. c语言程序设计5*5矩阵求出,实用C语言程序设计教程5数组和矩阵ppt221.ppt

    实用C语言程序设计教程5数组和矩阵ppt221 C语言程序设计 - 第5章 数组和矩阵 第5章 构造数据-- 数组和矩阵 本章教学目标 1.理解C语言中数组的本质及其在内存的存储结构 2.应用数组表示 ...

  6. 简明藏文文法和实用藏文文法教程笔记

    简明藏文文法 胡书津 一.格助词 传统藏文文法称之为'属于格位范畴的虚词'.P11 它是名词在句中扮演什么样角色的一种标志.P11 通过一定的语法形式(格标志)表示名词性词语在语言结构中同其他词语的种 ...

  7. 【秒懂】号称最为简明实用的Django上手教程(下)

    号称最为简明实用的Django上手教程(下) 作者:白宁超 2017年8月25日08:51:58 摘要:上文 号称[最为简明实用的Django上手教程]介绍了django基本概念.配置和相关操作.相信 ...

  8. 组态王图素制作_组态王教程很实用.doc

    组态王教程很实用 组态王简明教程组态王软件的结构 "组态王"是运行于Microsoft Windows 98/NT中文平台的全中文界面的组态软件,采用了多线程.COM组件等新技术, ...

  9. 用C语言编写从A到Z随机步法,实用C语言程序设计教程1C语言学习基础ppt71.ppt

    实用C语言程序设计教程1C语言学习基础ppt71 C语言程序设计 - 第1章 C语言学习基础 第1章 开篇 --C语言学习基础 --目标既不是精确的,也不是预先设定的,目标应是一般性的.生成性的,从而 ...

最新文章

  1. 实战SSM_O2O商铺_15【商铺注册】View层+Controller层之图片上传
  2. ART:分享收集的关于博物馆的视频纪录片,建议喜欢艺术人们的收藏
  3. tensorflow中张量、常量、变量、占位符
  4. 【开源项目】C++BASE64图像编解码算法
  5. 手写 instanceof 方法
  6. 浅谈JobExecutionContext JobDataMap
  7. 基于墨刀实现的原型系统:多啦阅读
  8. java tm插件下载_Java(TM) Platform SE binary
  9. 人民币金额大写转小写
  10. win10非核心版本的计算机上
  11. iOS关于破解ipa包
  12. oem是代工还是贴牌_OEM和ODM的区别 一、OEM是什么意思(代工、贴标) OEM全称Original Equipment Manufacturer,是指托厂商... - 雪球...
  13. test 4:假币问题
  14. windows10系统如何设置开机自启动
  15. CANOE使用三:不用diva也能自动化测试UDS(创建TestModule-搭配Panel界面及使用Capl识别配置文件TXT编写基于14229的UDS自动化测试流程)
  16. LeetCode笔记:Biweekly Contest 56(补发)
  17. 2022.12.29
  18. 一、Qt初尝试,做一个QT计算器《QT 入门到实战》
  19. jupyterlab下载遇到的问题及解决方案
  20. Lumerical Suite 2015a windows_linux光学设计软件

热门文章

  1. 面试:说说啥是一致性哈希算法?
  2. Spring Boot 2.3.0 新特性:优雅停机
  3. 什么?终止一个容器竟然用了 10 秒钟,这不能忍!
  4. json知识中的数据契约
  5. 人脸属性迁移学习笔记
  6. yolov5和yolov5-face nms比较
  7. yolov5 tensorrt
  8. 查看网页js数据接口
  9. mnn linux编译
  10. 表格检测开源网络推荐