第一阶段知识点

1.java编译运行过程

  编译期:.java源文件---编译---->.class字节码文件

  运行期:JVM加载.class并运行.class(0和1)

  特点:跨平台,一次编译到处运行

2.名词解释

  JVM:java虚拟机

          加载.class并运行.class

JRE:java运行环境

          除了包含JVM以外还包含了运行java程序所必须的环境

         JRE=JVM+java类库(小零件)

JDK:java开发工具包

          除了包含JRE以外还包含了运行java程序所必须的环境

         JDK=JRE+编译、运行等命令工具

3.

运行java程序的最小环境是JRE

开发java的最小环境是JDK

4.命名规则

  只能包含字母,数字,下划线和$符,不能以数字开头

  严格区分大小写

  不能使用关键字

  允许中文命名,但不建议;见名知意,小驼峰命名法

5.八大基本类型

  byte:字节型,用于存储整数,占用1个字节(-128~127)

  short:短整型,用于存储整数,占用2个字节(-2^15~2^15)

  int:整型,用于存储整数,占用4个字节(-2^31~2^31)

  long:长整型,用于存储整数,占用8个字节(-2^63~2^63)

  float:单精度浮点数,用于存储小数,占用4个字节,不能表示精确值

  double:双精度浮点数,用于存储小数,占用8个字节,不能表示精确值

  boolean:布尔型,用于存储true和false,占用1个字节

  char:字符型,采用unicode编码,用于存储单个字符,占用2个字节

6.类型间的转换

  自动/隐式类型转换:小--->大

  强制类型转换:大---->小

  注意:强转可能会丢失精度

7.两点规则

  整数直接量可以直接赋值给byte,short,char,但不能超范围

  byte,short,char参与运算,一律转换为int在运算

8.三种循环的选择

  循环若与次数相关,采用for循环

  若循环变量的初始化与循环变量的改变相关用do while

  无关用while

9.break与continue

  break:跳出循环

  continue:跳出剩余语句进入下一次循环(只能用在循环中)

10.方法

  封装了一段特定的业务逻辑功能

  一个方法只做一件事

  方法可以被反复调用多次

  减少代码重发,有利于代码维护

11.return的作用

  结束方法的执行

  返回结果给调用方

12.类和对象

  现实生活中由很多对象组成的,基于对象抽象出类

  对象:软件中真是存在的单个的个体/东西

  类:代表一类个体

  一个类可以创建多个对象

13.什么是构造方法?构造方法的作用是?

  与类同名,没有返回值类型(void都没)

  new对象时被调用

  不写默认有原参,写了则覆盖

  构造方法可以重载

  作用:给成员变量赋初始值

14.什么是this?this的用法?

  指代当前对象,哪个对象调用方法就指向哪个对象

  只能用在方法中,方法中访问成员变量之前,默认有this

  用法:

  this.成员变量名--------------------访问成员变量

  this.方法名()------------------------调用方法(可以省略)

  this()----------------------------------调用构造方法

16.引用类型数组:

  给引用类型数组元素赋值需要new一下

  若想访问对象的属性和调用方法,需要通过数组元素打点

17.什么是继承?继承的作用?

  通过extends去继承

  超类/父类:共有的属性和行为

  派生类/子类:特有的属性和行为

  单一继承

  子可访父,父不访子

  具有传递性

  在子类构造中,若没调用父类构造,则默认super()调用父类的无参构造,若子类调用了则不再默认提供。

  super()调用超类构造方法,必须放在派生类构造的第一行

  作用:代码复用

18.向上造型(多态)

  左父右子

  能点出什么来要看引用的类型

19.重写(override)

  发生在父子类之间,方法名相同,参数列表也相同

  重写方法被调用看对象的类型

  遵循“两同两小一大“规则

        两同:方法名相同,参数列表相同

        两小:子类方法返回值类型<=父类;void和基本类型必须相等;子类抛出的异常<=父类

        一大:子类的访问权限>=父类

20.重载

  发生在同一个类中

  方法名相同,参数列表不同(类型或顺序不同)

  与修饰符和返回值类型无关

21.package声明包

  同包的类不同名,不同包的类可同名

  类的全称:包名.类名

22.import导入类

  同包中的类可以直接访问,不同包中的类不能直接访问,若访问,先import导入类再访问类

23.访问修饰符

  public公开的---------任何类

  private私有的--------本类

  protected受保护的-----本类,派生类,同包类

  默认-----------------------本类,同包类

24.final最终的,不可改变的

  修饰变量:变量不能被改变

  修饰方法:方法不能被重写

  修饰类,类不能被继承

25.static静态的

  静态变量:

         由static修饰

         属于类,存储在方法区中,只有一份

         常常通过类名.来访问

         何时用:所有对象所共享的数据

  静态方法:

          由static修饰

          属于类,存储在方法区中,只有一份

           常常通过类名.来访问

           静态方法中没有隐式this传递,所以不能直接访问实例成员

           何时用:方法的操作与对象无关

  静态块:

           由static修饰

           属于类,在类被加载期间自动执行,因为一个类只被加载一次,所以静态块也只执行一次

           何时用:加载/初始化静态资源

26.static final常量

  必须声明同时初始化

  常常通过类名访问,不能改变

  建议:常量的所有字母都大写,多个单词用_分隔

  编译器在编译时会将常量直接替换为具体的值

  何时用:数据永远不变并且经常使用

27.抽象方法

  由abstract修饰

  只有方法的定义,没有方法体

28.抽象类

  由abstruct修饰

  包含抽象方法的类必须时抽象类

  抽象类不能被实例化

  抽象类是需要被继承的

  抽象类的意义:封装所有的属性和行为(代码复用);为所有派生类提供统一的类型(向上造型);可以包含抽象方法,为所有派生类提供统一的入口(造型之后能点出来);可以达到强制重写的目的。

29.匿名内部类

  何时用:若想创建一个类的对象,并且对象只被创建一次,可以设计为匿名内部类。

  在匿名内部类中不能修改外面局部变量的值,因此在此处该变量会默认为final的

30.接口

  是一种引用数据类型

  由interface定义

  只包含常量和抽象方法

  不能被实例化

  接口是需要被实现/继承的,实现类必须重写接口中所有的抽象方法

  一个类可以实现多个接口,用逗号分隔;如果既有继承又有实现,应该先继承后实现

  接口可以实现接口

31.多态

  同一对象被造型为不同类型时,有不同的功能。

  同一类型的引用指向不同的对象时,有不同的实现。

   向上造型/自动类型转换:左父右子;能点出什么看引用的类型;能向上造型成为的类型:超类+所实现的接口;

   向下造型/强制类型转换:引用所指向的对象,就是该类型;引用所指向的对象,实现了该接口或继承了该类;

  如若强转不符合,会出现classcastException

  建议:在进行强制转换前一定要先通过instance of来判断引用对象是否是该类型

32.内存管理

  堆:存储new出来的对象(实例变量,数组元素)

  栈:存储方法中局部变量(包括方法的参数)

  方法区:存储.class字节码文件(静态变量,所有方法)

33.string

  java.lang.string使用final修饰,不能被继承

  string的底层封装的是一个字符数组

  string在内存中采用unicode编码格式,每个字符占用两个字节空间

  字符穿一旦创建,对象内容永远无法改变,但字符串引用可以重新赋值

34.字符串常量池

  java对string字符串有一个优化措施:字符串常量池

  java推荐我们使用字面量/直接量的方式创建对象,并且会缓存所有以字面量形式创建的字符串对象到常量池中,当使用相同字面量在创建对象是将会复用常量池中的对象,以减少内存开销

35.String常用API

  length()---------获取字符串长度

  trim()------------去除当前字符串两边的空白字符

  toUpperCase()/toLowerCase()--------字符串串中英文全转大写/小写

  startsWith()/endsWith---------------判断字符串以给定的字符开始/结束

  charAt()返回指定位置的字符

  indexOf()/lastIndexOf()------------------检索给定字符从当前字符串中开始位置/最后一次的出现位置

  substring()-----------截取指定范围内字符

  静态valueOf()------------将其他数据类型转换为string

36.StringBuilder

    由于String是不变对象,每次修改都要创建新的对象,所以java提供了StringBuilder

     StringBuilder是专门修改字符串的一个类,内部维护了一个可变的char数组,所做的修改都是在char数组上进行的,并且修改速度,性能都非常优秀。

37.StringBuilder和StringBuffer的区别

  StringBuffer:可变字符串,效率低,线程安全

  StringBuilder:可变字符序列,效率高,线程不安全

38.StringBuilder的常用方法

  append()--------------追加内容

  delete()------------删除部分内容

  replace()-----------替换部分内容

  insert()--------------插入内容

39.String与正则相关方法

  matches():用正则表达是验证当前字符是否符合要求,是返回true,还是false

  replaceAll():将当前字符串中满足正则表达是的部分替换为给定的字符串

  split():将字符串中满足正则表达式的部分拆分,并将拆分出的以String形式返回

38.Object

     所有类的鼻祖

     toString和equils

     在object中toString返回的是类的全称@地址,没意义,因此要重写

     在object中equals比较的是地址,所以需要重写比较值

     注意:String和StringBuilder都重写了toString,而String重写了equals,StringBuilder没写

39.包装类

   目的:解决基本类型不能直接参与面向对象的开发问题

   Integer,Charater,Byte,Short,Long,Float,Double,Boolean

   Charater,Boolean直接继承object类

   其余继承java.Lang.Number类

           

  

  

                   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一个人远眺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值