1:变量的命名规则
标识符
就是用来给类、接口、变量、方法起名字用的
组成规则:
英文大小写字母、数字、$、_
硬性要求:
数字不能开头
不能使用关键字
软性要求:
给类、接口起名字:如果是一个单词、那么首字母大写。如果是多个单词,每个单词的首字母都要大写 HelloWorld
给变量、方法起名字:如果是一个单词、那么首字母小写。(例如:年龄age)
如果是多个单词、第一个单词首字母小写、从第二个单词开始,每个首字母都大写(例如:getAge)
2:三元运算符
定义格式:
数据类型 变量名 = 比较表达式 ? 表达式A : 表达式B;
执行流程:
先判断比较表达式,如果是true。那么将表达式A进行赋值
如果是false。那么将表达式B进行赋值
3:++和--
++:将变量进行自增
--:将变量进行自减
第一种情况:单独使用。++或者--放在变量的前面或者是后面。没有区别,都是将原值进行自增或者自减
第二种情况:参与运算使用
A:如果++或者--放在变量的前面,先将变量进行自增或者自减。然后再参与运算
B:如果++或者--放在变量的后面,先将变量原值拿出来使用。然后再自增或者自减
4:字符串的方法
1.构造方法:
String(); 创建一个内容为空的字符串对象
String(char[] arr); 根据字符数组创建一个字符串对象
String(byte[] arr); 根据字节数组创建一个字符串对象
String(String s); 根据传入的字符串来创建一个字符串对象
2.判断功能:
boolean equals(String s); 比较两个字符串内容是否相同,区分大小写
boolean equalsIgnoreCase(String s); 比较两个字符串内容是否相同,忽略大小写
boolean startsWith(String s); 判断当前字符串是否以传入的字符串为开头
boolean endsWtih(String s); 判断当前字符串是否以传入的字符串为结尾
boolean contains(String s); 判断当前字符串是否包含传入的字符串
boolean isEmpty(); 判断字符串是否为空
3.获取功能:
int length(); 获取字符串的长度
char charAt(int index); 获取指定索引处的字符
int indexOf(String s); 获取传入的字符串在当前字符串中第一次出现的索引位置
int lastIndexOf(String s); 获取传入的字符串在当前字符串中最后一次出现的索引位置
String concat(String s); 拼接字符串
String substring(int index); 获取字符串中的某一部分,从指定索引处开始,默认到字符串结尾
String substring(int start,int end); 获取字符串中的某一部分,从开始索引处到结束索引-1处(不包含end)
4.转换功能:
char[] toCharArray(); 将字符串转成一个字符数组
byte[] getBytes(); 将字符串转成一个字节数组
String toUpperCase(); 将字符串转成大写
String toLowerCase(); 将字符串转成小写
5.其他功能:
String[] split(String regex); 将字符串按照指定规则进行切割
String trim(); 去除字符串两端的空白
字符串的内容不可以改变的举例:
String str = “abc”;
str.substring(0 , 1);
打印 -- > “abc” 输出后的str还是原来的”abc”,并不是截取后的字符串,这就是因为字符串的内容是不可以改变的,除非创建一个新的字符串对它进行接收,总之内容不可变(这也使得字符串可以共享使用),没用的会被java中的垃圾回收机制所回收。 ArrayList集合,还有数组,就不一样了,对数组或者集合进行删除、排序等操作也不需要返回它也会受到改变
5:数组的特点,定义数组的格式.数组的初始化方式,
定义格式
动态初始化:
数据类型[] 数组名 = new 数据类型[长度];
实例:
int[] arr = new int[5];
int arr[] = new int[5];
注意两种格式都可以!
静态初始化:
完整格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,....};
实例:
int[] arr = new int[]{5,10,15,20};
错误的写法:
Int a [] = new int[3]{1 , 2 , 3};
A:无论是动态初始化数组也好、或者是静态初始化数组也好。都是有长度的
B:静态初始化完整格式和动态初始化数组可以先声明、然后再创建的
简化格式:
数据类型[] 数组名 = {元素1,元素2,元素3,...};
6:数组的很多的方法
Arrays常用的方法
String toString(int[] arr); 将数组内容转成一个字符串
Example:
Int a[] = { 1 , 2 , 3};
Arrays.toString(arr); 打印-- > [1 , 2 , 3] (这是一个字符串)
void sort(int[] arr); 对数组进行升序排序
Boolean equals(int[] a, int[] a2); 如果两个指定的 int 型数组彼此相等,则返回 true。
Int[] copyOfRange(int[] original, int from, int to); 将指定数组的指定范围复制到一个新数组。
Int binarySearch(byte[] a, byte key); 使用二分搜索法来搜索指定的 byte 型数组,以获得指定的值。
补充:
在做数组的某些题目的时候要善于运用标记(定义一个boolean flag)思想,和return的巧妙应用,例如:
Int a[] = {5 , 4 ,7 , 8 ,1 , 7 ,1 ,8 };判断这个数组有没有1这个数字,用这两种方法处理起来就变的尤其简单,此类型的题目还有我推荐几个:
A. 判断1- 100区间内的素数(可以用标记思想)
B.7期升级考试中的第二题可以用标思想和return 来解决(当然还有其他的办法)
...
7:集合的遍历,集合删除的注意点
集合的遍历:
public class Demo04ArrayListEach {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("迪丽热巴");
list.add("古力娜扎");
list.add("玛尔扎哈");
// 遍历集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
集合的删除注意事项:
删除集合中所有的def字符串
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
//如果当前s这个字符串要是def的话。就删除
if(s.equals("def")) {
list.remove(i--);
}
}
//输出
System.out.println(list);
}
}
注意只有i--才能将集合里的相关内容全部删除
8:集合的很多的方法.
add(E e); 向集合中添加数据
get(int index); 获取集合中指定索引上的元素
remove(int index); 删除指定索引上的元素
set(int index,E e); 修改指定索引上的元素
size(); 获取集合的长度
9:权限修饰符
public > protected > (default) > private
备注:(default)不是关键字default,而是什么都不写,留空。
10:了解类,抽象类,接口的特点
抽象类和接口的区别:
成员特点:
成员变量:
抽象类:既可以有变量也可以有常量(不可改变的量,一般大写,final关键字修饰)
接口:只有常量(所以接口中默认给你加上public final ...)
成员方法:
抽象类:既可以有抽象方法、也可以有普通方法
接口:即可以有抽象方法 、还可以有默认方法 、 静态方法(java 8+) 、私有方法(java 9+)
构造方法:
抽象类:有构造方法(因为抽象类是可以创建对象的,而且有变量)
接口:没有构造方法
关系区别:
类与类:继承关系。java只支持单继承、不能多继承。但是可以多层继承
类与接口:实现关系。可以单实现、也可以多实现。还可以继承一个类的同时再去实现多个接口
接口与接口:继承关系。可以单继承、也可以多继承
个人总结:
实现接口你必须重写(@override)接口里面的每个类,有时候接口里面类非常多的时候你只需要用其中的某几个类的时候那么你就没必要都去重写接口里面的每个类,那么这个时候你就可以去创建一个中间的类(此类必须是抽象类,因为抽象类中的方法也可以被子类去重写,而且不用全部重写),所以这样的话就可以让继承这个中间抽象类的子类去重写他自己所需要的类。这样就形成了一种设计模式 ----- > 适配器设计模式 AdapterDesignPattern
设计初衷:
抽象类完成的是一些共性的功能,但是抽取出的共性功能没有具体的实现
接口完成的是一些特性的功能。
11:关于重载的定义,怎么判断方法重载
方法的重载
什么是方法的重载
方法名相同
参数列表不同:
参数的个数不同
参数的类型不同
参数的顺序不同
与返回值类型无关
与方法参数的名称无关
12:关于java的注解
上课只提到了这一种注解:
@Override:写在方法前面,用来检测是不是有效的正确覆盖重写。
这个注解就算不写,只要满足要求,也是正确的方法覆盖重写。
注释
注释的作用:对程序进行解释说明,注释不会被运行的
注释的分类:
单行注释: // 注释的内容
多行注释: /* 注释的内容 */
文档注释: /** 文档注释 */
注释注意事项:
单行注释可以进行嵌套
多行注释不可以嵌套
13:接口和抽象类中的方法有什么特点
接口中的方法:
一.在任何版本的Java中,接口都能定义抽象方法。
注意事项:
1. 接口当中的抽象方法,修饰符必须是两个固定的关键字:public abstract
2. 这两个关键字修饰符,可以选择性地省略。
3. 方法的三要素,可以随意定义。
二.从Java 8开始,接口当中允许定义静态方法。
三.从Java 9开始,接口当中允许定义私有方法。
我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题。
但是这个共有方法不应该让实现类使用,应该是私有化的。
解决方案:
1. 普通私有方法,解决多个默认方法之间重复代码问题
格式:
private 返回值类型 方法名称(参数列表) {
方法体
}
2. 静态私有方法,解决多个静态方法之间重复代码问题
格式:
private static 返回值类型 方法名称(参数列表) {
方法体
}
抽象类中的方法:
抽象类中可以没有抽象方法。
有抽象方法的类一定是抽象类。
继承一个抽象类,必须重写它的抽象方法。除非子类也是一个抽象类。
14:面向对象
按照博哥出的题目难度,并且博哥说他出的题比考试题要难一点,完全掌握这一题应该就够了
1.定义动物类:
属性:
年龄
行为:
喝水,吃东西(吃什么不确定)
2.定义游泳接口:
行为:
游泳方法
3.定义狗类:
行为:
吃饭(啃骨头)和 游泳(狗刨)
4.定义羊类:
行为:
吃饭(羊啃草)
5.定义青蛙类:
行为:
吃饭(吃虫子)和 游泳(蛙泳)
6.定义饲养员类:
行为:
饲养动物:包括吃饭和喝水
7.定义测试类:
创建饲养员对象,饲养员调用三次饲养方法:饲养狗,饲养羊,饲养青蛙
要求:
1.子类重写父类中的吃东西方法
2.要求给狗和青蛙添加游泳的方法(实现游泳接口)
3.饲养员类中定义一个方法,传入动物类对象(父类),
调用吃饭方法,如果有游泳方法也需进行测试
4.打印如下格式的结果:
喝水
狗啃骨头
狗会狗刨游泳
喝水
青蛙吃小虫
青蛙会蛙泳
喝水
羊啃草
javaSE基础知识总结
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.