Java基础

来源:互联网 发布:电脑桌面软件太多 编辑:程序博客网 时间:2024/05/21 08:42

一、 初识Java

a) 语言

i. 编译型语言:C#C++winform

ii. 解释型语言:VBHTMLJsp

iii. 两者皆有:Java-----先编译,再解释

b) Java程序main()方法四要素:

i. 公有(public)、静态(static)、无返回(void)、数组参数(String[] args)

c) 19955月,Sun公司开发Java

d) 记事本开发Java程序:

i. javac  + 类名.java------>编译

ii. java + 类名 ----->运行

e) JVM--------->Java虚拟机:

i. 不同操作系统有不同版本的虚拟机,Java语言通过编译产生虚拟机可处理的字节码,将之转换成具体计算机课执行的程序。

ii. 在软件上实现,不是在硬件上实现--------->JDK

iii. 反编译的工具:jd,Font End Plus

 

 

二、 数据类型和运算符

a) 标识符(变量名)的命名规范:

i. 由字母、数字、_’或美元符号($)组成

ii. 不能以数字开头

iii. 不能是关键字

iv. 见名知义

b) 驼峰命名法:

i. 第一个单词小写,第二个单词及后续的单词首字母大写

c) 注释:

i. 单行注释------->//

ii. 多行注释------->/**/

iii. 文档注释------->/**开头*/结尾

d) 数据类型:

i. 基本数据类型:

1. 数值型:byte(1字节8位有符号),short(2字节16位有符号),int(4字节32位有符号),long(8字节64位有符号)

2. 浮点型:float(4字节32位浮点数),double(8字节64位浮点数)

ii. 字符型:char(2字节16Unicode字符)

iii. 布尔型:boolean(1字节8)

e) 引用数据类型:类,接口,数组

f) 变量:

i. 语法:[访问修饰符]变量类型 变量名[=初始值]

 

 

 

 

三、 流程控制

a) 

四、 数组

a) 定义数组:

i. 数据类型[] 数组名=new数据类型[数组长度]

数据类型 数组名[]=new数据类型[数组长度]

b) 增强for循环的语法:

i. for(元素类型 变量名:要循环的数组或集合){……}

c) Arrays类操作数组

i. 比较相等:.equals(),只有当两个数组的长度、对应位置的元素相等的时候返回true

ii. 排序:sort():升序排序

iii. 将数组转换成字符串:toString()[多个元素用英文逗号和空格分开]

iv. 将数组所有元素赋值为相同的值:fill(array,val)

v. 将数组复制成一个长度为设定值的新数组:copyOf(array,length)

vi. 查询元素在数组中的下标:binarySearch(array,val)

 

 

五、 类和对象

a) 类:具有相同属性和方法的一组对象的集合。定义了对象具有的特征(属性)和行为(方法)

i. 定义类语法:

1. [访问修饰符] class类名{

具体代码

}

ii. 属性:

1. 语法:[访问修饰符]数据类型 属性名;

2. 方法:[访问修饰符]返回值类型 方法名称(参数列表……){

代码块

}

b) 创建对象:类名 对象名= new类名();

c) 方法重载:

i. 在同一个类中;

ii. 方法名相同;

iii. 参数个数或类型不同

iv. 重载是对一般方法的一种升级

d) 作用域:

i. 成员变量的作用域:

1. 直接在类中定义的变量,定义在方法外部

2. 作用域为整个类

3. 有默认值

ii. 局部变量的作用域:

1. 方法中的变量

2. 作用域为定义它的方法或代码块

3. 没有默认值,使用前必须有初始值

e) 构造方法:

i. 语法:

1. [访问修饰符]方法名([参数列表]){

方法体

}

ii. 没有返回值,void也不能有

iii. 方法名和类名一样

f) 构造方法的重载

g) this关键字:

i. this是对象内部指代自身的引用,只能调用实例变量、实例方法和构造方法。this不能调用类变量和类方法,this不能调用局部变量。

ii. 使用this调用成员变量,解决成员变量和局部变量的同名冲突

iii. 使用this调用成员方法

iv. 使用this调用重载的构造方法,只能在构造方法中使用,只能是构造方法的第一条语句

h) 封装:

i. private修饰,设置setter/getter()方法

i) 访问修饰符:

i. 类的修饰符:

1. public

2. 默认修饰符

ii. 类成员的修饰符:

1. public

2. 默认修饰符

3. protected

4. private

j) static关键字:

i. 修饰方法-------->通过类名.方法名调用

1. 静态方法中不能直接访问实例方法和实例变量

2. 在实例方法中可以直接调用类中定义的静态变量和静态方法

六、 继承和多态

a) 继承的作用:

i. 解决代码冗余,实现代码重用

b) 语法:

i. [访问修饰符] class <SubClass> extends <SuperClass>{

 

}

ii. 子类可以继承父类的默认修饰符的属性和方法,子类和父类必须在同一个包里

iii. 无法继承父类的构造方法,只能调用

c) 使用super关键字调用父类成员

i. super用在子类中,调用父类中被屏蔽的方法和属性

ii. 语法:

1. 访问父类的构造方法:super(参数)

2. 访问父类属性/方法:super.<父类属性/方法>

d) 构造方法执行:

i. 创建父类的对象时

ii. 创建子类的对象时

iii. 当存在有参构造方法时,系统不会提供无参构造方法,需要使用者手动添加

e) 方法重写:

i. 存在继承关系

ii. 子类重写父类的方法

iii. 访问修饰符、返回值类型、方法名、参数列表必须和父类被重写方法一致

iv. 重写的方法不能缩小被重写方法的访问修饰符权限

f) 多态:

i. 继承是方法重写的前提,重写是多态的前提

g) 向上转型:

i. 语法:

1. <符类型><引用变量名>=new<子类型>();

ii. 引用变量无法调用子类特有的方法

iii. 自动进行类型转换

h) 向下转型:

i. 语法:

1. <子类型><引用变量>=(<子类型>)<父类的引用变量>;

i) instanceof:关键字左边的对象必须和关键字右边的参数所指定的类在继承上存在上下级关系

j) 多态的应用:

i. 可替换性

ii. 可扩充性

iii. 接口性

iv. 灵活性

v. 简化性

七、 抽象类和接口

a) 抽象方法:

i. 语法:

1. [访问修饰符] abstract <返回值类型> <方法名>([参数列表]);

a) 抽象方法用abstract 修饰

b) 抽象方法所在的类必须是抽象类,抽象类不一定含有抽象方法

b) 抽象类:

i. 语法:

1. public abstract class 类名称{

抽象方法;

实例方法;

}

2. 抽象方法不能被实例化

c) 接口:

i. 语法:

1. public interface 接口名{}

2. 访问修饰符只能是public

3. 接口成员是全局常量、方法是公共的抽象方法

4. 不能有私有方法,默认是public abstract

5. 成员默认是public static final

ii. 实现的语法:

1. public 类名 implements接口名{

普通方法;

实现方法;

}

2. 接口实现类必须实现接口所有方法,除非实现类是抽象类

iii. 接口继承接口:

1. [访问修饰符] interface接口名 extends父接口1,父接口2,……{

常量定义

方法定义

}

2. 接口可以多继承,不能继承类

3. 类只能单继承,但是可以实现多个接口

iv. 实现多个接口:

1. class 类名 extends父类名 implements接口1,接口2,……{

类的成员

}

v. 面向对象设计的原则:

1. 摘取代码中变化的行为,形成接口

2. 多用组合,少用继承

3. 针对接口编程,不依赖于具体实现

4. 针对扩展开放,针对改变关闭

 

 

 

八、 异常

a) 异常:在程序运行中发生的不正常事件,会中断正在运行的程序

b) 异常体系结构:

i. 异常的父类-------->throwable

ii. Error类:

iii. Exception类:

1. 运行时异常:RuntimeException所有子类

2. 检查异常:

iv. 常见异常:

Exception

异常层次结构的父类

ArithmeticException

算术错误情形,如以零作除数

ArrayIndexOutOfBoundsException

数组下标越界

NullPointerException

尝试访问 null 对象成员

ClassNotFoundException

不能加载所需的类

IllegalArgumentException

方法接收到非法参数

ClassCastException

对象强制类型转换出错

NumberFormatException

数字格式转换异常,如把"abc"转换成数字

 

v. try-catch

1. void plrintStackTrace():输出异常的堆栈信息

2. String getMessage():返回异常信息的描述字符串

vi. try-catch-finally

1. 无论是否发生异常,finally代码块中的语句总会被执行

2. try-catch中存在return时,先执行finally,再执行return

3. 唯一不执行finally的是try-catch中有System.exit(1)语句

vii. 多重catch

1. 排列顺序是:必须是从子类到父类,最后一个一般是Exception

viii. 使用throws声明抛出异常:

1. 声明某个方法可能抛出的各种异常以通知调用者使用tyr-catch捕获或者继续向上抛出

2. main()方法抛出的异常由虚拟机处理。

3. 位于方法参数列表后面,不能单独使用

4. 可以跟异常类,而且可以是多个

ix. 使用throw抛出异常:

1. 手动抛出异常,可以单独使用,位于方法内部

2. 抛出异常对象,只能是一个

0 0
原创粉丝点击