黑马程序员技术交流社区
标题:
java学长笔记
[打印本页]
作者:
MengDeKaiShi
时间:
2014-12-30 10:49
标题:
java学长笔记
一、函数
函数即在程序中定义的一个有特定功能的独立的小程序
(1)函数的声明
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...)
{
执行语句;
return 返回值类型;
}
修饰符:public static
返回值类型:这段程序最终返回结果的数据类型
函数名:函数的名称,方面调用
参数:
参数类型:就是数据类型
形式参数:接受实际参数的变量
实际参数:实际参与运算的变量
执行语句:功能代码
返回值:程序的结果
return:将程序的结果返回给调用该函数的地方
函数是平级的,不能嵌套定义,只能在函数中调用另一个函数
(2)return关键字
return单独存在,后面不能有语句,因为执行不到,所以会报错
函数是通过关键字return结束的。
return语句分两种:显示的结束,隐式的结束
当明确需要返回一个值的时候,需要显示的结束,"return 返回值;"
当不需要返回一个值的时候,可以不用写return,因为jvm默认会加上一句"return;"
(3)函数的重载(overload)
在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型对应 不相同。函数的重载与返回值类型无关,只看参数列表。
二、数组
数组是一个对象,是同一种数据类型的集合。数组即一个容器。
数组的优点:数组中的元素会自动从0开始编号,方便操作
数组用于封装数据,就是一个具体的实体。
数组中的每一个数据都是该数组的元素。
(1)声明方式
int x[ ]——定义一个数组名为x的数组
int[ ] x,y,z——这种方式是JAVA特有的,代表int[ ]后面出现的所有变量都是数组变量
(2)数组的创建
使用new创建数组,数组是一个对象。
元素类型[] 数组名 = new 元素类型[元素的个数];
元素类型[] 数组名= {元素1,元素2...};
元素类型[] 数组名= new 元素类型[]{元素1,元素2...};
数组的定义格式一:int[] arr=new int[5];
左边 int:数据类型
[ ]:表示这是一个数组
arr:数组的名字
右边 new:申请内存空间
int:数据类型
[ ]:表示这是一个数组
5 :数组的长度
数组的定义格式二:int[] arr=new int[]{1,2,3,4,5};
int[] arr={1,2,3,4,5};
(3)Java的内存划分
Java程序在运行时,需要在内存中分配空间。为了提高效率,就对空间进行了不同区 域的划分。不同的内存区都有特定的数据处理方式和内存管理方式。
JAVA对内存空间划分(五部分):栈,堆,方法区,本地方法区,寄存器
(1)栈内存:变量,或者方法执行时也要把方法放到栈里执行
存储的都是局部变量(只要在方法中定义的变量都是局部变量,定义在方 法中或者方法声明上的形式参数都叫局部变量)
一旦变量的生命周期结束,该变量就自动从内存中被释放
(2)堆内存:存储的都是数组和对象(凡是new创建的都在堆)
每一个new出来的实体都有地址值,以16进制形式显示
堆内存的变量都有默认的初始化值(整数:0;浮点数:0.0;字符型: '\u0000';布尔型:false)
当实体不在被使用时,在不确定的时间会被垃圾回收机制处理。
(3)方法区:方法,String常量池,静态区
(4)本地方法区:跟系统相关的方法
(5)寄存器:由CPU执行
int arr[]=new int[10];
System.out.println(arr);//输出数组的内存地址[I@4b09558d
System.out.println(arr[0]);//输出数组的第0个元素,结果为0
//[I@4b09558d,[表示该变量时一个数组,I表示int类型,@表示后面是该变量在 //内存中的地址(哈希值)
(4)数组常见异常
1. ArrayIndexOutOfBoundsException:数组脚标越界异常
2. NullPointerException:空指针异常(arr=null;然后调用arr时就会抛这个异常)
(5)二维数组
int[][] arr=new int[3][2];
3是二维数组长度,arr中有3个一维数组;2是一维数组长度,每个一维数组中有2 个元素
/*二维数组示例*/
int[][] arr=new int[3][2];
System.out.println(arr);//输出二维数组的地址
System.out.println(arr[0]);//输出第一个一维数组的地址值
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[0][0]);//输出第一个一维数组中第一个元素的值
System.out.println(arr[0][3]);//脚标越界
内存图:
二维数组定义格式:
格式一:int[][]arr=new int[3][3];
格式二:int[][]arr=new int[3][ ];
/*因为二维数组存的一维数组的地址,所以可以先不定义一维数组的长度,此时二维数组默认值为null;各一维数组的长度可以不相同,因为二维数组中放的是各一维数组的地址值*/
arr[0]=new int[0];
arr[0]=new int[1];
arr[0]=new int[2];
格式三:int[][] arr={{3,2},{2,1,4},{9,0,1,6}};
特殊写法情况:int[ ] x,y[ ];//x是一维数组,y是二维数组
/*二维数组遍历*/
int[][] arr={{1,2,3},{4,5},{6,7,8,9,0}};
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr[i].length;j++)
{
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
作者:
yedaiwang
时间:
2014-12-30 11:07
感谢分享哦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2