函数
从返回值类型上来区分: 无返回值 修饰符 void 方法名称(){} 有返回值 修饰符 返回值类型 方法名称(){ return 返回值类型 } 从参数上来区分: 无参数 修饰符 void/返回值类型 方法名称(){} 有参数 修饰符 void/返回值类型 方法名称(参数列表){} 函数重载特性: 在一个类中,如果出现方法名称相同,参数个数不同或者参数类型不同的情况就叫做重载。记住重载只看参数个数和参数类型,与返回值无关,与修饰符无关。 复制代码
数组
数组可以看成是一个容器,容器是用来存放数据的。数组是存放同一类型的数据的容器。 注意:数组的长度是不可变的 格式: 类型[] 数组名称 =new 类型[指定长度] ; 类型[] 数组名称 =new 类型[]{值1,值2,值3.....}; 类型[] 数组名称 ={值1,值2....}; 数组是长度固定的有连续性的存储数据的容器,它们都会有下标,可以通过下标来找到对应的值。 Java种的内存分配: jvm把Java代码分为了5快区域,这样可以方便jvm去管理我们的Java代码。 1.栈空间(stack):存储在类或者方法中定义的局部变量 (作用域范围小,用完就销毁) 2.堆空间(heap):凡是new的对象 都存放在此空间中,此空间 会分配一个内存地址。 3.方法区(method area):存放与class相关的属性和值。 4.本地方法栈(Native Method Stack):与操作系统相关 5.寄存区(pc Register):与cpu相关。 复制代码
基本数据类型和引用数据类型
在Java中类型分为了2大块,一块是基本数据类型 (八大)除了基本数据类型以外的所有的类型都叫做引用数据类型。 基本数据类型在初始化的时候如果没有赋值他们都有默认值 整数型:byte short int long 默认值0 浮点型:float double 默认值0.0 布尔类型:boolean 默认值为flase 字符类型:char 默认值: '\u0000' 空格; 引用数据类型在初始化的时候如果没有赋值的话,他们的默认值都是null 复制代码
数组的api
创建: 1.动态初始化:初始化的时候,没有给数组的内容赋值 /*** * 动态初始化:初始化的时候没有给它赋值,程序员可以动态的给它赋值。 */ public class initone { public static void main(String[] args) { int[] arr =new int[10]; arr[0]=10; arr[2]=15; } } 2.静态初始化:初始化的时候,直接给数组的内容赋值 /*** * 初始化的时候直接赋值 */ public class inittwo { public static void main(String[] args) { int[] arr =new int[]{1,5,10}; } } 赋值: 数组名[下标]=xxx; 获取长度: 数组提供了一个length属性来供我们获取它的长度 System.out.println(arr.length); 获取元素: System.out.println(arr[1]); 遍历元素: /*** * 原始for循环 */ int[] arr =new int[]{1,10,8,15,22}; for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); } /*** * 增强for */ for(int i:arr){ System.out.println(i); } 复制代码
异常:异常是指在程序允许过程中出现的错误,一般情况异常分为两种,一种是编译的时候就能查找出来的异常,另外一种是必须执行的时候才会出现的异常,所以说异常一般分为编译时异常和运行时异常。
在数组中常见的异常: 1.角标越界异常:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 2.空指针异常:Exception in thread "main" java.lang.NullPointerException 复制代码
数组排序:
冒泡排序: package com.ly.array; /** * 冒牌排序 */ public class maopaosort { public static void main(String[] args) { int[] arr =new int[]{10,2,5,8,1,22}; for(int x=0;x<arr.length;x++){ for(int y=0;y<arr.length-1-x;y++){ int temp=0; if(arr[y]>arr[y+1]){ temp=arr[y]; arr[y]=arr[y+1]; arr[y+1]=temp; } } } for(int i:arr){ System.out.print(i+"\t"); } } } 选择排序: public static void main(String[] args) { int[] arr =new int[]{10,2,8,19,5,7,3}; for(int i=0;i<arr.length-1;i++){ /*** * i=0 y=1 y=2 y=3 y=4 y=5 y=6 * i=1 y=2 y=3 y=4 y=5 y=6 * i=2 y=3 y=4 y=5 y=6 * i=3 y=4 y=5 y=6 * i=4 y=5 y=6; * i=5 y=6 */ for(int y=i+1;y<arr.length;y++){ int temp=0; /*** * 下标0和下标1 去比 最大值赋值给1 最小值0 * 下标0和下标2 去比 最大值赋值给2 最小值0 * 下标0 和下标3去比 最大值赋值给3 最小值0 * * .... * 下标0 和下标6去比较 * 下标1 和下标2 去比较 * 下标1 和下标3去比较 * 下标1 和下标4去标胶 * ...下标1和下标6去比较 */ if(arr[i]>arr[y]){ temp=arr[i]; arr[i]=arr[y]; arr[y]=temp; } } } for(int x:arr){ System.out.print(x+"\t"); } } jdk还给我们提供了一个帮助类,来供我们快速的排序,这个帮助类就是Arrays,排序的方法就是sort(); public static void main(String[] args) { int[] arr =new int[]{18,6,2,15,3}; //排序 Arrays.sort(arr); /** * 升序 */ for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); } System.out.println("--------------------------------"); /*** * 降序 */ for(int i=arr.length-1;i>=0;i--){ System.out.println(arr[i]); } } 复制代码
二维数组:二维数组就是数组里面村的内容还是数组,这种数据就是二维数组。
二维数组的初始化: 动态的初始化: int[][] arr =new int[2][3]; int[] ar1 =new int[]{1,3,5}; int[] ar2 =new int[]{2,6,9}; arr[0]=ar1;jaca arr[1]=ar2; 静态的初始化: int[][] arr=new int[][]{{1,3,5},{2,6,9}}; 获取: 首先通过外围数组的下标获取到内维数组,然后在通过内维数组的下标找到具体的值; arr[0][2]; 遍历二维数组: