Java知识点月末小结

1. 计算机数据存储单位

byte、KB、MB、GB、TB、PB、EB

2. 进制

八进制:以0开头;

十六进制:以0x 或0X开头 不区分大小写,一般用于【内存标记地址】。

3. 基本数据类型

byte 1 short 2 int 4 long 8
float 4 double 8
char 2
boolean 视情况而定

4. 命名规则【AJCG】

1. 在Java开发中,标识符(名字)有且只能使用英文字母(A ~ Z, a ~ z), 数字(0 ~ 9)以及唯一可以使用的标点符号 _ (下划线)    

2. 在Java开发中,标识符(名字)有且只允许使用字母开头    

3. 标识符(名字)严格区分大小写。   

4. 标识符(名字)没有严格的长度限制,但是会根据实际情况约束对应的长度    

5. 标识符(名字)要求【见名知意,动宾结构】

6. 标识符要求符合命名规则
   a. 驼峰命名法
   		小驼峰 适用于 变量名,方法名
   		大驼峰 适用于 数据类型名
   	b. 下划线命名法
7. 已经被Java使用的关键字和保留字不得用于自定义标识符(名字)          

5. 变量

5.1 定义格式:
数据类型 变量名 = 初始化数据;
5.2 定义变量的问题:
1. float类型变量,使用浮点小数常量赋值要求在当前常量之后加上大写 F
2. long类型变量,赋值操作过程中,可以在常量之后加上大写 L 
3. Java中变量先定义,后使用,未定义不能使用
4. Java中变量为赋值,不能参与除赋值操作之外的内容
5. 在代码中操作字符类型,有且只允许使用字符本身,不允许使用编码值

6. 方法

6.1 方法声明的基本格式
public static 返回值类型 方法名(形式参数列表) {
	方法体;
}
6.2 方法调用的要求
1. 使用方法名调用对应方法
2. 实际参数会赋值给方法中的形式参数,提供给方法使用
3. 方法中实际参数列表数据类型,顺序和个数要求完全一致
4. 一个方法有返回值的情况下,对方法外的产出效果就是对应的返回值数据
Java中变量使用和方法使用的区别是【方法有小括号】
6.3 *return关键字
方法中返回值操作使用的关键字
	1. 终止当前方法的运行。
	2. 返回return关键字之后的数据,数据要求对应返回值数据类型
6.4 方法的封装技巧
一框
二看 上看找参数 下看定返回
三声明
四剪切

7. 数组

数据类型[] 数组名 = new 数据类型[容量];
赋值号左侧:
	数据类型:
		明确告知编译器,当前数组可以保存支持的数据类型到底是哪一个,并且有且只能是哪一个。
		保证【数据类型一致化】
	[]:
		1. 明确告知编译器,这里定义的是一个数组类型
		2. 告知编译器,当前数组名是一个【引用数据类型】的变量
	数组名:
		1. 是当前数组的操作使用的,重要名称
		2. 数组名是一个【引用数据类型】变量

赋值号右侧:
	new:
		new关键字在内存中申请内存【堆区】数据空间,
		并且将申请的内存空间全部擦除干净(清空整个申请空间的所有二进制数据)
		堆区:相当于一个生活中的仓库,new关键字用于申请仓库中的空间。当前申请的仓库空间需要清理干净
		
	数据类型:
		前后呼应,要求和赋值号左侧完全一致,明确告知编译器,当前能够使用的数据类型到底是哪一个。
		保证【数据类型一致化】
	[容量]:
		当前数组可以保存指定数据类型的容量个数,容量一旦确定无法更改
		
数组使用和下标问题:
	1. 数组操作是依赖于数组名进行
		数组名是代表整个数组
	2. 数组操作需要使用下标,下标范围是0 ~ 数组容量 - 1
		【原则】下标没有负数,负数可以用于操作非法情况
		如果操作过程中下标位置超出范围 
		ArrayIndexOutOfBoundException 数组下标越界异常

8. 面向对象

8.1 定义类的格式
class 类名 {
	属性描述;
	行为描述;
}

注意事项:
	1. 类名要求符合大驼峰命名法
	2. 属性描述 是用于描述当前类对应对象拥有的属性/数据内容
	【成员变量 Field】
	3. 行为描述 是用于描述当前类对应对象拥有的能力
	【成员方法 Method】
8.2 创建类对象【new对象】
类名 类对象名 = new 类名();
new 构造方法(); 得到一个对象,构造方法名是【类名】

通过类对象操作成员变量:
	类对象.成员变量名;(取值操作/赋值操作)
	
通过类对象操作成员方法:
	类对象.成员方法(方法对应参数);
8.3 构造方法
public 类名(构造方法所需参数) {
	成员变量初始化语句;
}

特征:
	1. 构造方法名字只能是类名,而且在类内其他成员方法不能使用类名作为方法名。
	2. 构造方法没有返回值

作用:
	1. 和new关键字联用,方法名为类名, 告知new关键字当前申请内存空间需要对应的数据类型是什么. 【提供类型】
	2. 初始化当前new关键字申请内存空间中数据,用于初始化操作。
8.4 JavaBean规范
Java中对于【实体类】的封装规范要求
1. 成员变量全部私有化
2. 当前类内必须有一个无参构造方法
3. 提供对应的当前成员变量Setter和Getter方法
实体类对应生活中就是真实存在的类
8.5 私有化,权限修饰符
private 私有化
	1. private修饰【成员变量】,有且只允许类内使用,类外无法直接使用;
	2. private修饰【成员方法】,有且只允许类内使用,类外也不能用;
	3. private修饰【构造方法】,有且只允许类内使用,后期需要讲解的【单例】设计模式
	
public 公开的
	随便用,只要拥有当前类对象或者其他方式,都可以直接使用类内public修饰的成员方法、成员变量
8.6 Setter和Getter方法
Setter方法:
	给与当前私有化成员变量赋值操作
	public void set成员变量名(当前成员变量数据类型参数) {
		成员变量赋值语句;
	}
	
Getter方法:
	获取当前私有化成员变量对应数据
	public 对应成员变量的数据类型返回值 get成员变量名() {
		return 目标成员变量;
	}
Getter方法如果是boolean类型 为:
	get成员变量名() 改为 is成员变量名()
8.7 *this关键字
this关键字表示当前方法的类对象,或者 new + 构造方法创建的类对象

可以解决局部变量和成员变量的同名情况下的区分问题

this.成员变量名字	可以明确告知编译器,这里所有的是成员变量,而不是与成员变量重名冲突的方法参数变量【避免就近原则】
8.8 *extends关键字 Java中的继承
class A extends B {

}

a. 一个类有且一个父类,一个父类可以有多个子类
b. 子类可以通过继承使用父类的非私有化成员【Java是一门单继承语言】
c. 子类不能通过继承得到父类的私有化成员
d. 在创建子类对象时,首先会执行父类的构造方法,用于初始化父类的成员变量空间
8.9 *super关键字
父类与子类同名成员变量:
	super.成员变量名	可以明确调用父类的同名成员变量
	
	可以解决父类和子类成员变量同名区分问题
8.10 重写 @Override
重写是基于继承完成,子类重写父类方法,要求方法声明完全一致,方法体满足当前子类要求

1. @Override 是注解,用于开启当前编译器严格重写格式检查,要求子类重写父类方法,方法声明【完全一致】
权限修饰符,返回值类型,返回名,和形式参数列表(顺序,参数类型,个数)

2. @Override可以不写,但是依然可以保存重写状态。如果子类方法和父类方法声明不同,这里不再是重写方法

3. 重写是修改子类方法体内容,让方法可以更好的满足子类要求。
8.11 *abstract关键字
abstract修饰的方法,子类要求强制重写/实现
1. abstract修饰的方法没有方法体
2. abstract修饰的方法有且只能定义在abstract修饰的类内或者【interface接口】
3. 一个普通类继承abstract类,必须实现类内使用abstract方法
4. abstract修饰的类内可能存在abstract修饰的方法,abstract方法没有方法体
如果abstract修饰类存在对象,无法执行没有方法体的abstract方法
8.12 *final关键字
修饰成员变量:
	1. 定义是必须初始化
	2. 一旦赋值无法修改(带有名字的常量)
	
修饰成员方法:
	为最终方法,不能被子类重写(一般用于安全考虑)
	
修饰局部变量:
	一旦被赋值,无法修改。引用数据类型变量如果使用final修饰,指向不可变,但是指向内容可以变
	
修饰类:
	不能被继承,没有子类
	Java中 String类就是一个final修饰类

9. 局部变量和成员变量

9.1 局部变量
定义位置:
	再class大括号或者interfacr大括号内,其他大括号之外

作用:
	描述当前类对象拥有的属性
	
初始化:
	在没有被赋值,或者被构造方法初始化的情况下,成员变量是对顶当前数据类型的"零"值
	
作用域:
	谁持有当前类对象空间地址,成员变量就在那里
	
生存期:
	从对象创建开始,到当前对象被销毁结束
9.2 成员变量
定义位置:
	方法以内,代码块以内
	
作用:
	用于代码运行过程中,对数据的存储和计算操作

初始化:
	Java中局部变量未初始化不能使用,避免"野值"问题
	
作用域:
	有且只能是当前大括号范围以内,超出范围无法使用
	
生存期:
	有且只能是当前大括号范围以内,超出范围被销毁
9.3 "零"值
byte short int 0;
long 0L;
float 0.0F;
double 0;
boolean false;
char '\0' (nul 不可见字符);
引用型数据类型 null。

10. *static修饰符

10.1 静态成员变量
static修饰静态成员变量
	1. Eclipse建议通过类名访问,静态成员变量归属权属于当前类(类变量)
	Eclipse通过警告提示开发者,静态成员变量和对象无关【没有对象】
	
	2. 静态成员变量一处修改处处修改,所有位置都受到影响【共享资源特征】
	
	3. 静态成员变量早于类对象出现,晚于类对象销毁
	
类文件(.class字节码文件)加载机制。
在Java程序运行之前,JVM虚拟机会将所有所需.class字节码文件加载到内存中【方法区】过程中,JVM会将所有static修饰内容全部加载完毕。
static修饰的静态成员变量会定义在内存的【数据区】,已经可以使用,此时并没有类对象创建出现。

静态成员变量具有一定的共享性,开发中可以使用静态成员变量作为【线程】之前的共享资源使用。【多线程编程】

带有名字的常量
	private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
	最大数组容量
	private static final int MAX_PRIORITY = 10;
	优先级
	private static final int NORMAL_LEVEL = 1;
	正常值
10.2 静态成员方法
stati修饰静态成员方法
	1. 静态成员方法推荐使用类名调用,不推荐使用类对象调用
	
	2. 静态成员方法不能使用类内的其他非静态成员和this关键字
	
	3. 静态成员方法可以使用类内的其他静态资源
	
	4. 静态成员方法早于类对象出现,晚于类对象销毁,类似于静态成员变量。
	静态成员方法是在类文件(.class字节码)加载过程中,直接加载到内存的【方法区】。
	并且加载完成之后,已经具备完全的执行能力。
	所有当前方法所需内容,返回值、方法名、形式参数列表、方法体全部确定,随时可以执行。
	在类对象创建之前,静态成员方法已经存在于内存方法区,并且在程序推出过程中,
	需要将所有当前程序创建的对象,全部释放,才可以销毁方法区内容。
	
	5.静态成员方法执行存在一般情况下所需参数/数据,都是来自类外,静态成员方法大多数用于【工具类】封装。
	Arrays 数组工具类
	DbUtils 数据库操作工具类
	BeanUtils 处理符合JavaBean规范类对象数据工具类
	工具类中方法,都是静态成员方法,通过类名直接调用,不需要类对象的约束。降低内存占用率,提高效率。
	
Arrays工具类常用方法:
	static String toString(任意类型数组);	
		将数组中的所有元素,使用[]中括号包含,元素直接使用, + 空格隔开,返回字符串形式
		int[] arr = {1, 3, 5, 7, 9} ==> toString
		[1, 3, 5, 7, 9];
	static void sort(int[] arr);
		数组排序,默认升序,快排,quickSort
	static int binarySearch(int[] arr, int find);	
		找出指定元素在数组中的下标位置,如果没有找到,返回负数。但是不保证找到的数据是整个数组中第几个。
		要求当前数组必须排序之后才可以使用。

11. 代码块

{

}
构造代码块
	在class大括号内,只要创建当前类对象,构造代码块中的内容一定执行

静态代码块
	在class大括号以内,使用static修饰,当类文件加载,静态代码块中的内容一定执行

局部代码块
	方法以内,用于提高内存使用效率,加速方法内变量销毁过程

12. 接口

12.1 *interface关键字
interface 接口名 {
	成员变量;
	接口中的成员变量缺省属性:pubilc static final
	成员方法;
	接口中的成员方法缺省属性:public abstract
}
12.2 *implements关键字
implements【遵从】

class 类名 implements 接口名{
	要求完成接口中所有缺省属性public abstract的方法
}

一个类可以继承一个父类,同时遵从多个接口
先继承,后遵从

一个接口可以同时继承多个其他接口,协议兼容过程
12.3 *default关键字 JDK1.8新特征
JDK1.8之后允许在接口中出现带有方法体的方法,默认方法
非强制要求方法

13. 多态

13.1 多态作用
父类的引用指向子类的对象
接口的引用指向遵从接口实现类的对象

作用:
	1. 拓宽方法参数范围
	2. 拓宽方法返回值范围
13.2 引用数据类型强制转换
1. 强制类型转换从父类类型,转换到子类真实类型
   Animal a = new Panda();
   Panda p = (Panda) a;
2. 引用数据类型强转,需要关注真实类型!!!是否是当前转换类型
   Animal a = new Tiger();
   Panda p = (Panda) a;

14. String类

Java中所有双引号包含内容,对于整个程序而言有且只有一个,有利于节约内存空间占用

" == "
	判断的是String引用数据类型变量中保存的空间地址,与字符串内容无关
equals
	比较两个字符串内容是否一致
	
equals(Object)
	1. 判断参数Object对象保存地址和当前调用对象是否一致。
	2. 判断Object对应真实数据类型是否和当前调用对象数据类型一致。
	3. 判断字符串内容是否一致,判断标准是长度比较,取出每一个字符比较

15. 获取方法

int length();
	获取字符串的长度
char charAt(int index);
	通过String类对象调用,获取对应下标的字符数据
int indexOf(String str);
	在当前字符串中找出对应字符串第一次出现的下标位置,未找到返回负数
int indexOf(int ch); 
	在当前字符串中找出对应字符第一次出现下标位置,未找到返回负数
int lastIndexOf(String str) 
	在当前字符串中找出对应字符串最后一次出现的下标位置,未找到返回负数
int lastIndexOf(int ch) 
	在当前字符串中找出对应字符最后一次出现的下标位置,未找到返回负数

16. 判断方法

boolean endsWith(String str);
    是否以指定字符结束
boolean startsWith(String str);
boolean isEmpty();
    是否长度为0 如:""空字符串
boolean contains(String str); 
    是否包含指定的字符串内容是否存在,常见于搜索功能
boolean equals(Object anObject); 
    判断两个字符串是否一致,判断条件是字符串内容
boolean equalsIgnoreCase(String anotherString);
    忽略大小写情况下,判断两个字符串是否一致

17. 转换方法

String(char[] value);
	将字符数组转换为字符串
String(char[] value, int offset, int count);
    将字符数组转换成字符串,要求从当前数组offset位置开始,计数count结束
static String valueOf(char[] data);
	将字符数组转换为字符串
static String valueOf(char[] data, int offset, int count);
    将字符数组转换成字符串,要求从当前数组offset位置开始,计数count结束
char[] toCharArray()  
    将字符串转换为字符数组

18. 其他方法

String replace(char oldChar, char newChar);
	使用新字符,替换所有的老字符
String[] split(String regex); 
	【重点】按照指定字符串切割当前字符串,返回值类型是字符串数组
String substring(int beginIndex);
	从指定beginIndex位置开始,到整个字符串末尾结束,获取子字符串
String substring(int beginIndex, int endIndex);
	从指定beginIndex位置开始,到endIndex位置结束,获取子字符串。
    beginIndex <= n < endIndex 要头不要尾
String toUpperCase();
	字符串中的所有英文字符小写转大写
String toLowerCase(); 
	字符串中的所有英文字符大写转小写
String trim(); 
	去除字符串两边无效空格。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值