JavaSE知识笔记Day1()

JavaSE知识笔记Day1

数据类型

基本数据类型

数值型

整型(byte[1],short[2],int[4],long[8])

整型常量默认为int,声明long型常量须在后面加”l”/”L”

浮点型(float[4],double[8])

浮点型常量默认为double,声明float型常量须在后面加”f”/”F”
科学计数法(9.12 e 2表示9.12*10的二次方)
由于浮点数是近似值,所以浮点数的运算得到的是近似值,
当我们对判断对象是涉及浮点数运算得到的小数时要小心,
应该以两个判断对象数的差值的绝对值在某个精度范围内进行判断

字符型(char[2])

字符型用单引号赋值,字符常量用单引号
本质是数字,可以运算,但输出时为Unicode对应的字符

布尔型(boolean[1])

不能用0或非0数代替true和false(与C语言不同)

  • 数值型

    整型(byte[1],short[2],int[4],long[8])

    整型常量默认为int,声明long型常量须在后面加”l”/”L”

  • 整型(byte[1],short[2],int[4],long[8])

    整型常量默认为int,声明long型常量须在后面加”l”/”L”

  • 整型常量默认为int,声明long型常量须在后面加”l”/”L”
  • 浮点型(float[4],double[8])

    浮点型常量默认为double,声明float型常量须在后面加”f”/”F”
    科学计数法(9.12 e 2表示9.12*10的二次方)
    由于浮点数是近似值,所以浮点数的运算得到的是近似值,
    当我们对判断对象是涉及浮点数运算得到的小数时要小心,
    应该以两个判断对象数的差值的绝对值在某个精度范围内进行判断

  • 浮点型常量默认为double,声明float型常量须在后面加”f”/”F”
  • 科学计数法(9.12 e 2表示9.12*10的二次方)
  • 由于浮点数是近似值,所以浮点数的运算得到的是近似值,
    当我们对判断对象是涉及浮点数运算得到的小数时要小心,
    应该以两个判断对象数的差值的绝对值在某个精度范围内进行判断
  • 字符型(char[2])

    字符型用单引号赋值,字符常量用单引号
    本质是数字,可以运算,但输出时为Unicode对应的字符

  • 字符型用单引号赋值,字符常量用单引号
  • 本质是数字,可以运算,但输出时为Unicode对应的字符
  • 布尔型(boolean[1])

    不能用0或非0数代替true和false(与C语言不同)

  • 不能用0或非0数代替true和false(与C语言不同)

引用数据类型


接口
数组

可以存放多个同一类型的数据
数组型数据是对象

  • 接口
  • 数组

    可以存放多个同一类型的数据
    数组型数据是对象

  • 可以存放多个同一类型的数据
  • 数组型数据是对象

类型转换

  • (byte,short)和char之间不会互相自动转换

    应该是因为数据范围不匹配

  • byte,short,char三者可以运算,计算时精度转换为int
  • 基本数据类型转换为String->值+””
    String转换为基本数据类型->通过基本类型的包装类的parse**方法

原码、反码、补码

对于有符号:

  • 最高位为符号位:0表示正数,1表示负数
  • 正数的原码、反码、补码一样(0也是)
  • 负数的反码=原码的符号位不变,其它位取反
  • 负数的补码=反码+1
  • Java没有无符号数
  • 计算机运算时以补码的形式运算,看结果的时候要看原码(位运算时注意这个)

位运算符

&、|、^、~、>>、<<、>>>

&、|、^、~、>>、<<、>>>

  • 【>>】:低位溢出,符号位不变,高位补符号位
  • 【<<】:符号位不变,低位补0
  • 【>>>】:低位溢出,高位补0

数组

  • 静态初始化

    int a[]=

  • 创建后,如果没有赋值,有默认值

    0/false/null(String)

  • 二维数组

    int a[][]=new int[2][3]
    //2代表二维数组中一维数组个数,3代表一维数组中的元素个数

    int b[][]=new int[3][];
    int[i]=new int[j];
    //每个一维数组的大小可以不相同,不new的话int[i]为null

可变参数

public int method(int... nums){
    //方法体
}
  • 可以接收0个及以上的参数,nums可以当作数组来使用,
    即方法体中可以使用nums.length,nums[i]等操作
  • 实参可以是一个数组
  • 可变参数可以和其他普通参数一起放在形参列表,但要将可变参数放在最后
  • 一个形参列表只可以有一个可变参数,即使可变参数的类型不同也不可以有多个

构造器

  • 没有返回值
  • 方法名和类名一致
  • 没有定义构造器时,系统会自动生成一个默认无参构造方法,
    当有定义构造器时,系统不再自动生成无参构造方法,此时需要使用无参构造方法时,需要自己定义

关键字

this

  • 与对象关联
  • 可以用来区分成员变量和局部变量
  • 可以访问本类的成员方法:this.方法名(参数列表)(在继承中有所体现)
  • 可以在构造器中使用另一个构造器,但只能使用一次,只能放在第一条语句

super

  • 构造器中只能放在第一行使用,所以和this不能在一个构造器中同时使用
  • 可以用来访问父类的成员变量和方法,但是不能访问私有的

访问修饰符

  • public: 所有类可见
  • protected: 对子类和同一包的类可见
  • 缺省: 同一包可见
  • private: 只有自己可见

只有public和缺省可以修饰类和接口

  • 只有public和缺省可以修饰类和接口
父类成员访问属性 父类中含义 子类中含义
public 所有类可见 所有类可见
protected 同一个包的类,子类可见 父类所在包中的类、自己和子类可见
缺省 同一个包的类可见 如果子类与父类在同一个包:只有包内其他类可见
否则:相当于private
private 仅自己可见 不可见

继承

  • 子类会调用父类的构造器

    默认调用父类无参构造器,如果父类没有提供无参构造器,需用super指定相应的父类构造器

  • 子类会得到父类所有的成员变量和成员方法,但访问属性不同,使用也不同

    在父类提供的方法中可以访问私有的成员变量和方法
    如果子类重新定义父类中存在过的变量,则相当于定义一个与父类同名变量完全无关的变量,
    在子类的方法中访问子类的,在父类的方法中访问父类的
    在子类对象中,父类的方法中调用的方法如果被重写(override),
    则调用的是子类重写的方法,在父类对象中调用的是父类的方法
    如果父类中方法是私有的,则子类的同名方法不属于重写,
    而是两个完全无关的方法,和变量的使用一样

  • 在父类提供的方法中可以访问私有的成员变量和方法
  • 如果子类重新定义父类中存在过的变量,则相当于定义一个与父类同名变量完全无关的变量,
    在子类的方法中访问子类的,在父类的方法中访问父类的
  • 在子类对象中,父类的方法中调用的方法如果被重写(override),
    则调用的是子类重写的方法,在父类对象中调用的是父类的方法
  • 如果父类中方法是私有的,则子类的同名方法不属于重写,
    而是两个完全无关的方法,和变量的使用一样
  • 所有类都是Object的子类
  • 单继承关系,子类只能有一个父类
  • instanceOf:比较操作符,用于判断对象的运行类型是否为XXX类型或其子类型

方法重载(overload)

  • 方法名相同
  • 参数列表不同(类型/个数/顺序,至少一个不同)
  • 与返回类型无关
  • 修饰符可以不同

方法重写/覆盖(override)

子类方法与父类方法的名称、返回类型、参数一样

子类方法与父类方法的名称、返回类型、参数一样

  • 子类与父类的方法返回类型要一样,或者子类方法返回类型是父类方法返回类型的子类
    (这个和方法重载的要求不一样)
    public Object getInfo(){}//父类
    public String getInfo(){}//子类

  • 子类方法不能缩小父类方法的访问权限 (记忆点:类似于要开源思想,所以不能缩小,可以扩大)

多态

  • 方法的多态:重写和重载体现
  • 对象的多态
    Animal animal = new Dog();
    //左边为编译类型,右边为运行类型

向上转型

  • 父类的引用指向了子类的对象
  • 可以调用父类中原有的成员(需遵守访问权限),具体的调用要看子类中的具体实现(例如重写)
  • 不能调用子类中特有的成员
  • 子类和父类中同名的成员变量属于两个不同的变量,不能调用子类的,可以调用父类的,(需遵守访问权限)
  • 父类私有的方法和子类中的同名方法不属于重写,不能调用子类中的同名方法

向下转型

  • 子类类型 引用名=(子类类型) 父类类型的引用名

  • 只能强转父类类型的引用,不能强转父类的对象
  • 要求父类类型的引用须指向当前目标类型的对象
  • 可以调用子类类型的所有成员

多态的应用

多态数组

  • 数组的定义类型为父类类型,里面可以保存子类类型的元素
  • 小技巧:可以使用instanceOf判断类型然后进行向下转型来调用子类特有的方法

多态参数

  • 方法定义是形参为父类类型,实参可以为子类类型

Java动态绑定机制

  • 当调用对象方法时,该方法会与该对象的内存地址/运行类型绑定
  • 当调用对象属性时,没有动态绑定,哪里声明,哪里使用
————————

JavaSE知识笔记Day1

数据类型

基本数据类型

数值型

整型(byte[1],short[2],int[4],long[8])

整型常量默认为int,声明long型常量须在后面加”l”/”L”

浮点型(float[4],double[8])

浮点型常量默认为double,声明float型常量须在后面加”f”/”F”
科学计数法(9.12 e 2表示9.12*10的二次方)
由于浮点数是近似值,所以浮点数的运算得到的是近似值,
当我们对判断对象是涉及浮点数运算得到的小数时要小心,
应该以两个判断对象数的差值的绝对值在某个精度范围内进行判断

字符型(char[2])

字符型用单引号赋值,字符常量用单引号
本质是数字,可以运算,但输出时为Unicode对应的字符

布尔型(boolean[1])

不能用0或非0数代替true和false(与C语言不同)

  • 数值型

    整型(byte[1],short[2],int[4],long[8])

    整型常量默认为int,声明long型常量须在后面加”l”/”L”

  • 整型(byte[1],short[2],int[4],long[8])

    整型常量默认为int,声明long型常量须在后面加”l”/”L”

  • 整型常量默认为int,声明long型常量须在后面加”l”/”L”
  • 浮点型(float[4],double[8])

    浮点型常量默认为double,声明float型常量须在后面加”f”/”F”
    科学计数法(9.12 e 2表示9.12*10的二次方)
    由于浮点数是近似值,所以浮点数的运算得到的是近似值,
    当我们对判断对象是涉及浮点数运算得到的小数时要小心,
    应该以两个判断对象数的差值的绝对值在某个精度范围内进行判断

  • 浮点型常量默认为double,声明float型常量须在后面加”f”/”F”
  • 科学计数法(9.12 e 2表示9.12*10的二次方)
  • 由于浮点数是近似值,所以浮点数的运算得到的是近似值,
    当我们对判断对象是涉及浮点数运算得到的小数时要小心,
    应该以两个判断对象数的差值的绝对值在某个精度范围内进行判断
  • 字符型(char[2])

    字符型用单引号赋值,字符常量用单引号
    本质是数字,可以运算,但输出时为Unicode对应的字符

  • 字符型用单引号赋值,字符常量用单引号
  • 本质是数字,可以运算,但输出时为Unicode对应的字符
  • 布尔型(boolean[1])

    不能用0或非0数代替true和false(与C语言不同)

  • 不能用0或非0数代替true和false(与C语言不同)

引用数据类型


接口
数组

可以存放多个同一类型的数据
数组型数据是对象

  • 接口
  • 数组

    可以存放多个同一类型的数据
    数组型数据是对象

  • 可以存放多个同一类型的数据
  • 数组型数据是对象

类型转换

  • (byte,short)和char之间不会互相自动转换

    应该是因为数据范围不匹配

  • byte,short,char三者可以运算,计算时精度转换为int
  • 基本数据类型转换为String->值+””
    String转换为基本数据类型->通过基本类型的包装类的parse**方法

原码、反码、补码

对于有符号:

  • 最高位为符号位:0表示正数,1表示负数
  • 正数的原码、反码、补码一样(0也是)
  • 负数的反码=原码的符号位不变,其它位取反
  • 负数的补码=反码+1
  • Java没有无符号数
  • 计算机运算时以补码的形式运算,看结果的时候要看原码(位运算时注意这个)

位运算符

&、|、^、~、>>、<<、>>>

&、|、^、~、>>、<<、>>>

  • 【>>】:低位溢出,符号位不变,高位补符号位
  • 【<<】:符号位不变,低位补0
  • 【>>>】:低位溢出,高位补0

数组

  • 静态初始化

    int a[]=

  • 创建后,如果没有赋值,有默认值

    0/false/null(String)

  • 二维数组

    int a[][]=new int[2][3]
    //2代表二维数组中一维数组个数,3代表一维数组中的元素个数

    int b[][]=new int[3][];
    int[i]=new int[j];
    //每个一维数组的大小可以不相同,不new的话int[i]为null

可变参数

public int method(int... nums){
    //方法体
}
  • 可以接收0个及以上的参数,nums可以当作数组来使用,
    即方法体中可以使用nums.length,nums[i]等操作
  • 实参可以是一个数组
  • 可变参数可以和其他普通参数一起放在形参列表,但要将可变参数放在最后
  • 一个形参列表只可以有一个可变参数,即使可变参数的类型不同也不可以有多个

构造器

  • 没有返回值
  • 方法名和类名一致
  • 没有定义构造器时,系统会自动生成一个默认无参构造方法,
    当有定义构造器时,系统不再自动生成无参构造方法,此时需要使用无参构造方法时,需要自己定义

关键字

this

  • 与对象关联
  • 可以用来区分成员变量和局部变量
  • 可以访问本类的成员方法:this.方法名(参数列表)(在继承中有所体现)
  • 可以在构造器中使用另一个构造器,但只能使用一次,只能放在第一条语句

super

  • 构造器中只能放在第一行使用,所以和this不能在一个构造器中同时使用
  • 可以用来访问父类的成员变量和方法,但是不能访问私有的

访问修饰符

  • public: 所有类可见
  • protected: 对子类和同一包的类可见
  • 缺省: 同一包可见
  • private: 只有自己可见

只有public和缺省可以修饰类和接口

  • 只有public和缺省可以修饰类和接口
父类成员访问属性 父类中含义 子类中含义
public 所有类可见 所有类可见
protected 同一个包的类,子类可见 父类所在包中的类、自己和子类可见
缺省 同一个包的类可见 如果子类与父类在同一个包:只有包内其他类可见
否则:相当于private
private 仅自己可见 不可见

继承

  • 子类会调用父类的构造器

    默认调用父类无参构造器,如果父类没有提供无参构造器,需用super指定相应的父类构造器

  • 子类会得到父类所有的成员变量和成员方法,但访问属性不同,使用也不同

    在父类提供的方法中可以访问私有的成员变量和方法
    如果子类重新定义父类中存在过的变量,则相当于定义一个与父类同名变量完全无关的变量,
    在子类的方法中访问子类的,在父类的方法中访问父类的
    在子类对象中,父类的方法中调用的方法如果被重写(override),
    则调用的是子类重写的方法,在父类对象中调用的是父类的方法
    如果父类中方法是私有的,则子类的同名方法不属于重写,
    而是两个完全无关的方法,和变量的使用一样

  • 在父类提供的方法中可以访问私有的成员变量和方法
  • 如果子类重新定义父类中存在过的变量,则相当于定义一个与父类同名变量完全无关的变量,
    在子类的方法中访问子类的,在父类的方法中访问父类的
  • 在子类对象中,父类的方法中调用的方法如果被重写(override),
    则调用的是子类重写的方法,在父类对象中调用的是父类的方法
  • 如果父类中方法是私有的,则子类的同名方法不属于重写,
    而是两个完全无关的方法,和变量的使用一样
  • 所有类都是Object的子类
  • 单继承关系,子类只能有一个父类
  • instanceOf:比较操作符,用于判断对象的运行类型是否为XXX类型或其子类型

方法重载(overload)

  • 方法名相同
  • 参数列表不同(类型/个数/顺序,至少一个不同)
  • 与返回类型无关
  • 修饰符可以不同

方法重写/覆盖(override)

子类方法与父类方法的名称、返回类型、参数一样

子类方法与父类方法的名称、返回类型、参数一样

  • 子类与父类的方法返回类型要一样,或者子类方法返回类型是父类方法返回类型的子类
    (这个和方法重载的要求不一样)
    public Object getInfo(){}//父类
    public String getInfo(){}//子类

  • 子类方法不能缩小父类方法的访问权限 (记忆点:类似于要开源思想,所以不能缩小,可以扩大)

多态

  • 方法的多态:重写和重载体现
  • 对象的多态
    Animal animal = new Dog();
    //左边为编译类型,右边为运行类型

向上转型

  • 父类的引用指向了子类的对象
  • 可以调用父类中原有的成员(需遵守访问权限),具体的调用要看子类中的具体实现(例如重写)
  • 不能调用子类中特有的成员
  • 子类和父类中同名的成员变量属于两个不同的变量,不能调用子类的,可以调用父类的,(需遵守访问权限)
  • 父类私有的方法和子类中的同名方法不属于重写,不能调用子类中的同名方法

向下转型

  • 子类类型 引用名=(子类类型) 父类类型的引用名

  • 只能强转父类类型的引用,不能强转父类的对象
  • 要求父类类型的引用须指向当前目标类型的对象
  • 可以调用子类类型的所有成员

多态的应用

多态数组

  • 数组的定义类型为父类类型,里面可以保存子类类型的元素
  • 小技巧:可以使用instanceOf判断类型然后进行向下转型来调用子类特有的方法

多态参数

  • 方法定义是形参为父类类型,实参可以为子类类型

Java动态绑定机制

  • 当调用对象方法时,该方法会与该对象的内存地址/运行类型绑定
  • 当调用对象属性时,没有动态绑定,哪里声明,哪里使用