自学内容网 自学内容网

Java--第四节--方法重载-构造-二维数组-面向对象

一、方法

类加载的时候,会把所以Static资源全部【加载】到虚拟机里;
static A 方法(静态方法):同一个类下----->A();  不同类下----->类名.A();      或者    对象名.A();
A 方法(普通方法):后续更新
静态方法/变量/代码块:A.提前加载 B.归类所用有【谁拥有,谁调用】
非静态方法/变量/代码块:A.现用现加载 B.归类 下的某一个具体对象所拥有【谁拥有,谁调用】

1.方法的重载

a.定义:【同一个类下】,【方法名相同】,【参数列表不同(数量不同,类型不同,位置不同)】
【与方法名 修饰符 参数名 无关】的【两个或者两个以上】的方法叫重载。

b.学习重载的原因?重载的好处
1.方法定义的时候:相同功能,方法名相同;使用重载方法后,开发者不用再绞尽脑汁起方法名
2.方法调用的时候:程序/计算机 会自动根据调用者传入的参数列表,执行对相应的方法(不需要开发者选择,节省开发时间)
c.可变参数 :为了看懂别人的代码,开发时候不推荐使用(用数组或者集合来平替)
                      为什么要学习可变参数?---->为了解决一部分方法重载的问题

 可变参数实例:

public int sum(int...nums){
//使用的时候把可变参当成一个数组 可以直接使用数组或者集合
int sum=0;
for(int i =0;i<nums.length;i++){
sum+=nums[i];
}
sout(nums.length+"个数相加")
return sum;
}

d.注意:可变参数和其他数据一起作为形参的时候,可变参数一定要放在最后

二、补充:形参与实参

1.形参:用于 接收/调用 函数时传递实际参数值

public void add(int a, int b) {
// a 和 b 是形参
}

2.实参:调用函数时传递的具体值

add(3, 4); // 3 和 4 是实参

三、Arrays工具类===方法操作数组

int[] nums={12,6,93,77,53,84,13};
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
System.out.println(Arrays.binarySearch(nums,77));

四、二维数组

1.一维数组:int[] nums={11,23,345,5676,99};
直接存储元素的数组,叫一维数组
2.二维数组:int[][] nums={{11,23,345},{5676,99},{},{},{}};
存储数组的数组,就叫二维数组!


//1.怎么存?
//声明二维数组
int[][] array;
//动态初始化
array = new int[3][4];
//静态初始化
// 创建一个 3 行 4 列的二维数组
int[][] array = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
//2.怎么取?
//访问单个元素
int element = array[0][1];
System.out.println("Element at [0][1]: " + element);
//遍历二维数组
for (int i = 0; i < array.length; i++) { // 遍历行
for (int j = 0; j < array[i].length; j++) { // 遍历列
System.out.print(array[i][j] + " ");
}
System.out.println();
}


五、面向对象思维:利于团队合作:项目后期修改,维护成本比较低!

a.面向过程---->面向对象

执行者: 面向过程 要干什么怎么干 (维护成本高)
领 导: 面向对象 (谁?拥有什么样的方法,能干什么活)
===>宏观上是使用面向对象,微观上还是面向过程

b.使用“面向对象”思维,开发程序的步骤

【创建/定义 类】

第一步:确定程序当中的参与者:
第二步:确定参与者应该具备的【属性】:
第三步:确定参与者应该具备的【行为(方法)】:

【使用类】

第四步: 类名 对象名=new 类名();
对象名.属性=值;
对象名.方法();

六、类和对象的关系

类是抽象的,类似一个模板,类是定规则的。

对象是具体的,真实存在的,对象是来遵守规则的。
====>一个类可以有很多个对象
类名 对象名=new 类名();

七 、局部变量和成员变量的区别

1.声明变量的位置不同:
局部变量:在方法里声明的就是局部变量
成员变量:在方法外声明的就是成员变量
2.作用域范围不一样:
局部变量: 从声明变量的那行开始到包裹的大括号结束。
成员变量:本类下任何一个位置都可以,其他类下,创建对象,对象,成员变量
3.生命周期不一样:
局部变量:从声明变量,到方法执行完
成员变量:从new对象开始,-----1.项目关闭2.垃圾回收
4.默认值不一样:
局部变量:没有默认值,开发者必须赋值才可以使用
成员变量:程序会给一个 默认值
String---null(空地址) int----0;double-----0.0;boolean----false
5.初始化不一样:局部变量必须初始化;全局变量系统帮忙初始化
6.局部变量的优先级高:
局部变量和成员变量同名了,局部变量的优先级高,近水楼台先得月

八、构造方法

1.特点

a.方法名跟类名相同 一模一样
b.方法 没有返回值
c.开发者如果不创建,程序会自动帮忙创建一个公有的无参,方法体为空的 构造方法
d.   .     普通方法();
     new 构造方法():

2.构造方法作用/好处

a.实例化 : 创建一个对象 (没有构造方法就不能创建对象)
b.初始化 : 为对象的属性赋初始值(第一个值)

3.构造方法运行原理

①如果我们没有手动创建构造方法, 那么程序会自动帮忙创建一个public ,无参的,方法体为空的构造方法。
②如果我们手动创建了构造方法,那么程序将不会在提供构造方法了。
③如果开发者还想使用 public ,无参的,方法体为空的构造方法 ,只能自己创建了。

九 、封装

1.“面向对象”思想(面向对象思维的三大特征): 封装 继承 多态 | 反射
什么是封装?   ---->用public 的赋值,取值方法,间接访问private属性
为什么要封装?---->限制输入条件,增加安全性

十、包

分类的存储文件;区分同名文件;不存在 不在包里的文件

1.创建包

设置包名:

1.包名必须全小写;

2.通过 .符号 表示包的包含关系;

3.包名一般是域名倒置,加上模块名;

4.包名 不要使用系统关键字:nul,con,com1--com9

2.声明包: package com.jr.demo4.student;

                      ----指定当前资源所在的包的位置

3.导入包: import java.util.Scanner;

静态导入【了解】: import static java.lang.Math.*;
                        ----适用用在,某一类下,所有资源都是static

十一、 代码块(了解)

1.作用:缩小/限定 变量的作用域范围。

2.代码块的分类:

普通代码块(在方法里),
构造代码块(在方法外,做初始化的逻辑处理),
静态代码块(在方法外, 对静态资源做逻辑处理),
同步代码块(重点)===多线程的时候,讲!


原文地址:https://blog.csdn.net/PangQinghua/article/details/142990651

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!