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,或者为同一值的数组时,可以使用稀疏数组来保存改数组。
-
系数数组的处理方式:
- 记录数组一共有几行几列,有多少个不同的值
- 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
-
如下图:左边是原始数组,右边是稀疏数组
-
如上图,把原始数组转换为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 接口
- 实现了接口的类,就需要重写接口的方法
- 利用接口实现伪多继承(多实现)
遇到的问题:
-
-
尝试:菜单—>File—>Invalidate Caches/Restart 选择Invalidate and Restart 或者 只是Invalidate,清除掉缓存,然后Rebuild Project
结果:启动成功,问题解决
-