java第一阶段整理

  1. java开发环境:
  1. JVM:加载.class并运行.class源文件
  2. JRE:包含JVM和系统类库
  3. JDK:包含JRE和java开发工具包
  1. 变量:
  1. 声明:只能包含字母、数字、_和$,不能一义数字开头
  2. 严格区分大小写
  3. 不能使用关键字
  4. 允许用中文命名但不建议,采用“英文见名知意”使用小驼峰命名法
  1. 八种基本类型:

1)byte:字节型,用于储存整数的,占用1个字节,范围-128到127。

2)short:短整型,用于储存整数的,占用2个字节,范围-32768到32767。

3)int:整型,用于储存整数的,占用4个字节,范围-2^31到2^31-1。

4)long:长整型,用于储存整数的,占用8个字节,范围是-2^63到2^63-1。

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

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

7)boolean:布尔型,用于储存true或false,占用1个字节。

8)char:字符型,采用Unicode字符码编码格式,用于储存单个字符,占用2个字节。范围是0到65535。

  1. 类型之间的转换:

基本类型由小到大依次为:

​ byte----short----int----long----float----double

      char----

1)两种方式:

自动/隐式类型转换:小类型到大类型强制类型转换:大类型到小类型强制转换可能会发生溢出

  1. 两点规则:

整数直接量可以直接赋值给byte,short,char,但是注意不要超出范围

byte,short,char参与运算时,系统会先将这三种类型自动转换为int型,在运算

  1. 运算符:

算术:+,-,*,/,%,++,–

关系:>,<,>=,<=,==,!= boolean

逻辑:&&,||,! boolean

赋值:=,+=,-=,*=,/=,%=

字符串连接:+

条件/三目:boolean?数1:数2

  1. 分支结构

if结构:一条路。if...else结构:两条路。if....else if 结构:多条路。

Switch...case结构:多条路,break跳出Switch判断。

  1. 循环结构:

循环三要素1.循环变量的初始化2.循环的条件(以循环变量为基础)3.循环变量的改变(向着循环的结束变)。break:跳出循环。continue:跳出循环体中剩余语句进行下一次循环

while结构:先执行后判断,有可能一次都不执行

do...while结构:先判断后执行,至少执行一次

for循环结构:应用率高、与次数相关。

  1. 数组

数组是一种引用数据类型,相同类型元素的集合,通过(数组名.length)可以获取数组的长度(元素个数),数组下标从0到数组长度减一。

数组的赋值方法:

System.arraycopy(a,1,b,0,4);

int[] b = Arrays.copyOf(a,6);        a = Arrays.copyOf(a,a.length+1); //数组的扩容

  1. 方法

方法的五要素:修饰词,返回值类型,方法名,参数列表,方法体。

return:结束方法的执行

return 值:结束方法的执行,返回结果给调用方。

方法的调用:

无返回值:方法名(有参传参);

有返回值:数据类型 变量 = 方法名(有参传参);

二、面向对象

1. 类和对象、方法的重载

对象:软件中真实存在的单个个体/东西       类:类别/类型,代表一类个体

类是对象的模板,对象是类的具体的实例

类中包含:对象的属性/特征---------成员变量         对象的功能/行为/动作-----------方法

方法的重载:

发生在同一类中,方法名相同,参数列表不同

编译器在编译时会根据方法的签名自动绑定方法

2. 构造方法、this

构造方法:

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

与类同名、没有返回值类型

在创建(new)对象时被自动调用

若自己不写构造方法,则编译器默认提供一个无参构造方法,若自己写了,则不再默认提供

构造方法可以重载

this:

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

this.方法名()---------------------------------调用方法

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

3. 引用类型数组、继承、super

继承:

作用:代码复用

通过extends来实现继承

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

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

派生类可以访问派生类的和超类的,超类不能访问派生类的

一个超类可以有多个派生类,但一个派生类只能有一个超类------单一继承

具有传递性

super:

super.成员变量名--------------------------访问超类的成员变量

super.方法名()-------------------------------调用超类的方法

super()-----------------------------------------调用超类的构造方法

4. 向上造型、方法的重写

向上造型:

超类型的引用指向派生类对象,能点出来什么,看引用的类型。

方法的重写:

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

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

重写与重载的区别:

重写(override/overriding):发生在父子类中,方法名相同,参数列表相同

重载(overload/overloading):发生在同一类中,方法名相同,参数列表不同

5. package和import、访问控制修饰符、static、final

package:声明包

作用:避免类名的冲突

同包中的类不能同名,不同包中的类可以同名

类的全称:包名.类名,包名常常有层次结构

建议:包名所有字母都小写

import:

同包中的类可以直接访问,不同包中的类不能直接访问

权限修饰符:

public:公开的,任何类

private:私有的,本类

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

默认的:什么也不写,本类、同包类

注意:

类的访问权限只能是public或默认的

类中成员的访问权限如上4种都可以

访问权限由高到低依次为:public>protected>默认的>private

static:

静态变量:

由static修饰

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

常常通过类名点来访问(也可以用对象名来引用,但是不推荐)

何时用:所有对象所共享的数据(图片、音频、视频等)

静态方法:

由static修饰

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

常常通过类名点来访问(也可以用对象名来引用,但是不推荐)

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

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

静态块:

由static修饰

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

何时用:加载/初始化静态资源(图片、音频、视频等)

final:

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

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

修饰类:类不能被继承

6. static final常量、抽象方法、抽象类

static final:

必须声明同时初始化

由类名点来访问,不能被改变

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

编译器在编译时会常量直接替换为具体的数,效率高

抽象方法:

由abstract修饰

只有方法的定义,没有具体的实现(连{}都没有)

抽象类:

由abstract修饰

包含抽象方法的类必须是抽象类,不包含抽象方法的类也可以声明为抽象类

抽象类不能被实例化(new对象)

抽象类是需要被继承的,派生类:

重写所有抽象方法

也声明为抽象类

7. 成员内部类、匿名内部类

成员内部类:

类中套类,外面的称为外部类,里面的称为内部类

内部类通常只服务于外部类,对外不具备可见性

内部类对象只能在外部类中创建

内部类中可以直接访问外部类的成员(包括私有的),在内部类中有个隐式的引用指向了创建它的外部类对象------外部类名.this

匿名内部类:

若想创建一个类(派生类)的对象,并且对象只创建一个,此时该类不必命名,称为匿名内部类

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

8. 接口

是一种引用数据类型

由interface定义

只能包含常量和抽象方法

接口不能被实例化(new对象)

接口是需要被实现/继承的,实现类/派生类:

----必须重写所有抽象方法

一个类可以实现多个接口,用逗号分隔,若又继承又实现时,应先继承后实现

接口可以继承接口

9. 多态

向上造型/自动类型转换:

超类型的引用指向派生类的对象

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

能造型成为的数据类型有:超类+所实现的接口

强制类型转换,成功的条件只有如下两种:

引用所指向的对象,就是该类型

引用所指向的对象,实现了该接口或继承了该类

10. 内存管理

堆:

存储new出来的对象(包括实例变量)

垃圾:没有任何引用所指向的对象

垃圾回收器(GC)不定时到内存中清扫垃圾,回收过程是透明的(看不到的),

不一定一发现垃圾就立刻回收,通过调用System.gc()可以建议JVM尽快调度GC回收

实例变量的生命周期:

​创建(new)对象时存储在堆中,对象被回收时一并被回收

内存泄漏:不再使用的对象没有被及时的回收,严重的泄漏会导致系统的崩溃

栈:

存储正在调用的方法中的局部变量(包括方法的参数)

调用方法时,会在栈中为该方法分配一块对应的栈帧,栈帧中存储局部变量(包括方法的参数),方法调用结束时,栈帧被自动清除,局部变量一并被清除

局部变量的生命周期:

​调用方法时存储在栈中,方法调用结束时与栈帧一并被清除

方法区:

存储.class字节码文件(包括静态变量、所有方法)

方法只有一份,通过this来区分具体的访问对象

API基础:

1. String常用方法、StringBuilder

String常用方法:

length():获取字符串的长度(字符个数)

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

toUpperCase()和toLowerCase():将当前字符串中的英文部分转为全大写/全小写

startsWith(String str)和endsWith(String str):判断当前字符串是否是以给定的字符串开始/结尾的

charAt():返回当前字符串指定位置上的字符

indexOf()和lastIndexOf():检索给定字符串在当前字符串中的开始位置

substring():截取当前字符串中指定范围内的字符串

String的静态方法valueOf():将其它数据类型转换为String

StringBuilder常用方法

append():追加内容

replace():替换部分内容

delete():删除部分内容

insert():插入内容

reverse():翻转内容

2. 正则表达式、Object、包装类

正则表达式:

正则表达式是用来描述字符串内容格式,使用它通常用来匹配一个字符串的内容是否符合要求

包装类:

包括:Integer、Character、Byte、Short、Long、Float、Double、Boolean。

其中Character和Boolean是直接继承自Object的,而其余6个包装类都继承自java.lang.Number

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值