java查漏补缺(基础篇)

Ⅰ:基础篇

1:java的发布

java发布晚于C++,在许多内容上十分接近C++;

2:java的就业方向

  • Web开发
  • Android开发
  • 客户端开发
  • 嵌入式应用

3:java跨平台性

源代码在编译后变成后缀名为 .class 的文件,然后通过 java虚拟机(JVM) 作为媒介,在不同的平台上运行;因此作为"红娘"的 JVM 是不能跨平台的而 .class 是可以跨平台的;

4:java的版本

  • J2SE(Java SE) 标准版(Java学习入口)
  • 主要用于开发客户端J2EE(Java EE) 企业版
  • 功能最丰富,常用于web开发与庞大的管理软件,符合企业的需求J2ME(Java ME) 微型版(Java的初衷)
  • 主要用于嵌入式和移动开发

5:导入java类文件

  • import 包名.类名 //导入具体包中的具体类
  • import 包名.* //导入具体包中的全部类

6:不同进制的表示方法

  • 二进制:0b
  • 八进制:0
  • 十六进制:0x
  • 例如:011 就是八进制的11,相当于十进制的9;123_456_789 也表示123456789,java编译器会删除下划线,但是增加的代码的可读性

7:数据类型的转换

  • 自动类型转换
    从左往右,逐渐转换byte,short,char-int-long-float-double
  • 强制类型转换
    在数据前加括号,括号里写上目标类型;如:(int)3.14 ,转换后变成3;

8:运算符

int b = 10 ; int a = b++; //此时a = 10;b = 11;
a = ++b; //此时a = 11;b = 11;

9:大量数据下StringBuffer类与StringBuider类 对 Sting类的强势碾压

  • StringBuffer
    该类的方法侧重于对字符串进行操作,在对大量字符串进行操作时优势明显,多线程安全
    • 声明方法: new StringBuffer()//分配16字节长度的缓冲区 或 new StringBuffer(num)//分配num字节长度的缓冲区 方法:
    • append(内容) //往当前字符串后添加内容
    • deleteCharAt(num) //删除字符串中指定num下标的字符;也可以用(num1,num2)删除[num1,num2)之间的字符
    • insert(num,"内容") //在指定位置添加内容
    • setCharAt(num,'另一个字符') //把指定的下标的字符替换成另一个字符
  • StringBuilder
    与StringBuffer类似,但速度相对来说更快,但是线程不安全,建议在单线程下使用

10:java中创建对象时的运行顺序

  1. 从main方法作为入口
  2. 在遇到new时执行类的构造方法的签名
  3. 初始化类的属性
  4. 执行构造方法的代码块
  5. 回到main方法中的下一行

11:包装类

  • 基本数据类型与对应的包装类
  • byte -- Byte
  • short -- Short
  • int -- Integer
  • long -- Long
  • char -- Character
  • float -- Float
  • double -- Double
  • boolean -- Boolean
    装箱与拆箱
  • int num = 10; Integer n = new Integer(num); //将基本数据类型变为包装类称作装箱;
  • int m = n; //将包装类变成基本数据类型称为拆箱;

12:源文件

  • 只能有一个public类,可以有多个非public类
  • 定义在某个包中时,package语句在首行
  • import语句在package之后,在类定义之前
  • package与import对源文件中的所有类都有效

13:package包

  • 层级表示
  • 目录的层级表示: '/' 例:D:/Java
  • 包中的层级表示: '.' 例:pack.pac1.Test 相当于目录中的/pack/pac1/Test.class
    包的调用
  • 用new关键字调用时,需要在方法前添加完整的包名
    例如:java.util.Date day = new java.util.Date() ; //
  • 通过import引入包中的类,使用'*'可以引入具体包中所有的类
    访问权限
  • public : 公共的
  • private : 只能在本类中使用
  • 无修饰符 : 只能在本包中的类访问

14:继承

  • 类继承
  • extends关键字
  • 子类可以调用父类的属性
  • 子类可以重写(覆写)父类的方法
  • 构造方法不能被继承
    super关键字
  • 与this关键字类似,this表示当前类的实例,super表示父类
  • super.方法名() 可以调用父类中的方法
  • 构造方法中可以用 "super(参数);" 来调用父类的构造方法;如果编写子类的一个构造方法而未用super,编译器会自动插入一个不带参数的调用父类构造方法的方法;
    方法的覆盖
  • 覆盖父类方法的返回类型,方法名称,参数列表必须与原方法相同;
  • 被覆盖方法不能有 final,private,static 关键字

15:多态

  • 三个必要条件
  • 存在继承
  • 存在重写
  • 父类变量引用子类实例
    多态的本质
    假设:
      People student = new Student();
      student.func(num);
    1. 编译器会列举出Student类中所有的func方法和父类 Peoole中访问修饰符为 public 的 func方法
    2. 重载解析:通过传入的参数类型与数量对方法进行筛选,挑选出满足传入参数标准的方法;如果没有找到,会进行自动类型转换后继续查找,如果依旧无法匹配,报错
    3. 通过静态绑定或动态绑定对找到确切的方法(动态绑定静态绑定
  • But:为了增加速度,JVM提前为每一个类都创建了一个方法表,便于查找,增加了调用时的速度;
    instanceof运算符
  • 可以判断一个变量所引用的对象的实际类型,但它表示的是引用的对象的类型,并不是变量自身的类型
  • 所有的对象 instanceof Object 时,都会返回true
  • 当前对象 instanceof 当前类/父类 时,会返回true
    多态对象的类型转换
  • 向上转型是子类转成父类;向下转型是父类转成子类;
  • 向上转型:通常用到的父类变量,子类对象,这个过程就是向上转型
  • 向下转型:有时为了调用子类的功能,完成父类没有办法做到的事情,我们就需要向下转型;但是向下转型不能直接父类对象强制类型转换成子类,必须先向上转型,然后强制类型转换成子类
  • 因为不正常的向下转型会通过编译,但是会运行失败,因此需要通过 instanceof 运算符进行判断,如果父类是子类的实例(向上转型),那么可以转换成子类,否则不可以执行转换;

16:静态

  • static关键字与静态方法
  • static在类被装载时会被初始化,并且共享这块内存
  • 静态方法只能访问静态变量
  • 静态方法也可以通过对象来访问,但会爆出警告
  • 静态方法不能被非静态方法覆盖
  • 构造方法无法声明为static
  • 局部变量不能声明成static
  • 静态方法中不存在当前对象,因此不能使用this关键字与super关键字
    静态初始器与导入
  • 静态初始器: static{ 代码 } //在类装载(第一次使用)时执行一次,可以初始化静态变量
  • 静态导入:导入静态类或静态方法,用: import static XXX 来导入静态类/方法,在使用导入的方法时也可以直接使用方法名调用;

17:final关键字

  • final修饰后的特点
  • 类:不能继承
  • 方法:不能覆写
  • 变量:成为常量,只能赋值一次,变量名称按照惯例全部大写
    其他知识点
  • static 与 private 修饰过的方法会被隐式声明为 final
  • 因为final修饰的方法为静态绑定,因此不会产生多态,在程序运行时可以提高效率,但经过优化的JVM在内联等方面依旧存在优势

18:Object类

  • 特点
  • 定义java类时名有明确的继承,则会默认extends Object;
  • 除了基本类型外,其他的(包括基本类型数组)都是对象,继承Object类;
    方法
  • equals() //判断一个对象是否等价于另一个对象,只能比较引用类型
  • hashCode() //两个对象相同,则他们的hashCode值相同;但两个hashCode值相同的对象不一定是相同的对象;
  • toString() //默认下会返回当前对象的类型和内存地址,可以在类中进行覆写来得到更加有用的信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值