编程语言
首页 > 编程语言> > Java复习巩固

Java复习巩固

作者:互联网

第三天:数组,方法 1.什么是数组? 数组:内存中开辟的一块连续的空间,是用来临时存储同种数据的,要想永久性存储数据,可以存储在数据库里面,也可以通过流存储到文件中。   为什么会出现(需要)数组? 因为我们需要一次存储多个数据,而之前学的变量一次只能存储一个数据。   数组与变量的区别? 1.变量是内存中一块小的空间,而数组是内存中一块连续的空间 2.变量一次只能存储一个数据,而数据一次可以存储多个数据 3.变量在内存中分布是无序的,凌乱的,随机的,而数组分布是连续的,有序的。 4.变量没有默认值,而数组是有默认值的。   定义数组的两种方式(动态声明,静态声明) 1.动态定义 数组类型[] 数组名=new 数据类型[数组长度]; 例子: int[] arr=new int[10];//在内存中开辟一块长度为10的连续空间。   如何给数组赋值?需要借助索引(下标,角标) 在计算机中下标一般都是从0开始的 赋值方式:数组名[下标]=值; 例子:arr[0]=1; 取值方式也是通过下标(索引):arr[0] 输出arr[0]即可得到值   注意:超出数组取值范围,就会报数组角标越界异常   数组的遍历:for(int i=0;i<arr.length;i++){ System.out.println("数组:"+arr[i]) }   数组的长度:arr.length 数组名.属性名   数组的默认值:byte short int long: 0 float double: 0.0 char : 空字符 String : null boolean : false 数组的第二种声明方式:静态声明 数据类型[] 数组名={值1,值2,.....值n}; 例子:int[] arr={10,20,30,40}; 特点:一步到位,赋值,长度全都有,有多少个值,数组的长度就是多少。   思考?数组只能存储同种数据类型吗?本意是对的,编译的时候会把数据统一转为同种数据类型。   基本练习题:  1.数组的复制
   //数组的复制
        int[] arr={1,2,34,5};
        int[] arr1=new int[arr.length];
        //遍历循环
        for (int i = 0; i <arr.length ; i++) {
            //把arr数组里面的元素复制复制给arr1
            arr1[i]=arr[i];
        }

2.数组的合并

 //数组的合并
        int[] brr={1,2,3,5};
        int[] brr1={4,5,9};
        int[] crr=new int[brr.length+brr1.length];
        for (int i = 0; i <brr.length; i++) {
            crr[i]=brr[i];
        }
        //因为前面brr数组里面元素的值已经复制给了crr,现在将brr1的值赋值给crr,在brr数组长度上+i即可
        for (int i = 0; i <brr1.length ; i++) {
            crr[brr.length+i]=brr1[i];
        }
        //遍历crr
        for (int i = 0; i <crr.length ; i++) {
            System.out.print(crr[i]+"  ");
        }

3.求出数组元素的最大值和最小值以及总和(sum),和反向遍历数组

   //数组的求和和最大值,最小值
        int[] arr={1,2,3,4,5};
        int sum=0;
        int min=arr[0];//默认数组的第一个元素为最小值
        int max=arr[0];//默认数组的第一个元素为最大值
        for (int i = 0; i <arr.length ; i++) {
            if (arr[i]>max){
                max=arr[i];
            }
            if (arr[i]<min){
                min=arr[i];
            }

            sum+=arr[i];//先遍历数组中的元素,在进行累加
        }
        System.out.println("数组的长度:"+arr.length);
        System.out.println("sum="+sum);
        System.out.println("最大值:"+max);
        System.out.println("最小值:"+min);
        //反过来遍历数组
        for (int i = arr.length-1; i >=0 ; i--) {
            System.out.println("数组"+arr[i]);
        }

4.从键盘输入一个数字在数字找它的小标并且打印出来。

 
 //从键盘输入一个数字在数字找它的小标并且打印出来。
        System.out.println("请输入要查找的数据:");
        int[] arr={11,22,333,222,111};
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
          int index=-1;//索引为负数表示数组找那个没有这个数据
        for (int i = 0; i <arr.length ; i++) {
            //判断数组中是否有这个数
            if(number==arr[i]){
                index=i;//输出number的小标
                System.out.println(number+"的下标是"+index);
                break;//找到了跳出这个循环
            }
        }
        if (index==-1){
            System.out.println("没有找到这个数据");
        }
  2.方法 2. 1 方法是什么,作用? 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集。 方法就是将某些具有独立的功能的代码,把它包(封装)起来 如何定义方法?----可以照着主方法声明 方法定义好之后,使用(调用)方法   如何去定义一个方法? 方法的语法结构: public 返回值类型 方法名(参数1,参数2.....){          方法体; } 例子:
    //调用方法并输出方法的结果
        System.out.println(FuntionDemo1.sum(1,2));

    }
    //定义方法
    public static int sum(int a,int b){
        return a+b;
    }
}

 

  2.2方法的分类----共分为四类 1.无参无返:没有参数,也没有返回值 例如:public void A{ System.out.println("这是无参无返的方法"); } 自己不用给别人东西,别人也不用给自己东西 一般用于直接输出打印 自己定义方法: 格式: public static 返回值类型 方法名(参数){ 方法体-------这个方法封装的功能代码 } 没有返回值的标志: void 有返回值的标志: return public static void 方法名(){ 方法体 } static:静态的 void:无返回值的   2.无参有返:没有参数,但是有返回值,调用者不用给方法东西,方法需要返回给调用东西, 自己不用给别人东西,别人需要给自己东西 例如:public int A{ System.out.println("这是无参有返的方法"); return 1;   }   3.有参无返(有参数,没有返回值):调用者给方法东西,而方法不需要给调用者东西 自己给别人东西,而别人不需要给自己东西 huanQian() public void 方法名(int a){ 方法体; System.out.println("这是无参有返的方法"+a); }   4.有参有返(有参数有返回值) :自己要给别人东西,别人也要给自己东西 public 参数类型 方法名(参数1,参数2...){ 方法体 } 例子: //变量如果是基本数据类型,必须先赋值,才能去使用,因为基本数据类型没有默认值 //定义方法 public static int sum(int a,int b){ return a+b; }   2.3参数和返回值进行理解 写好一个方法之后,需要被调用。角色: 方法本身(别人)-----调用者(主方法)(自己) 参数与返回值就是这两个角色之间的数据传递 参数:调用者传给方法的数据 返回值:方法返回给调用者的数据   2.4方法重载的概念 什么是方法重载? 方法重载是在同一个类中方法名相同,参数列表不同(参数包含参数个数,参数类型,参数顺序)与返回值无关(跟返回值没有关系)。 面试题?方法重载与方法重写的区别?  方法重载是在同一个类中方法名相同,参数列表不同(参数包含参数个数,参数类型,参数顺序)与返回值无关(跟返回值没有关系)。  方法重写是在子父类中,子类继承父类的方法,当父类的方法不满足子类时候,我们就可以对父类的方法进行重写。   2.5方法在内存中是如何存储的 @1b6d3586------理解成是数组在内存中位置的表现形式(地址值) int[] arr=new int[]{1,2,3}; arr这个对象名携带的是一个地址值(对象的引用)例如:xx001 这个地址值指向堆内存中的内存空间。 数组会存储到堆空间中,在堆空间开辟一块空间。   2.6理解形参与实参的区别 什么是形参?参数(形式参数) 形参:在自定义方法(方法)的声明上面(参数声明上面) 例子: int a=10;//实参 System.out.println(A(a)) public int A(int a){//形参      retrun a; } 什么是实参?实际参数 在main方法中定义的一个实际变量   2.7 形参是基本数据类型和引用数据类型时,形参的改变是否对 实参有影响? 形参如果是基本数据类型,形参的改变会不会影响实参?不会 形参如果是引用数据类型,形参的改变会不会影响实参?会 为什么? 1.形参是基本数据类型,形参发生改变不会直接影响实参,基本数据类型保存在栈内存中,在栈中开辟一块内存空间可以称为栈帧, 栈帧1和栈帧2本质上是两个不同的空间,没有直接的联系,形参改变之后,方法(method)执行完后,method直接就弹栈了, 被jvm虚拟机中的垃圾回收机制(GC)释放了,跟main方法中的实参没有任何联系。 2.形参是引用数据类型,形参发生改变会直接影响实参,因为中间有地址值做牵引,两个参数指向的是同一个堆内存的地址。   8.使用方法需要注意的细节 细节: 1.方法可以调用其他方法吗?可以 2.方法可以调用自己本身吗?可以,但是会出现栈内存溢出,因为方法加载进栈中,会占用栈内存的空间,如果一直调用方法本身,最终栈内存空间会消耗完,没有多余的空间去加载了,所有会出现栈内存溢出。 3.方法里面可以写方法吗?不可以 无返回值的方法可以有return吗?可以,是用来结束方法的,结束(跳出)循环时break。 4.方法中的参数只能是同种数据类型吗?不是,可以是不同种类的数据类型的,只是传参数的时候对应好(匹配)参数类型即可。   今日学习感受:        学习java其实比较容易的,有些之前不懂得,现在也有了新的领悟,真的,需要自己一步一个脚印扎扎实实的走好每一步,才能不负自己的付出。        学习java不难,难的是坚持,希望自己能继续,日复一日的坚持下去。

标签:arr,巩固,Java,复习,int,参数,数组,返回值,方法
来源: https://www.cnblogs.com/lz-km/p/15635972.html