java基础学习第三天

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础学习第三天相关的知识,希望对你有一定的参考价值。

数组

----------------------------------------

1.容器,相同类型

2.通过下标,以0为基址

3.定义数组

类型[] 名称 = new 类型 [元素个数或数组长度];

int [] arr = new int[5]

类型[] 名称 = new 类型 []{元数,元素,元素,....};直接进行了初始化

4.

5.

6.

7.使用数组时,不要空、不要越界


堆:heap  

----------------------

Object head,对象堆


栈:stack

------------------------

方法栈.对应线程,至少有一个主线程

第一个进栈的就是main函数,再调用函数就压在了main函数上,这就叫压栈,压着的每一个框叫方法针(method frame).


先进后出,push stack:压栈,pop stack:弹栈


java没有指针是没有显示的指针操作。引用就是指针。


内存结构:

-----------------------------

java程序运行时,需在内存中分配空间,

1.栈内存:

用于存局部变量,当使用完,所占空间会自动释放


2.堆内存:

数组和对象,通过new建立的实例都放在堆内存中。

每一个实体都有内存地址值

实体中的变量都有默认初始化值

实体不在被使用时,会在不确定的时间内被垃圾回收器回收




数组操作常见问题

-----------------------------------

1.数组脚标越界异常(ArrayIndexOutOfBoundsException)

int[] arr = new int[2];

System.out.println(arr[3]);

访问到了数组中的不存在的脚标时发生

2.空指针异常(NullPointerException)

int[] arr = null;

System.out.println(arr[0]);

arr引用没有指向实体,却在操作实体中的元素时报错。

编译不报错,运行时报错,叫运行异常(RuntimeException)


示例:

取一个数组中最大值

------------------------------------------------

/*

判断数组中的最大值

定义一个方法,将一个数组传入方法中,判断最大值。

要求方法要有健壮性,可检测空值及长度为0的数组

*/



class  ArrayMax

{

public static void main(String[] x) 

{

System.out.println(getMax ( new int[0]));

}


//定义方法

public static int getMax(int[] arr)

{

if (arr == null || arr.length == 0)   //判断传来的数值是否为空值 ||(或或)数组长度为0 

{

System.out.println("数组不存在");  //满足条件说明传来的数组错误,打印错误提示信息

return 0 ;

}

int temp = Integer.MIN_VALUE ;  //将一个整型值赋值给临时变量,Integer.MIN_VALUE 是整型的一个类,表示最小值

for (int i = 0 ; i < arr.length  ; i ++ ) //定义变量作为数组下脚标使用,根据数组长度(arr.length)来判断循环次数,数组下脚标记数从0开始。

{

if (temp < arr[i])    //判断临时变量中的值与第i个数组元素比较,

{

temp = arr[i];   //如果小于就将数组原素中的值赋值给临时变量temp

}

}

return temp ;

}

}

---------------------------------------------------

示例2 

排序

1.选择排序

---------------------------------

/*

对数组排序

定义一个方法,将一个数组传入方法中,进行排序。

要求方法要有健壮性,可检测空值及长度为0的数组

*/



class  ArraySelectSort

{

public static void main(String[] x) 

{

outArr(sort(new int[] {9,1,4,3,5,11,54,22}));

}


//定义方法

public static int[] sort(int[] arr)

{

if (arr == null || arr.length == 0)   //判断传来的数值是否为空值 ||(或或)数组长度为0 

{

System.out.println("数组不存在");  //满足条件说明传来的数组错误,打印错误提示信息

}

//迭代数组的每个元素

for (int i = 0 ; i < arr.length  ; i ++ ) //定义变量作为数组下脚标使用,根据数组长度(arr.length)来判断循环次数,数组下脚标记数从0开始。

{

//定义最小值

int min = Integer.MAX_VALUE;

int index = 0 ;


//查找最小值及最小值对应的下标

for (int j = i + 1 ; j < arr.length  ; j ++ )

{

if (min > arr[j])

{

min = arr[j] ;

index = j ;

System.out.println(min);

}

}


//完成当前元素和后续数组中最小的元素的对调

int xx = 0 ;

if (arr[i] > min)

{

arr[index]  =  arr[i] ;

arr[i] = min ;

}

}

return arr ;

}


//定义打印 根据下标序号循环输出数组的每个元素

public static void outArr(int[] arr)

{

for (int i = 0 ; i < arr.length ; i ++ )

{

System.out.print(arr[i] + "  ");

}

}

}



----------------------------------

3.冒泡排序





本文出自 “艾德尔” 博客,请务必保留此出处http://adairh.blog.51cto.com/9436392/1847038

以上是关于java基础学习第三天的主要内容,如果未能解决你的问题,请参考以下文章

java学习--基础知识进阶第三天--笔记

java学习--基础知识进阶第三天--接口多态

python基础学习第三天

Python 3 学习的第三天——Python基础

Python学习第三天----Linux基础命令

记录学习第三天---系统基础