Java学习——周报(第三周)

本周学习内容涵盖了数组操作(定义、最值和创建),二分查找法、冒泡和选择排序算法,String处理,面向对象编程的基础概念(封装、继承、多态、方法重载),以及IDEA使用问题。作者反思了理解面向对象难度和预习不足等问题。
摘要由CSDN通过智能技术生成

行至二部第三周工作总结

       生活就是在不停的奔跑中,回首过去,有多少人在你身后,有多少人跑在你的前方,你的目标是什么,你的终点又在哪里?我们从哪里启航,又将在哪里靠岸?我的回答是,我将从双体启航,一路奔跑,不停的超越,直至跑到自己梦想的地方。无悔便好!

  • 软件技术方面

   (一)学习的内容

1.数组知识的回顾,数组的三种定义方法。

2.数组的最值讲解。

3.讲解创建方法,首先是方法名,里面放参数(形参),返回值。

4.讲解上周作业,强调了注释规范(对齐代码,注释在代码上方),以及命名要见名思意。

5.二分查找法、冒泡排序和选择排序。

6.String字符串教学,String有两种方式初始化:new String()  和直接双引号赋值。

7.面向对象的三项特征:封装、继承、多态。

8.方法重载:编译器根据参数的类型和数量来确定调用哪个方法。

(二)学会的内容

1. 二分查找法:找到数组的中间元素;如果目标元素等于中间元素,则查找结束;如果目标元素小于中间元素,则继续在左侧区域查找;如果目标元素大于中间元素,则继续在右侧区域查找;如果查找范围缩小到只剩一个元素,且这个元素不是目标元素,则查找结束。public static int binarySearch(int[] ay,int tagNum){

        int min = 0,max = ay.length-1,middle;

        while (min <= max) {

           middle = (min + max )/2;

           if(ay[middle]<tagNum){

                min = middle + 1;

            }else if (ay[middle]>tagNum){

                max = middle - 1;

            }else{

                return middle;

            }

        }

        return -1;

}

2.冒泡排序:数组的第一个元素开始,逐个比较相邻的两个元素,如果前面的元素比后面的元素大,则交换这两个元素的位置;继续比较下一对相邻的元素,直到最后一个元素,此时最后一个元素应该是数组中最大的一个元素;重复以上步骤,但是每次比较的区间缩小1个元素,直到没有任何一对相邻的元素需要交换位置。

   public static void bubbleSort(int[] ay) {                                     

        /**

         * 控制多少次

         */

        for (int i = 0; i < ay.length - 1; i++) {

            /**

             * 负责交换位置

             */

           for (int j = 0; j < ay.length - i - 1; j++) {

                if (ay[j] > ay[j + 1]) {

                    int temp = ay[j];

                    ay[j] = ay[j + 1];

                    ay[j + 1] = temp;

                }

            }        }

    }

3.选择排序:从数组的第一个元素开始,设这个元素为最小值;

遍历数组,如果有比最小值更小的元素,则将该元素设为最小值;遍历完数组后,将最小值与数组的第一个元素交换位置;从数组的第二个位置开始,重复以上步骤,直到排序完成。

     public static void selectSort(int[] ay){

        /**

         * 控制次数

         */

        for (int i = 0; i < ay.length; i++) {

            int minIndex = i;

            //minIndex是当前要排序的位置

            //应该和后面的那些数进行比较(j=j+1)

            for (int j = i+1; j < ay.length; j++) {

                if(ay[minIndex] > ay[j]){

                    minIndex = j;

                }

            }

            if(minIndex != i){

                int temp = ay[i];

                ay[i] = ay[minIndex];

                ay[minIndex] = temp;

            }

        }

}

4.方法:concat():将两个字符串连接在一起。

equals():比较两个字符串或对象是否相等。

indexOf():返回指定子串在字符串中第一次出现的位置索引。

contains():检查字符串中是否包含指定子串。

substring():从字符串中提取指定范围的子串。

String str = "HelloWorld";

String subStr = str.substring(5, 10);

// 结果为 "World"

5.字符串的拼接:/**

         * 以下两个是专门用来拼接字符串的类

         *   拼接过程中不创建新对象

         *   节省内存,效率更高

         * StringBuilder 非线程安全

         *    作为局部变量时使用

         * StringBuffer  线程安全

         *    作为类成员变量时使用

         */

        long t1 = System.currentTimeMillis();

        StringBuffer sb = new StringBuffer();

        for (int i = 0; i < 100000; i++) {

            sb.append(i);

        }

        long t2 = System.currentTimeMillis();

        System.out.println(t2 - t1);

6.面向对象编程的三个步骤:创建类   public class Car{};

创建对象 Car myCar = new Car();

指挥对象  myCar.方法();

面向对象:所有的类我们不写构造函数的时候,默认会有一个无参数的构造函数;当我们写了我们自己定义的构造函数后,无参的构造函数就会消失;构造函数没有返回值;方法名和类名一样;构造函数可以私有化

7.static:静态的  共享的 类变量(当类加载的时候,这个空间就分配了)

访问方式: 类名.变量名

static 还可以修饰方法

     被修饰的方法被成为:静态方法,共享方法,类方法

     静态方法只能使用静态的属性,不能使用实例的属性

     静态的只能使用静态的方法和实例

     实例的方法可以使用静态的方法和实例

     静态的方法不可以使用实例的方法和属性

     static方法中,不能使用this方法

(三)存在的问题

1.面向对象的课程中,相较于我这种从小白,理解知识与转换较为困难,吸收得较慢。

2.课前没有足够的预习,对于新的知识点很陌生。

3.IDEA使用不够熟练,包括快捷键的使用。

4.某些知识思维上理解了,但是实际使用达不到理想的效果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值