基础小点杂
Scanner
1 | Scanner scanner = new Scanner(System.in); |
将控制台获取的信息用scanner对象容器进行接收,使用对象即可以操作输入信息
循环 break 和 continue
break 跳出循环,无下次循环
continue 终止当前循环,有下次循环
方法重载
同一个类终,方法名相同,参数列表不同
方法重写
子类继承父类时,对父类的方法进行重新覆写
方法名、返回值类型、形参相同;访问权限>=重写前;抛出异常<=重写前
可变参数
一个方法只能有一个可变参数
可变参数只能在末尾
1 | (String str,String ... str1) |
用 …表示
数组 数组的大小是不可变的
定义数组
1 | int[] numbers = new int[4]; |
数组起始下标为0
堆栈
栈:声明的名字存在 栈中 main()方法是存在栈里面的,基本数据类型是存在栈中的
堆:new创建的时候开辟内存空间 也即对象是存在堆中的
构造器
构造器的名字与类名相同,无返回值
默认存在一个无参构造器,若存在一个有参构造器,则默认的无参构造器就不存在了
new方法时,本质是在调用构造器(首先调用父类的构造器,然后调用子类的构造器,且必须调用父类的构造方法)
构造器的作用是初始化值
this与super
this:谁调用代表谁 super:代表父类
this() 调用本类的构造方法 super()调用父类的构造方法
抽象类
抽象类的方法必须由其非抽象子类实现
抽象类中可以有普通方法
抽象类有构造方法,但是没有方法实现,也即不能使用new实例化,构造方法用来初始化
接口
接口中的方法无实现
接口中方法默认为public
类实现接口 implements
若实现的多个接口中存在多个相同的方法,则实现类中只会出现一个
接口中的常量默认为 public static final
接口中无构造方法
继承
子类继承了父类的所有方法和成员,但对私有的无权限调用
类 单继承,多实现;接口多继承
匿名内部类 new 接口
自动拆箱
当一个基础数据类型与封装类进行==、+、-、*、/运算时,会将封装类进行拆箱,对基础数据类型进行运算。
JDK 和 jre区别
- JDK包含jre
- JDK是面向开发人员使用的SDK,jre是Java Runtime Enviroment运行环境是面向java程序的使用者
== 和 equals 的区别
- == 比较的地址
- equals 比较的是值
hashCode()和equals()联系
- hashcode()返回的是一个hash值,是为了方便查找
- equals() 是用于比较
- equals()比较为 true时,他们的hash值必定相同;equals()比较不同时,他们的hash值也可能相同(数据碰撞的情况)
hash碰撞
将任意长度的数据 经过算法 转为 一段有限长度的数据 (无穷转有限,必定会出现碰撞,对于我们用到的遇到碰撞却很小)
在集合中的应用(集合分为list、set,list有序可重复,set无序不可重复)
在set中保证不重复,首先会比较hash值,若hash值不同,则必定不重复;若hash值相同,则根据equals()比较,不同则不重复,相同则重复
Integer.toBinaryString()函数
将10进制以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
如果参数为负,该无符号整数值为参数加上 2^32;否则等于该参数。
位运算
^ 异或 相同为0,不同为1
&与 都为1则为1,不都为1则为0
|或 有一个为1则为1,否则为0
~非 为1则为0,为0则为1
<< 左移运算符 向左移位,最低位补0
例 -1010 <<1 -10100 1010 <<1 10100
>> 右移运算符 向右移位,去掉几个最低位,高位补0或者1与原整数正负有关
例 -1010 >>1 0101 1010 >>1 1101
>>> 无符号右移运算符 向右移位,去掉几个最低位,高位补0与原整数的正负无关
例 -1010 >>>1 0101 1010 >>> 0101
加法算法(使用位运算的算法)
1 | public int Addfunction(int a ,int b) { |
进制转换
二进制转10进制
1 | Integer.parseInt("101",2) |
补位
1 | String str = String.format("%010d", youNumber); |
排序
1 | Collections.sort(list,new Comparator<User>() { |
优雅获取执行时间
1 | StopWatch stopWatch = new StopWatch(); |
计算时间差
1 | long minutes = ChronoUnit.MINUTES.between(Instant.ofEpochMilli(date1.getTime()), Instant.ofEpochMilli(date2.getTime())); |
注解
1 |
在bean被spring加载初始化之前执行
1 |
在bean被销毁前执行
1 |
系统中存在同一类型的多个bean时,通过该注解来指定对应的bean
1 |
lombok的注解,用于忽略抛出的异常