一、方法的可变个数的参数
//打印的信息大部分源于形参传递的信息
//现在需要传递不同个数的参数,假设不知道给方法多少个参数
//此时需要建立 可变参数
1、通过数组
新建类Person3,然后
然后在测试类的main方法中
对上图留一个疑问:字符串数组是否new,有什么区别?
2、通过java特有的…的方式来传递可变个数的参数
在类Person3中,编写方法
注意:
- 如果有多个形参,可变形参(…)一定要放在最后
*如: public void pringInfo1(int a, String… args)正确,
反过来错误
然后在测试类的main方法中操作,如下一图。
如果方法为int型,那么下图的字符串就要改为数字。
下图第一行是 . . . 的方式,后面是遵从数组的方式,共两种输出。
二、方法的参数传递
(调用方法时形参与实参的数值传递)
在JVM内存中:
1、 int i = 1;
值保存在栈中,假设地址为 AG84100;
2、Person p = new Person();
引用对象时,
值保存在堆中,假设地址为 BE95000;
其地址又保存在堆中,假设地址为 AG84300.
(在堆 BE95000(假设的地址)存 new Person() 这个对象,
在栈 AG84300(假设的地址)存 p 的数据 BE95000 ,
指向堆中的地址)
如下一图:
1、基本数据类型的传递
尝试判断下一图中 a 与 i 的值:
2、引用对象时的参数传递
首先新建类DataSwap
然后建立类Test7(这里就用到了笔记05提及的匿名对象)
运行结果:
调用swap方法前,ds.a的值:0
在swap方法中,ds1.a的值:6
调用swap方法后,ds.a的值:6
原理讲解如下一图:
注意笔记05的这张截图
这里 new 了两个对象,在堆内存中开了两个区域,所以互不影响。
总结如下一图:
三、package & import
1、package(包)与文件夹的概念相同
(多个package共存,package还可以存放 类 和 package)
在package中新建package时,用 . 指明层次
通过右键来新建package
具体如下一图:
Test1.java文件中首行出现下一图这段代码,其余不变
将某个类移动到另一个包中:
右键这个类 - Refactor - Move
2、import
在某个类中要调用其他包的类
(1)在最前面使用import
在下图中,packet pack01 是将类移到包中自动生成
第二行 . + 类:提取包 greenhand 下的类 Test1 ;
第二行 . + * :提取greenhand 下的所有文件。
(2)不使用import
在类名前添加包名即可,如下(第一行改为第二行):
四、封装与隐藏
假设有以下情况:开发者要输入年龄,会不小心输入为负数。
所以年龄这个属性不能由开发者随意使用,需要封装与隐藏。
此时就需要在类中进行两个步骤,如下一图:
类程序如下一图:
写完后就可以在main方法中调用了。
五、访问权限修饰符
4种访问权限修饰符
1、
private int a;
private void getAge(){ };
只允许在本类内部使用。
2、缺省,即啥也不写
int a;
void getAge(){ };
允许在本类内部使用,允许在同一个包下的类中使用。
3、
protected int a;
protected void getAge(){ };
允许在本类内部使用,允许在同一个包下的类中使用,允许在子类中使用。
何为子类(子类可以出现在另一个包中):
使用关键字 extends 修饰的类,PersonChild 就是 Person 的子类
格式如下一图:
4、
public int a;
public void getAge(){ };
允许在本类内部使用,允许在同一个包下的类中使用,允许在子类中使用,也允许在其他任何地方使用。
再来解释对类的访问修饰符,如下一图:
实际操作如下一图:
Person 在任意地方可以被访问;
P0 只能被同一个包下的类访问。
六、类的构造方法
提问:Person p = new Person();
在使用 new 时,同时也使用了构造方法。
下面对这张图进行解释:
1、隐式无参构造器不显示
比如下方这段代码:
在两个类中的就是隐式无参构造器,这里改用显示便于观察,实际上看不到
2、显式构造方法
代码如下二图:
无参:
在 main 方法中:
有参:
在 main 方法中:
执行结果:
1
lucy
这里使用显式构造方法体现在:在 new 对象时就初始化了属性,而不是在 mian 方法中初始化属性。
七、构造方法的重载
重载的概念之前已经提过,方法名称一样,形参个数或类型不同构成重载。
练习如下二图:
在 main 方法中:
构造方法重载的意义:
八、关键词 this
this的用法使用如下图解:
创建一个类 Person3
九、javabean
建立方式:
1、手打get与set方法
2、建立成员属性后
右键 - Source - Generate Getters and Setters