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());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值