java入门知识补充

  • (1)键盘接收(Scanner的使用),可以通过scanner类获取键盘上输入的数据

    • 导入Scanner类:import java.util.scanner;
    • 建立Scanner对象:Scanner input = new Scanner(system.in);
    • 获取键盘输入的数据:
      • String a = input.nextLine();nextLine():读取输入,包括单词之间的空格和除回车以外的所有符号(即。它读到行尾)。读取输入后,nextLine()将光标定位在下一行。
      • String b = input.next();next():只读取输入直到空格。它不能读两个由空格或符号隔开的单词。此外,next()在读取输入后将光标放在同一行中。(next()只读空格之前的数据,并且光标指向本行)。
  • (2)数组:是一个变量,存储相同数据类型的一组数据,声明一个数组就是在内存空间划出一串连续的空间。栈里存放的是数组的名字,代表数组的变量。堆里存放的是具体的数组的值。

    • 声明数组的两种方式:
      • int [] a = new int []{1,2,3};
      • int [] b = new int [3];
        b[0] = 1; b[1] = 2; b[2]=3;
  • (3)冒泡排序:用二重循环将数组升序或降序排列。原始的冒泡排序是稳定的,由于该排序算法的每一轮都要遍历一遍所有的元素,轮转的次数和元素数量相当,所以时间复杂度为O(N^2)。

    • 口诀(升序):n个数字来排队;两两比较小靠前;外层循环n-1;内层循环n-1-i。如图所示:
      在这里插入图片描述
public class BubbleSort implements IArraySort {

    @Override
    public int[] sort(int[] sourceArray) throws Exception {
        // 对 arr 进行拷贝,不改变参数内容
        int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);

        for (int i = 1; i < arr.length; i++) {
            // 设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已经完成。
            boolean flag = true;

            for (int j = 0; j < arr.length - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;

                    flag = false;
                }
            }

            if (flag) {
                break;
            }
        }
        return arr;
    }
}
  • Arrays类的相关方法
    • sort:对数组的元素进行升序排序
    • int binarySearch(array,val)查询元素val在数组array中的下标(要求数组中元素已经升序排列)
    • copyof:复制指定的长度的数据到新数组中,超出数据使用默认值补足
    • copyofRange:复制指定位置之间的数据到新数组中,数据不包括结尾指定的值(包头不包尾)
  • (4)方法:对象的行为(对象【用来描述客观事物的一个实体,由一组属性和方法构成】执行的操作)

    • 形参:方法定义处的参数叫做形式参数也叫做形参
    • 实参:方法调用处的参数叫做实际参数也叫做实参
    • 基本数据类型:当参数传递为基本数据类型的时候,参数不会保留---------传变量的值
    • 引用数据类型 (自定义数据类型,数组,接口等):当参数传递为引用数据类型的时候,参数会保留------------传址
    • 方法重载:某些情况下在一个类中需要有多个其功能相同的方法。(方法名相同;参数项不同;与返回值,访问修饰符无关)
    • 类的继承关系可以产生一个子类,子类继承父类,它具备了父类所有的特征,继承了父类所有的方法和变量。子类可以定义新的特征,当子类需要修改父类的一些方法进行扩展,增大功能,程序设计者常常把这样的一种操作方法称为重写,也叫称为覆写或覆盖。与重载的区别如图:
      在这里插入图片描述
  • (5)Java中instanceof关键字的理解

    • instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
    • 用法:
      result = object instanceof class
      参数:
      Result:布尔类型。
      Object:必选项。任意对象表达式。
      Class:必选项。任意已定义的对象类。
      • 说明:
        如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。但是instanceof在Java的编译状态和运行状态是有区别的:
        在编译状态中,class可以是object对象的父类,自身类,子类。在这三种情况下Java编译时不会报错。
        在运行转态中,class可以是object对象的父类,自身类,不能是子类。在前两种情况下result的结果为true,最后一种为false。但是class为子类时编译不会报错。运行结果为false。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值