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基础学习第三天的主要内容,如果未能解决你的问题,请参考以下文章