java基础回顾(待更新)
- 基本内容回顾
- 1、三元运算符、Scanner类、Random类
- 2、选择结构、流程控制、循环、结束循环
- 3、连续内存的数据结构:数组(相继介绍其他数据结构类型)
- 4、List接口的实现类:ArrayList(数组数据结构)、LinkedList(链表数据结构);Set接口的实现类:HashSet(哈希元素唯一)、LinkHashSet(链表和哈希组合);
- 5、方法重载
- 6、封装:私有private、this关键字
- 7、继承(extends):普通继承(super和this)、继承抽象类
- 8、构造方法、this、super
- 9、关键字:final、static、匿名对象
- 10、StringBuffer和StringBuilder
- 11、泛型
基本内容回顾
1、三元运算符、Scanner类、Random类
- 三元运算符:(条件判断)?(true返回值或执行语句):(false返回值或执行语句),举例: 3>2 ? “正确” : “错误” 这个表达式的返回值为"正确"
- Scanner类:方法nextInt()接收控制台录入的整型,方法next()接收控制台录入的字符串
- Random类:nextInt(a)返回0-a之内随机一个整数,nextDouble()返回0.0-1.0内的随机一个浮点型数
2、选择结构、流程控制、循环、结束循环
- 选择结构:
if(){
执行语句
}
if(){
执行语句1
}else{
执行语句2
}
if(){
执行语句1
}else if(){
执行语句2
}else{
执行语句3
}
- 流程控制:
switch(变量){
case 值1:执行语句1;break;
case 值2:执行语句2;break;
case 值3:执行语句3;break;
case 值4:执行语句4;break;
case 值5:执行语句5;break;
…
}
- 循环:
for(变量;判断条件;动作){循环体}
for(int i=0;i <= 10;i++){循环体}
while(判断条件){循环体}
do{循环体}while(判断条件)
while循环和do…while循环,循环次数一样,但是当条件不满足时,while循环不执行,do…while循环执行一次
- 结束循环
break:结束循环
continue:本次循环执行到continue结束,不再往下执行,直接进入下一次循环
3、连续内存的数据结构:数组(相继介绍其他数据结构类型)
- 定义格式:数据类型[] 变量名 = new 数据类型[长度]
- 一位数组、二维数组:行下标和列下标都是从0开始
4、List接口的实现类:ArrayList(数组数据结构)、LinkedList(链表数据结构);Set接口的实现类:HashSet(哈希元素唯一)、LinkHashSet(链表和哈希组合);
- 定义格式:ArrayList<存入的数据类型> 变量名 = new ArrayList<存入的数据类型>();整型Integer;字符串String
- 添加元素方法add(元素):有序添加,获取元素方法get(index):按照添加时的索引从0开始,获取集合长度方法size():返回结合的长度int类型
5、方法重载
- 方法名相同,参数的个数、数据类型必须不一样
6、封装:私有private、this关键字
- 类属性一般需要私有化(关键字private),这样实例对象不能对私有属性随意赋值,想要赋值或获取必须使用类提供的set和get方法
- 当全局变量和局部变量同名时,使用关键字 this.变量名:代表全局变量
7、继承(extends):普通继承(super和this)、继承抽象类
- 子类继承父类都是单继承,一个子类只能继承一个父类,一个父类可以被多个子类继承。子类可以直接调用父类的方法,也可以重写(覆盖)父类的方法。
- 当子类和父类出现同名的变量的时候,super.变量名:代表父类变量,this.变量名:代表子类变量
- 子类不能继承父类的私有属性,如果父类给与私有属性get和set方法,子类会继承get和set方法,子类可以通过继承的get和set方法来访问或赋值父类的私有属性
- 抽象方法必须定义在抽象类之中,用abstract关键字来修饰,抽象方法没有方法体;抽象类不可以被实例化,只有当继承抽象类的子类重写抽象类中所有的抽象方法的时候,这个子类才能实例化一个对象。抽象类,不可以和static、private、final关键字同时使用
8、构造方法、this、super
1.构造方法:实例化对象时执行的方法称为构造方法,构造方法名称和类名称相同,一般用用来初始化对象的属性值。没有返回值类型,一般对象创建结束构造方法执行结束,只执行一次。 其实,如果没有显示指定构造方法,编译会在编译时自动添加默认的构造方法,Person(){} //空参数的默认构造方法。构造方法可以重载。修饰构造方法的关键字:public允许任何其他类的访问;private只能自己类访问,其他类里面实例化对象时会报错。
- this:在类中调用构造方法:this(参数)
- super:父类中的构造方法有两种,一种是无参数的和有参数的。子类继承父类的时候,如果父类的构造方法中有一个是无参数的(存在重载的情况),则子类会生成一个隐式super(),来调用执行父类的无参数构造函数,并且不会执行或调用其他有参数构造方法。当父类没有 无参数构造方法时,只有一个或多个有参数构造方法时(存在重载的情况),子类需要创建构造方法(有参数),并在构造方法里面以显式的super(参数),来实现父类的有参构造方法,任意一个有参构造方法即可即可。
9、关键字:final、static、匿名对象
- final可以修饰类、类的成员、局部变量。final修饰的类不可以被继承,但是却可以继承其他类;final修饰的方法不可以被覆盖,父类方法没有final修饰,子类覆盖后可以用final修饰;final修饰变量时必须赋值,而且不可被修改,所以final修饰的变量也叫常量;final修饰的实例化对象,物理地址不可被改变,但是属性值可以更改;如果final修饰全局变量时没有赋值,那么在所有的构造方法中必须要对其进行赋值;
- static关键字:static是静态修饰符,一般用来修饰类的成员;static修饰的成员变量属于这个类,不属于某个对象,当某个对象对此静态成员变量做出赋值或修改时,这个类的所有对象对应的成员值都会被修改,所有静态成员变量推荐使用类名来访问;静态内容不能使用this和super来访问,静态成员只能访问静态成员;接口中的成员变量都是默认使用public static final来修饰,接口没有构造方法,所以定义时必须赋值,通过接口类名来访问。
10、StringBuffer和StringBuilder
- 官方释义:字符串缓冲区支持可变的字符串。其实可以理解为一个可长度的字符串数组。
- 提供了各种操作方法:
append(String str); //添加字符串
insert(int effset, String str):在指定位置插入
delete(int start, int end):删除
replace(int start, int end,String str):替换指定范围内的内容
reserve():返回倒序
toString():返回数组的字符串格式,上面所有的方法都是返回类
- StringBuffer和StringBuilder几乎是一样的,但是推荐使用后者,因为后者比前者在速度上要快一点(涉及到线程)
11、泛型
- 泛型定义:我觉得泛型可以理解为是一种未知数据类型(待指定),先用T、E、V。。。任意字母来代替。
- 泛型类:泛型类里面可以定义泛型变量、泛型方法;在泛型类实例化对象时需要明确具体数据类型,对应的变量和方法也就随之确定具体的数据类型;如果构造方法的参数也是泛型,那么实例化对象传入实参的时候,会根据实参的类型自动确定泛型的具体数据类型。
- 泛型接口:泛型接口使用方式和泛型类几乎一致, 泛型接口的实现类可以继续使用泛型;
- 泛型的实参:泛型传入的参数只能是类参数,不能是具体的数据类型,比如String、Integer。