Java学习笔记(一)

java基础

  • << 左移 例如 3<<2 相当于 3*2*2;3<<3相当于3*2*2*2

  • >> 右移 例如 12>>2 相当于 12/2/2;16>>3相当于16/2/2/2

    System.out.println("" + 3 + 6);//结果36
    System.out.println(2 + 3 + "123");//结果5123
    
  • 增强型for循环

    int[] numbers = {1, 2, 3, 4, 5, 6};
            for (int i : numbers)
                System.out.println(i);
    
  • continue 跳过某次循环

  • 可变长参数 (只能在参数最后面,后面不能再放参数)

    public void test(int... nums) {
        for (int i = 0; i < nums.length; i++)
            System.out.println(nums[i]);
    }
    
  • 冒泡排序

    public static int[] sort(int[] array) {
        int temp;
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = 0; j < array.length - 1 - i; j++) {
                if (array[j] > array[j + 1]) {
                    temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
        return array;
    }
    
  • 稀疏数组

    • 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存改数组。

    • 系数数组的处理方式:

      • 记录数组一共有几行几列,有多少个不同的值
      • 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
    • 如下图:左边是原始数组,右边是稀疏数组

      Java学习笔记(一)_第1张图片Java学习笔记(一)_第2张图片

    • 如上图,把原始数组转换为3行3列的稀疏数组,第一行存的是原始数组的行列和有效值个数,第二行开始存有效值的行列坐标和有效的值

  • 构造器(构造方法):

    • 使用new关键字,本质是在调用构造器
    • 构造器用来初始化值
    publlic class Person{
        String name;
        //默认的构造器
        public Person(){
            
        }
        //有参构造
        public Person(String name){
            this.name = name;
        }
    }
    
  • super注意点:

    • super调用父类的构造方法,必须在构造方法的第一个
    • super必须只能出现在子类的方法或者构造方法中
    • super和this不能同时调用构造方法
  • this:

    • 代表的对象不同:

      • this:本身调用者这个对象
      • super:代表父类对象的引用
    • 前提:

      • this:没有继承也可以使用
      • super:只能在继承条件才可以使用
    • 构造方法:

      • this();本身的构造
      • super();父类的构造
  • 方法的调用只和左边定义的数据类型有关

    A extends B //A继承B
    B b = new A();//父类的引用指向子类
    
  • 重写:需要有继承关系,子类重新父类的方法。

    • 方法名必须相同
    • 参数列表必须相同
    • 修饰符:范围可以扩大(public>protected>default>private)
    • 抛出异常:范围可以被缩小,但不能扩大
  • 重写:子类的方法和父类必须要一致,方法体不同。

  • 多态注意事项:

    • 多态是方法的多态,属性没有多态

    • 父类和子类,有联系 类型转换异常:ClassCastException

    • 存在条件:继承关系,方法需要重写,父类引用指向子类对象:Father father = new Son();

    • 不能重写:

      • static 方法,属于类,不属于实例
      • final 常量
      • private 方法
  • 静态导入包

    import static java.lang.Math.random;
    
  • 用final修饰的类不能被继承

  • 静态代码块和类一起创建

  • abstract 抽象类:

    • 类 extends:单继承
    • 约束,抽象方法,只有方法名字,没有方法的实现
    • 不能new这个抽象类,只能靠子类去实现它:约束
    • 抽象类中可以写普通的方法
    • 抽象方法必须写在抽象类中
    • 抽象类中是否有构造器(构造方法):Java 抽象类中构造方法的作用?如何理解?
  • interface 接口:

    • 接口中的所有定义方法其实都是抽象的,默认public abstract
    • 常量,默认 public static final
    • 接口都需要实现类
    • 类可以实现接口 implements 接口
    • 实现了接口的类,就需要重写接口的方法
    • 利用接口实现伪多继承(多实现)

遇到的问题:

  1. IDEA 找不到或无法加载主类

    • 尝试:菜单—>File—>Invalidate Caches/Restart 选择Invalidate and Restart 或者 只是Invalidate,清除掉缓存,然后Rebuild Project

      结果:启动成功,问题解决

  2. idea 格式化代码怎么才能不格式化代码注释?

你可能感兴趣的:(笔记,java)