文章目录
- 1. 变量、数据类型转换、运算符
- 1.1 变量
- 1.2 数据类型转换
- 1.2.1强转的注意事项
- 1.3 进制的转换
- 1.4 位运算符
- 1.5 运算符
- 1.6 三元运算符
- 2. 流程控制
- 2.1 键盘录入_Scanner
- 2.2 Random随机数
- 2.3 switch(选择语句)
- 2.4 分支语句
- 2.5 循环语句
- 3. 数组
- 3.1 数组的定义
- 3.2 数组操作
- 3.3 一维数组内存图
- 3.4 二维数组
- 3.5 二维数组内存图
- 3.6 方法的重载
- 4. 类与对象
- 4.1 一个对象的内存图
- 4.2 俩个对象的内存图
- 4.3 两个对象指向同一片空间内存图
- 5. 封装
- 5.1 private关键字
- 5.2 this关键字
- 5.3 static关键字
- 6. 继承
- 6.1 方法的重写
- 6.2 继承构造方法
- 6.3 super关键字
- 6.4 this关键字
- 6.5 继承的特点
- 7. 抽象
- 7.1 抽象介绍
- 7.2 抽象的注意事项
- 8. 接口
- 8.1 接口的定义与使用
- 8.2 接口中的静态方法
- 8.3 接口中的成员变量
- 8.4 final关键字
- 8.5 接口的特点
- 9. 多态
- 9.1 多态的介绍
- 9.2 成员变量和成员方法的调用
- 9.3 多态中的转型
- 10.权限修饰符
- 11. 代码块
- 11.1 常规格式
- 11.2 静态代码块
- 12. 内部类
- 12.1 静态成员内部类
- 12.2 匿名内部类
- 面试
- 1. 形式参数和实际参数区别
- 2. 成员变量和局部变量的区别
- 3. 面向对象三大特征?
- 4. 接口与抽象类的区别
- 5. 多态方式与原始new对象的区别
- 工具的使用
- 1. IDEA的创建流程
1. 变量、数据类型转换、运算符
1.1 变量
-
变量的数据类型:
基本数据类型:4类8种
整型:byte short int long
浮点型:float double
字符型:char
布尔型:boolean引用数据类型: 类 数组 接口 枚举 注解
-
定义:
a.数据类型 变量名 = 值;b.数据类型 变量名;
变量名 = 值;c.连续定义三个相同类型的变量
数据类型 变量名1,变量名2,变量名3;
变量名1 = 值;
变量名2 = 值;
变量名3 = 值; -
【注】
字符串不属于基本数据类型,属于引用数据类型,用String表示String是一个类,只不过字符串在定义的时候可以和基本数据类型格式一样
-
float和double的区别
a. float的小数位只有23位二进制,能表示的最大十进制为2的23次方(8388608),是7位数,所以float型代表的小数,小数位能表示7位b.double的小数位只有52位二进制,能表示的最大十进制为(4 503 599 627 370 496),是16位数,所以double型代表的小数,小数位能表示出16位
小数的默认类型为:double
-
变量使用时的注意事项
1.变量不初始化(第一次赋值)不能直接使用2.在同一个作用域(一对大括号就是一个作用域)中不能定义重名的变量
3.不同作用域中的数据尽量不要随意互相访问
在小作用域中能直接访问大作用域中的变量
在大作用域中不能直接访问小作用域中的变量
1.2 数据类型转换
a.自动类型转换
将取值范围小的数据类型赋值给取值范围大的数据类型 -> 小自动转大
取值范围小的数据类型和取值范围大的数据类型数据做运算 -> 小自动转大
b.强制类型转换
当将取值范围大的数据类型赋值给取值范围小的数据类型 -> 需要强转
1.2.1强转的注意事项
-
不要随意写成强转的格式,因为会有精度损失问题以及数据溢出现象,除非没有办法
-
byte,short定义的时候如果等号右边是整数常量,如果不超出byte和short的范围,不需要我们自己强转,jvm自动转型
byte,short如果等号右边有变量参与,byte和short自动提升为int,然后结果再次赋值给byte或者short的变量,需要我们自己手动强转
-
char类型数据如果参与运算,会自动提升为int型,如果char类型的字符提升为int型会去ASCII码表(美国标准交换代码)范围内去查询字符对应的int值,如果在ASCII码表范围内没有对应的int值,回去unicode码表(万国码)中找
1.3 进制的转换
- 十进制转成二进制
辗转相除法 -> 循环除以2,取余数
- 二进制转成十进制
8421规则
- 二进制转成八进制
将二进制数分开 (3位为一组)
- 二进制转成十六进制
将二进制数分组-> 4位为一组
1.4 位运算符
- 符号的介绍:
a. &(与) -> 有假则假
b. |(或) -> 有真则真
c. ~(非) -> 取反
d. ^(异或) -> 符号前后结果一样为false,不一样为true
true ^ true -> false
false ^ false -> false
true ^ false -> true
false ^ true -> true
1.5 运算符
- 算数运算符
【注】+
1.运算
2.字符串拼接:任何类型的数据遇到字符串都会变成字符串,此时+就不再是运算了,而是字符串拼接,将内容直接往后拼接
public class Demo02Arithmetic {public static void main(String[] args) {int i = 10;int j = 3;System.out.println(i+j+"");//13System.out.println(i+j+""+1);//131System.out.println(i+""+j);//103System.out.println("i和j相加只和为:"+(i+j));}
}
1.6 三元运算符
2. 流程控制
2.1 键盘录入_Scanner
-
概述:是java定义好的一个类
-
作用:将数据通过键盘录入的形式放到代码中参与运行
-
位置:java.util
-
使用:
a.导包:通过导包找到要使用的类 -> 导包位置:类上
import java.util.Scanner -> 导入的是哪个包下的哪个类b.创建对象
Scanner 变量名 = new Scanner(System.in);c.调用方法,实现键盘录入
变量名.nextInt() 输入整数int型的
变量名.next() 输入字符串 String型的
变量名.next():录入字符串 -> 遇到空格和回车就结束录入了
变量名.nextLine():录入字符串 -> 遇到回车就结束录入了
2.2 Random随机数
-
使用:
a.导包:import java.util.Randomb.创建对象:
Random 变量名 = new Random()c.调用方法,生成随机数:
变量名.nextInt() -> 在int的取值范围内随机一个整数
2.3 switch(选择语句)
- switch基本使用
2.4 分支语句
- if的第一种格式
- if的第二种格式
- if的第三种格式
2.5 循环语句
- for循环
- while循环
- 循环控制关键字
3. 数组
3.1 数组的定义
-
动态初始化与静态初始化的区别
a. 动态初始化:定义的时候只指定了长度,没有存具体的数据
当只知道长度,但不知道具体存啥数据时可以使用动态初始化b. 静态初始化:定义的时候就直接知道存啥了
//动态初始化int[] arr1 = new int[3];String[] arr2 = new String[3];//简化静态初始化int[] arr4 = {1,2,3,4,5};
3.2 数组操作
- 获取数组的长度
3.3 一维数组内存图
- 一个数组内存图
- 俩个数组内存图
- 两个数组指向同一片内存空间
3.4 二维数组
- 定义格式
- 动态初始化
数据类型[][] 数组名 = new 数据类型[m][n] - 简化静态初始化:
数据类型[][] 数组名 = {{元素1,元素2…},{元素1,元素2…},{元素1,元素2…}}
3.5 二维数组内存图
3.6 方法的重载
4. 类与对象
4.1 一个对象的内存图
4.2 俩个对象的内存图
4.3 两个对象指向同一片空间内存图
5. 封装
5.1 private关键字
被private修饰的成员只能在本类中使用,在别的类中使用不了
属性被私有化了,外界直接调用不了了,那么此时属性就不能直接赋值取值了,所以需要提供公共的接口
get/set方法:
- set方法:为属性赋值
- get方法:获取属性值
5.2 this关键字
5.3 static关键字
6. 继承
6.1 方法的重写
注意事项:
6.2 继承构造方法
子类对象会先执行父类中的构造方法,在执行子类中的构造方法
6.3 super关键字
6.4 this关键字
6.5 继承的特点
7. 抽象
7.1 抽象介绍
7.2 抽象的注意事项
- 抽象类不能直接new对象,只能创建非抽象子类的对象
- 抽象类中不一定非得有抽象方法,但是抽象方法所在的类一定抽象类
- 抽象类的子类,必须重写父类中的所有抽象方法,否则,编译报错,除非该子类也是抽象类
- 抽象类中可以有成员变量,构造,成员方法
- 抽象类中可以有构造方法,是供子类创建对象时,初始化父类属性使用的
8. 接口
8.1 接口的定义与使用
8.2 接口中的静态方法
接口名可以直接调用
8.3 接口中的成员变量
接口名直接调用
8.4 final关键字
final代表最终的,被它修饰的变量,不能二次赋值,可以视为常量
【注】
- 被final修饰的类不能被继承
- 被final修饰的方法,不能被重写
- 被final修饰的变量不能二次赋值,需手动赋值
- 被final修饰的对象,地址值不能改变,但是对象中的属性值可以改变
8.5 接口的特点
【注】
- 当一个类实现多个接口时,如果接口中的抽象方法有重名且参数一样的,只需要重写一次
- 当一个类实现多个接口时,如果多个接口中默认方法有重名的,且参数一样的,必须重写一次默认方法
9. 多态
9.1 多态的介绍
9.2 成员变量和成员方法的调用
- 成员变量:先调用父类中的成员变量
- 成员方法:先调用子类中重写的方法,如果子类中没有重写,则调用父类中的成员方法
9.3 多态中的转型
10.权限修饰符
在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限
访问能力:
11. 代码块
11.1 常规格式
11.2 静态代码块
12. 内部类
内部类就是在一个类中定义一个类
12.1 静态成员内部类
12.2 匿名内部类
面试
1. 形式参数和实际参数区别
- 形式参数(形参):在定义方法的时候形式上定义的参数,此参数还没有值
- 实际参数(实参):在调用方法的时候给形参赋予的具体的值
2. 成员变量和局部变量的区别
3. 面向对象三大特征?
- 封装
- 继承
- 多态
4. 接口与抽象类的区别
5. 多态方式与原始new对象的区别
工具的使用
1. IDEA的创建流程
先创建project,在project下创建module,在module下创建package -> 必须记住