学一下后端语言(JAVA),因为有js的基础,笔记记录的比较潦草
class基本类
几个特性:多态、继承、封装
多态:体现在重写上,每个有继承的子类重写父类的同一个方法都属于多态的体现
继承:子类继承父类,一个子类只能继承一个父类
封装:这个我也没太懂,在我看来就是对某些操作进行函数封装
每个类都要有构造函数,哪怕你不写,java也会默认给你生成
接口
必须用interface关键词声明,一个类可以同时继承多个接口,接口是要被类实现的,接口的所有方法必须是抽象方法
接口无构造函数,因此接口自身无法实例化
接口中所有的方法都不能有方法体
接口之间可以继承,仍然是extends关键词
基本类用implements 关键词来继承接口
构造函数
特点:
1、方法名与类名一致
2、不能带有void,并且不能带有return
3、不能由我们手动调用,而是在创建对象的时候由虚拟机自动调用
每创建一次对象,就会执行一次
类型:分为空参构造,以及带参构造
即使我们没写空参构造,虚拟机也会自动给我加上
但是我们要注意,只要我们在类中写了任意一种构造函数,java就不会给我们添加空参构造
抽象类
不做实现,只能用来继承(这里本来是很好懂的,但是后面我看到匿名内部类的时候就蒙蔽了)
有抽象方法的必是抽象类,但抽象类不一定必有抽象方法
抽象方法
没有方法体,必须被重写
string类
区别于stringbuilder,string一旦定义就不能变化,每次进行计算时会产生一个新的string类,
stringhubilder,定义后内容是可以变化的
string方法和属性:substring、tochararr、replace、chartat、length
stringhubilder方法和属性:append、reserve、tostring
reserve方法直接将数据本身反转并没有返回值
stringhubilder打印出来的并非地址值而是属性值,这是因为java做了特殊处理
匿名内部类
我最模糊的一个概念,但是很多资料说这个内部类很重要
抽象类的实例化只能通过编写一个类来继承、重写抽象方法来进行实例化
匿名内部类可以让抽象类进行实例化
package demo0713;
public abstract class abs {
public abstract void eat();
}
package demo0713;
// 匿名内部类的理解:
public class index {
public static void main(String[] args) {
System.out.print("123");
// animate cat = new animate();
// cat.eat();
new abs() {
@Override
// System.out.print("123");
public void eat() {
System.out.print("匿名内部类的eat方法");
};
}.eat();
}
}
Math
和js的Math没什么区别,要注意的是Math.abs,t范围,-2147483648 ~ 2147483647 当为-2147483648时,Math.abs返回自身
基本数据类型
数字整数:long、int、short、byte
区别是范围不一样、占据的存储大小不一样
同类型的进行计算,得到的仍是同类型的结果,因此会导致精度丢失
数字小数:float、double
float很少用,定义时后面要加f
字符:char、string
char定时时只能是单引号(这个把我恶心死了,js的形式写习惯了)
布尔:boolean
同js的一样,但是布尔不能与数字互转,譬如js中1就是true,false就是0
引用数据类型
类、数组、接口