java学习笔记一

学一下后端语言(JAVA),因为有js的基础,笔记记录的比较潦草

文章目录

  • class基本类
  • 接口
  • 构造函数
  • 抽象类
  • 抽象方法
  • string类
  • 匿名内部类
  • Math
  • 基本数据类型
  • 引用数据类型

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

引用数据类型

类、数组、接口

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