JAVA零基础学习笔记06

本文详细介绍了Java编程中可变参数的实现方式,包括通过数组和`...`语法,并探讨了方法参数传递的原理,特别是基本类型和引用对象的区别。此外,讲解了封装的概念,如何隐藏类的属性以及访问权限修饰符的作用。还讨论了构造方法的使用,包括隐式和显式构造器,以及构造方法的重载。同时,提到了`this`关键字的使用,并简述了JavaBean的创建。最后,强调了类的访问权限修饰符对类和成员的可见性影响。
摘要由CSDN通过智能技术生成

一、方法的可变个数的参数
//打印的信息大部分源于形参传递的信息
//现在需要传递不同个数的参数,假设不知道给方法多少个参数
//此时需要建立 可变参数
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
下面对这张图进行解释:
1、隐式无参构造器不显示
比如下方这段代码:
在两个类中的就是隐式无参构造器,这里改用显示便于观察,实际上看不到
在这里插入图片描述
2、显式构造方法
代码如下二图:
无参:
在这里插入图片描述
在 main 方法中:
在这里插入图片描述
有参:
在这里插入图片描述
在 main 方法中:
在这里插入图片描述

执行结果:
1
lucy

这里使用显式构造方法体现在:在 new 对象时就初始化了属性,而不是在 mian 方法中初始化属性。

七、构造方法的重载
重载的概念之前已经提过,方法名称一样,形参个数或类型不同构成重载。
练习如下二图:
在这里插入图片描述
在 main 方法中:
在这里插入图片描述
构造方法重载的意义:
在这里插入图片描述

八、关键词 this
this的用法使用如下图解:
创建一个类 Person3
在这里插入图片描述

在这里插入图片描述

九、javabean
在这里插入图片描述
建立方式:
1、手打get与set方法
2、建立成员属性后
右键 - Source - Generate Getters and Setters

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值