数组的遍历(将数组中的元素一一输出出来):
1)首先自定义数组
int[] arr = {11 , 22 , 33 , 44 , 55}
2)数组中的属性:length
数组中的最大索引值:arr.length-1
class Demo{
public static void main(String[] args){
//自定义数组
int[] arr = {11 , 22 , 33 , 44 , 55 }
//将数组中的元素一一打印出,数组名称[角标]
System.out.println(arr[ 0 ]) ;
System.out.println(arr[ 1 ]) ;
System.out.println(arr[ 2]) ;
System.out.println(arr[ 3]) ;
System.out.println(arr[ 4]) ;;
}
//上方法过于臃肿(代码重复度高)
for(int x = 0 ; x<arr.length ; x++){
System.out.println(arr[x]);
}
//使用方法进行数组遍历
printArray(arr);
System.out.println(" ");
/*两个明确
1.明确返回值类型:void
2.明确参数个数以及类型:1个,int[] arr;
public static voidprintArray(int[] arr){
for(int x = 0;x<arr.length;x++){
System.out.print(arr[x]);
}
}
}
数组元素逆序:
特点:
将0索引对应的元素和arr.length-1索引对应的元素进行互换
将1索引对应的元素和arr.length-1-1索引对应的元素进行互换
…
只要做到arr.length/2
class Demo{
public static void main(String[] args){
//自定义数组
int[] arr = {77,32,43,54,65};
System.out.println("逆序前");
printArray(arr);
}
//借助中间变量
public static void printArry(int[] arr){
for(int strat = 0,end = arr.length-1;start<=end;start++,end--){
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
//改进:
public static void printArray(int[] arr){
for(int y= 0;y<=arr.length/2;y++){
int temp = arr[y];
arr[y] = arr[arr.length-1-y];
arr[arr.length-1-y]=temp;
}
}
}
查询元素
查询元素在当前数组中的索引值
数组的基本查找:从头查到尾(数组元素无序)
class ArrayDemo5{
public static void main(String[] args){
//给定一个数组
int[] arr = {330,250,888,25,15} ;
//查询250这个元素在数组中第一次出现的索引,使用方法改进
int index = getIndex(arr,250) ;
//两个明确
//明确返回值类型:int
//明确参数类型:2个参数,当前数组,以及当前要查找的元素
public static int getIndex(int[] arr,int value) {
//遍历数组,获取数组中的每个元素
for(int x = 0 ; x < arr.length ; x ++){
//判断如果当前arr[x和value值相等,就返回当前x角标
if(arr[x] ==value){
return x ;
}
}
//考虑到查不到情况,
return -1 ;
} //(缺少return-1)报错:编译不通过:缺少返回语句
/*
只要是判断,就存在flase的情况 ,如果用户输入了一个数据,这个数据在数组中不存在.
*/
键盘录入对象类型不同的区别
Scanner类
接收int类型 nextInt();
接收String类型 nextLine() ;
import java.util.Scanner ;
class ScannerDemo{
public static void main(String[] args){
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//输入两个int类型的数据,并且将值打印
//int a = sc.nextInt() ;
//int b = sc.nextInt();
//System.out.println("a:"+a) ;
//System.out.println("b:"+b) ;
//System.out.println("---------------") ;
输入两个String类型的数据,并且将值打印
//String s1 = sc.nextLine() ; " "
//String s2 = sc.nextLine() ;
//System.out.println("s1:"+s1) ;
//System.out.println("s2:"+s2) ;
//先录入一个int类型,再录入String类型
int a = sc.nextInt() ;
//在创建一个键盘录入对象
Scanner sc2 = new Scanner(System.in) ;
String b = sc2.nextLine();
System.out.println("a:"+a) ;
System.out.println("b:"+b) ;
}
}
二维数组
二位数组:
由多个一维数组组成的数组.
定义二维数组的格式:
数据类型[][] 数组名称 ;
数据类型[] 数组名称[] ;
初始化:
动态初始化: 系统默认给定当前数组元素值...
格式1:
数据类型[][] 数组名称 = new 数据类型[m][n] ;
举例:
int[][] arr = new int[3][2] ;
左边:
int[][] :定义了一个int类型的二维数组
arr:数组的名称
右边:
new :在堆内存中开辟空间
[3]:当前二维数组中有3个一维数组
[2]:每一个维数组中有2个元素
注意事项: 当前变量前面限定,是什么?一维数组,二维数组...
int x,y ;
int[] x,y;
int[] x,y[] ;
...
静态初始化
格式:
数据类型[][] 数组名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
举例:
int[] arr[] = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
简化版格式:
数据类型[][] 数组名 = {{元素1,,,},{元素1,,,},{元素1,,,}} ;
int[] arr[] = {{1,2,3},{4,5,6},{7,8,9}};
无论一维数组还是二维数组,定义数组的时候,不能动静结合
int[] arr = new int[3]{1,2,3} ; 错误的
数组中的最值的问题
return max ,min ; //错误的
冒泡排序
实现冒泡排序代码:
思路:
两个两个比较,大的值往后放,第一次比较完之后,最大值出现在最大索引处;依次这样比较,可以得到一个排好序的数组!
class BubbleSort{
public static void main(String[] args){
//自定义一个数组:
int[] arr = {24,69,87,53,13} ;
//排序前
System.out.println("排序前: ") ;
printArray(arr) ;
for(int x = 0 ; x <arr.length-1 ; x ++){ //控制比较的次数
for(int y = 0 ; y < arr.length-1-x; y++){
//如果前面比后面元素大,往后移动
if(arr[y]>arr[y+1]){
int temp = arr[y] ;
arr[y] = arr[y+1] ;
arr[y+1] = temp ;
}
}
}
biJiao(arr);
//使用方法
public static void biJiao(int[] arr){
for(int x = 0 ; x <arr.length-1 ; x ++){ //控制比较的次数
for(int y = 0 ; y < arr.length-1-x; y++){
//如果前面比后面元素大,将较大元素往后移动
if(arr[y]>arr[y+1]){
int temp = arr[y] ;
arr[y] = arr[y+1] ;
arr[y+1] = temp ;
}
}
}
}
}
面试题
看程序写结果(考点:Java中的基本数据类型和引用数据类型作为参数传递的区别)
class ArgsDemo{
public static void main(String[] args){
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b); //10,20
change(a,b);
System.out.println("a:"+a+",b:"+b);//a:10,b:20
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]); //4
}
//执行change方法
public static void change(int a,int b){//基本数据类型作为参数进行传递
System.out.println("a:"+a+",b:"+b);//10,20
a = b;
b = a + b;
System.out.println("a:"+a+",b:"+b);//20,40
}
public static void change(int[] arr) {
for(int x=0; x<arr.length; x++) {
if(arr[x]%2==0) {
arr[x]*=2;
}
}
}
}
今日重点:
1)一维数组的应用
数组的基本遍历
数组的逆序
数组的基本查找 (考虑找不到情况下)
数组的最值问题
2)二维数组:知道二维数组的组成(有多个一维数组的元素)
3)冒泡排序
自己画图,代码实现(必须要掌握)
4)面试题(17年-18年 )
Java中的参数传递(基本数据类型,引用类型)
1)基本数据类型作为形参传递,形参的改变对实际参数没有影响
2)引用数据类型作为形参传递,形参的改变直接影响实际参数