WELCOME TO XIPIAN'S BLOG|

xipian

园龄:2年11个月粉丝:1关注:0

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,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 所有类可见 所有类可见
protected 同一个包的类,子类可见 父类所在包中的类、自己和子类可见
缺省 同一个包的类可见 如果子类与父类在同一个包:只有包内其他类可见
否则:相当于private
private 仅自己可见 不可见

继承

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

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

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

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

  • 单继承关系,子类只能有一个父类

  • instanceOf:比较操作符,用于判断对象的运行类型是否为XXX类型或其子类型

方法重载(overload)

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

方法重写/覆盖(override)

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

  • 子类与父类的方法返回类型要一样,或者子类方法返回类型是父类方法返回类型的子类

    (这个和方法重载的要求不一样)

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

多态

  • 方法的多态:重写和重载体现

  • 对象的多态

    Animal animal = new Dog();
    //左边为编译类型,右边为运行类型

向上转型

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

向下转型

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

  • 只能强转父类类型的引用,不能强转父类的对象

  • 要求父类类型的引用须指向当前目标类型的对象

  • 可以调用子类类型的所有成员

多态的应用

多态数组

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

多态参数

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

Java动态绑定机制

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

本文作者:xipian

本文链接:https://www.cnblogs.com/xipian/p/17232268.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   xipian  阅读(14)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起