数组基本知识
【摘要】 函数从返回值类型上来区分:无返回值 修饰符 void 方法名称(){}有返回值 修饰符 返回值类型 方法名称(){ return 返回值类型 }从参数上来区分:无参数 修饰符 void/返回值类型 方法名称(){}有参数 修饰符 void/返回值类型 方法名称(参数列表){}函数重载特性:在一个类中,如果出现方法名称相同,参数个数不同或者参数类型不同的情况就...
函数
从返回值类型上来区分:
- 无返回值 修饰符 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];
遍历二维数组:
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)