Java基础和面向对象
一、数据类型和运算符
- 标识符
- 组成:字母、数字、下划线、$
- 首字母:不能是数字
- 见名知义
- 不能是关键字(48个)
正确的:name、name123、age、_name、$name
错误的:1name、public、123、na%me
标识符主要给一个元素起名字,需要符合起名字的以上4种规则。比如说,类的名字:首字母大写;变量名称:小写;方法名称:驼峰命名;数组名称、接口名称、集合名称。
//你定义为汉字也可以,不过不推荐,因为国际语言以English为主。为了面向世界,使用字母吧。
- 变量:值可以改变的量
举例:int age; int data = 5;
- 常量:值确定后无法再改变的量。final
- 数据类型
n 值类型(基本数据类型)
4大类8小种:
² 整型:byte、short、int、long
² 浮点型:float、double
² 字符型:char 值需要被单引号包裹
² 布尔型:boolean 值只能是true和false
n 引用类型
//类型转换:占用字节少的,可以赋值为占用字节大的类型。比如可以定义:long a =5;
double f = 1.65f ; double m = 90;
默认整型是int 类别,小数型是double。Char是用单引号‘’,String使用双引号“”(英文)。
- 运算符
n 赋值运算符:=
n 算术运算符:+ - * / %
n 逻辑运算符:&& || ! ^
True && true = true |
False && true = false |
True && false= false |
False && false= false |
True && true = true |
False && true = true |
True && false= true |
False && false= false |
True ^ true = false |
False ^ true = true |
True ^ false= true |
False ^ false= false |
! true = false |
! false= true |
//一般使用短路运算,为了提高计算机的运算效率。对于
&& 与运算符,第一个为false,不会计算第二个表达式;
|| 或运算符,第一个为true ,不会计算第二个表达式;
n 关系运算符:>、<、>=、<=、==、!=
n 自增自减:++、--
int a = 5; a++;++a;--a;a--;
n 三元运算符:
只有1个: 布尔表达式 ? 表达式一 : 表达式二
int a = 5 != 6 ? 7 : 9; boolean result = 5==5 ? true:false;
二、流程控制
- 分三种:顺序、选择、循环
- 选择:if – else、switch
n if – else:
格式一 |
格式二 |
格式三 |
if( 布尔表达式 ){ } |
if(布尔表达式){ }else{ } |
If(布尔表达式){ }else if(布尔表达式){ }……{ }else{ } |
n 语法格式:
switch(变量){ case 值1: … … break; case 值2: … … break; …… default: break; } |
n 比较:范围比较用If-else,如果只固定的几个等值则使用switch。
//注意break 与 return的区别。Break是退出这个循环,return是退出这个方法(函数)。
- 循环:while、do-while、for
While循环: While(条件判断){ 程序代码 变量发生改变 } |
do-while循环: do{ 程序代码 变量发生改变 }while(条件判断); |
For 循环: For(变量;条件判断;变量变化){ 程序代码 } |
While中主体的程序代码中,变量一定要变化,否则易成为死循环,for中变量在最后,也需要发生变化。一般是循环的步骤如下:先判断条件---执行代码----变量变化----条件判断------执行代码……
Do-while至少会执行一次程序代码。
三、数组
- 存储数据类型相同的一组数据。
- 语法: 数据类型[] 变量名 = new 数据类型[长度];
举例:int[] scores = new int[20];
- 注意事项:
n 数组的长度一旦确定后,就无法改变
n 数组的四个要素:数组名、下标、元素、长度
n 数组中的每一个元素都有1个下标相对应
n 数组的下标从0开始
n 数组的长度:数组名.length
- 示例
int[] scores = new int[5]; //赋值 scores[0] = 5; Scanner input = new Scanner(System.in); For(int I = 0; I < scores.length; i++){ Scores[i] = input.nextInt(); } //取值(循环) For(int item : scores){ System.out.println(item); } |
四、类和对象
- 对象:万事万物皆对象
- 类:具体相同属性和方法的对象的集合
- 语法: 访问修饰符+类名
- 注意事项
n 类是抽象的,对象的具体的。
n 类名首字母大写
n 实例化类的对象: 类名 对象名 = new 类名();
- 方法
语法:访问修饰符 返回值类型 方法名(参数列表){… …}
示例:public void test(){
}
调用:对象名.方法名()进行调用
- 静态方法
定义:被static修饰的方法就是静态方法。
调用:类名.方法名()进行调用
- this 调用当前类里面的方法或属性,使用this
- super调用父类里面的方法或属性,使用super
- 方法的重载
定义:在一个类中,存在方法名相同,参数列表不同的多个方法。
注意:参数列表不同(参数个数不同、参数类型不同、参数顺序不同)
10.构造方法
特点:构造方法的方法名和类名相同;没有返回值类型。
//构造方法就是在构建此类对象的时候使用,可以提高创建对象的效率。
五、封装和继承
封装:将属性的访问修饰符设置为private ,同时添加get获取以及set设置方法的过程,成为封装。
封装主要是减少子类对父类属性的随意修改,可以在set方法中添加一些判断条件,控制子类对象对其进行修改的操作。
继承就是子类对象可以通过.方法名/属性名 的方式获取父类的public修饰的属性或方法,而父类不能调用子类特有的属性或方法。即逻辑上子类对象可以调用父类,父类对象不能调用子类。
六、继承和多态
多态:同一父类的多个子类对象,在执行父类方法的时候,可以输出不同的值,就叫多态。
多态的前提是方法的重写和继承的特性。
子类重写了父类的方法,所以在执行子类对象的时候,就会使用与父类不同的代码,从而输出不同的结果。
如果没有重写父类方法,就执行父类方法中的代码。
//多态的方法,一般设置为static类型,方便调用,可以减少创建对象的代码
Public static (返回值类型) 方法名(父类 参数){
参数.父类的方法名/属性;
参数.父类的方法名/属性;
}
Main(){
方法名(子类对象1);
方法名(子类对象2);
……………
}
七、抽象类和接口
抽象方法:public abstract 方法名();
一般不好表达的方法,或者对于子类都有此行为,但是每一种子类此种行为方式都不一样时候使用。
即所有的子类都需要重写父类的方法中的一部分的时候,就可以使用抽象方法。
其目的是为了最终使用的时候,使用多态,减少程序的代码量。
包含抽象方法的类,肯定是抽象类。抽象类可以不包括抽象方法,但不包括抽象方法一般不建议创建抽象类。
接口:一组抽象方法的集合就叫做接口。
接口中都是抽象方法,是为了解决子类只能继承一个父类,而子类中需要不同方法的情况。
一个子类可以有多个接口,从而扩宽了抽象方法的应用面。
接口的定义 :
访问修饰符 + interface+接口名{
抽象方法1;
抽象方法2; //接口中的抽象方法不需要加abstract
}
继承接口:
访问修饰符 类名 + implements+接口1.接口2,…..{
}
类继承抽象类,就必须实现抽象类中的所有抽象方法。
类继承接口,就必须实现接口中所有的方法。
八、异常与调试
定义:异常是指在程序运行过程中所发生的不正常的事件,它会中断正在运行的程序。
关键字:try、catch、finally、throw、throws
try:执行可能产生异常的代码
catch:捕获异常,编写处理异常的代码
finally:无论是否发生异常,都要执行的代码块
throw:手动抛出异常
throws:声明方法可能要抛出的各种异常
1.try代码块有可能出现异常也可能不会出现异常
2.只有try代码块出现异常时,catch代码块才会执行
3.try中的代码块一旦出现异常,那么出现异常后面的代码不会继续执行。
4.ex.printStackTrace()方法用于向控制台打印输出异常堆栈信息(在执行哪一行代码时出现什么异常)
5.如果出现的异常类型和catch块中异常的类型匹配,那么才会执行catch块中的代码,否则不执行。
6.所有异常类均直接或间接继承自类Exception
7.多重catch 在try代码块后,包含了多个catch代码块
8.多重catch时,Exception一定要放在最后
9.System.exit(1);表示强制性退出系统。
10.try-catch-finally结构中try语句块是必须的,catch、finally语句块均可选,但两者至少出现之一
11.try-catch块中存在return语句,是否还执行finally块,如果执行,说出执行顺序
常见的异常
1.ArrayIndexOutOfBoundsException 数组下标越界异常
2.NullPointerException 空指针异常
3.NumberFormatException 数字格式化异常
4.ArithmeticException 算术运算异常
5.Exception 所有异常的父类