Java语言基础(方法、数组、内存分析)

Java语言基础(方法、数组、内存分析)

第一部分:方法

1.1 方法定义

方法是一组为了实现特定功能的代码块的集合。方法在语法上的功能主要有以下两个:
①:结构化代码
将代码按照功能进行组织,使代码的结构比较清晰,容易阅读和修改,也就是程序的可维护性强。
②:减少代码重复
一个固定的功能,可能会在程序中多次使用,在使用时只需要调用写好的方法,而不用重复书写对应的功能代码。

方法在书写时需要注意以下两点:
①:逻辑严谨
方法实现的一个完整的功能,所以在书写时要考虑到各种可能的情况,并对每种情况做出恰当的处理。
②:通用性强(可重复利用)
方法实现的是一种功能,在实际实现时,可以根据需要,使方法具备一定的通用性,除非必要,否则不要写专用的方法。在Java 语言中,恰当的使用方法,将使程序更加优雅,便于阅读和使用。

1.2 方法的格式

[修饰符] 返回值类型方法名([参数类型 形式参数1,参数类型形式参数2,……])

{    

       执行语句;      [return返回值;]//需要的话

}

当函数没有具体的返回值时,返回的返回值类型用void关键字表示。

如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。

return的作用:结束函数。结束功能。

1.3方法特点

它可以实现独立的功能;

必须定义在类里面;

它只有被调用才会执行;

它可以被重复使用;

方法结束后方法里的对象失去引用;

 

如何定义一个功能,并通过方法体现出来:

① 明确该功能运算后的结果.明确返回值类型;

② 明确在实现该功能过程中是否有未知内容参与运算,确定参数列表;

package reviewDemo;
/**
 * player 的值分别是1,2,3或者其他值时,该方法返回“大明”,“二明”,“小明”,“我没有这个孩子”。
 */

public class Demo2 {
	public static void main(String[] args) {
		int player = 5;
		System.out.println("返回的结果是:"+show(player));
	}
	
	public static String show(int p){
		switch (p) {
		case 1:
			return "大明";	
		case 2:
			return "二明";	
		case 3:
			return "小明";
		default:
			return "我没有这个孩子!";
		}
	}
}

1.4方法重载(Overload)

概念:

       在同一个类中,允许存在一个以上的同名方法只要它们的参数个数或者参数类型或参数顺序不同即可

存在的原因:

       屏蔽了一个对象的同一类方法由于参数不同所造成的差异。

特点:

       与返回值类型无关,只看参数列表。

以下是方法重载的示例:(以下3个方法是不同的)
publicvoid person(int a){}

public intperson (){}

publicvoid person (int a,String s){}

class Chongzai 
{
	public static void main(String[] args) 
	{
		int ret = name(3,4,5);
		System.out.println(ret);
	}
	public static int name(int a, int b)
	{
		int c = a+b;
		return c;
	}
	public static int name(int a, int b, int m)//这就叫做方法的重载,只要参数列表不一样。好处:用户使用时限制很小;
	{
		int c = a+b+m;
		return c;
	}
}

2、数组的应用

2.1、数组的声明

用“[]”符号声明一个数组,声明的格式为:

数据类型 [] 数组名;

或 :数据类型 数组名[];

2.2、数组的赋值

(1)直接在声明时赋值:

声明数组时赋值有3种形式:

数据类型 [] 数组名 = {元素1,元素2,···};

或者:数据类型[] 数组名 = new 数据类型[数组长度];

或者:数据类型[] 数组名 = new 数据类型[]{元素1,元素2···};

(2)先声明后赋值:

数据类型[] 数组名;

数组名 = {元素,元素···};

或者:数据类型[] 数组名;

数组名= new 数据类型[数组长度];

数组名[0] = 元素1;

数组名[1] = 元素2;

......

或者:数据类型[] 数组名;

数组名 = new 数据类型[]{元素1,元素2};

注意:这种赋值方式new后面的[]内不可以写数组的长度,数组长度由元素个数而定。

2.2.1、数组的元素带有编号,我们通常称为数组角标,数组角标从0开始到数组长度减一,数组的编号方便对数组的单个元素进行操作,不可以对超出定义范围的角标进行操作,否则系统会发生异常。

2.2.2、数组有一个长度属性,可以调用“数组名.length”获取

代码展示如下:

 

//创建一个类,命名ArrayDemo(数值演示)
class  ArrayDemo
{
	//主函数
	public static void main(String[] args) 
	{
		//声明一个int型的数组的几种方式
		int[] arr = {1,2,3};
		int[] arr1 = new int[]{4,5,6,7};
		
		//下面两种是先声明后赋值
		int arr2[] = new int[2];
		arr2[0] = 9;
		arr2[1] = 10;
		
		int[] arr3;
		arr3 = {11,12,13};

		//定义打印语句,将数组中的数值打印到控制台
		//注意:直接打印打印的是数组的内存地址的哈希码值
		System.out.println(arr);
		//定义循环语句通过操作角标打印,通过数组的length长度属性限定循环条件
		for (int x =0;x<arr.length ;x++ )
		{
			System.out.println(arr[x]);
		}
	}
}

2.5根据数组的这些属性,可以对数组内的元素进行排序和查找数组内特定元素的操作

(1)数组元素的查找

顺序查找:按数组角标顺序查找

折半查找:每次查找排除上一次查找的一半的数据,这种查找比顺序查找快,但需要数组元素的排列是有序

3、数组的工具类Array

3.1数组工具类是专门用于对数组进行操作的工具类,里面封装了一些对数组进行复制、查找、排序等静态方法。

3.2Arrays方法

sort:对数组元素进行排序

equals:比较数组

binarySearch:折半查找

copyOf:复制数组

copyOfRange:指定范围复制数组

fill:将数组中指定范围的元素替换成同一个指定元素

equals:比较数组

toString:返回数组的字符串表示形式

toString:如果数组中的元素都是对象,那么将元素转到集合中,如果数组中的元素是基本数据类型,那么将数组转成集合中的一个对象

/*
需求:数组工具类
*/

//使用工具类需要在Java类库中导入该工具类
import java.util.Arrays;

//创建一个类,命名Arrayss
class  ArraysDemo
{
	//主函数
	public static void main(String[] args)
	{
		//声明一个个数组
		int[]arr = {2,3,1,5,4,6,9};

		//使用数组工具类中的toString方法获得数组的字符串形式
		String arrStr = Arrays.toString(arr);
		//打印数组元素
		System.out.println(arrStr);

		//用数组工具类中的Sort方法排序
		Arrays.sort(arr);

		//排序后打印元素
		arrStr = Arrays.toString(arr);
		System.out.println(arrStr);

		//使用fill方法替换元素
		Arrays.fill(arr,8);
		System.out.println(Arrays.toString(arr));
	}
}

第三部分:内存分析

1、java内存结构

组成结构:栈内存、堆内存、方法区、本地方法区、寄存器

三个个需要重点关注的内存区:

栈内存:方法和局部变量存放的地方,分层,每层的方法独立串行运行,数据使用完,空间自动释放

堆内存:大致分为老生代、新生代和持久层,是存放对象的地方,数组和对象通过new关键字在堆内存中建立存放空间,每个对象实体都有内存地址值,实体中的变量都有默认初始化值,实体不再被引用,内存会在不确定的时间内被垃圾回收器回收。

方法区:存放静态数据、常量、字节码文件对象的区域。

2、内存操作原理

java虚拟机通过调用方法实现程序的运行,被调用的方法存放在栈内存中,每一个方法在栈内存中都有一个独立的栈帧,在方法中需要创建对象时,虚拟机会在堆内存中为对象开辟一块内存空间,将该内存的地址值引用给创建对象的方法,方法运行完毕内存会被释放用于重新加载数据。


3、垃圾回收机制

内存垃圾,即一些被创建的数据使用完后就不会在被使用了,但该数据依然占据着内存空间。java语言有很完善的内存管理机制,程序运行时JVM会不定时的启动垃圾回收机制对JVM运行时产生的不再被使用却占据着内存空间的数据进行清除,JVM使用的是混合的垃圾回收算法,在不同的情况下采用不同的算法对内存垃圾进行管理,垃圾回收算法有:标记垃圾回收、分代垃圾回收和增量垃圾回收。这使得java程序员可以不必耗费大量的时间和精力对内存进行管理,可以投入更多的精力在算法的优化上,当然java还会存在内存溢出的现象,这些将在深入学习后深入分析。

本章总结:

1)、方法是一段可重复使用的代码段,程序中完成独立功能的一段代码的集合

2)、方法重载,方法名相同,但是参数列表不一致!(和方法覆写不一样,方法覆写的方法名和参数列表都必须一样),注意方法重载和方法覆写的不同!

3)、在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型或参数顺序不同即可。

4)、数组是利用new关键字用来实现为数组或对象分配内存 (堆内存

5)、数组的初始化=定义数组+分配空间+赋值



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值