1,for循环语句格式
for(初始语句;条件判断;步进语句;) { 循环体; }
2,while循环语句格式
初始语句: while(条件判断;){ 循环体; 步进语句; }
3,do while循环语句格式 初始语句
do { 循环体; 步进语句; }while(条件判断);
三种循环的区别 1,如果条件判断从来没有满足过,那么for循环和while循环将会执行0次 ,但是do while循环至少循环一次 2,for循环的变量在小括号当中定义,只有循环内部才能使用。while和do while初始语句本来就在外边,所以循环出来以后还是可以使用。
break关键字 常见的俩中用法 1,可以在switch语句当中,一旦执行,整个switch语句立马结束 2,还可以用在循环语句中,一旦执行,整个循环语句立马结束。打断循环
关于循环的选择,有一个小建议 凡是次数确定的场景多用for循环;否则多用while循环 另一种循环控制语句是continue关键字 一旦执行,立刻跳出当前循环剩余内容,马上开始下一次循环
@Override用来检测覆盖重写
object类是所有类的公共最高父类
super关键字访问父类关键字在子类的成员方法中,访问父类的成员方法 格式:super.父类方法(); 在子类的构造方法中,访问父类的构造方法 构造方法中子类构造可以通过super关键字来调用父类重载构造 格式:super();
this关键字访问本类内容在本类的成员方法中,访问本类的另一个成员方法 this.本类成员方法(); 在本类的构造方法中,访问本类的另一个构造方法 this(参数) 本类的无参构造调用本类的有参构造
abstract关键字抽象方法public abstract class 类名{} public abstract void 方法名();抽象方法所在的类必须是抽象类
interface接口格式:public interface 接口名称{ 接口内容 } java7接口包含内容有 java8额外有 java9额外有 1.常量 3.默认方法 5.私有方法 2.抽象方法 4.静态方法
接口使用步骤1.接口不能直接使用,必须有一个”实现类“来实现接口 格式: public class 实现类名称 implements 接口名称{
} 2.接口的实现类必须覆盖重写(实现) 接口中所有的抽象方法; 实现,去掉abstract关键字,加上方法大括号 3.创建实现类的对象,进行使用
多态格式 父类名称 对象名 = new 子类名称(); 或者 接口名称 对象名 = new 实现类名称();
对象的向下转型 格式:子类对象 对象名称 = (子类名称) 父类对象: 含义;将父类对象,【还原】成为本来的子类对象
instanceof关键字Final关键字最终,不可改变的
四种 用法 1.可以用来修饰一个类修饰当final关键字用来修饰一个类时候 格式:
public final class 类名称{
//.....
}
含义:这个类不能有任何的子类。(太监类)
注意:一个类如果是final的,那么其中所有的成员方法都无法覆盖重写(没有子类)
public final class MyClass{
public void method{
System.out.println("方法执行");
}
}
public class MySubClass(会报错){
}
2.可以用来修饰一个方法
当final关键字用来修饰一个方法的时候,这个方法就是最终方法 ,也就是不能覆盖重写。
格式:
修饰符 final 返回值类型 方法名称(参数列表) {
}
注意事项:
对于类,方法来说,abstract关键字和final关键字不能同时使用,因为矛盾
punlic final class Fu{
pulic void method(){
System.out.println("父类方法执行");
}
}
punlic class Zi extends Fu{
//错误写法!不能覆盖重写父类当中的final的方法
pulic void method(){
System.out.println("子类覆盖重写父类方法");
}
}
3修饰一个局部变量
一旦用final用来修饰局部变量,那么这个变量就不能进行更改《一次赋值,终生不变》
对于基础来行来说,不可变说的是变量当中的数据不可改变;
对于引用类型来说,不可变说的是变量当中的地址值不可改变;
4修饰一个成员变量对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样不可变
1.由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值。
2.对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。二者选其一
3.必须保证类当中所有重载的构造方法,最终都会对final的成员变量进行赋值。
Java中有四个权限修饰符java中有四种权限修饰符 public > protected > (default) > private 同一个类 (我自己) yes yes yes yes 同一个包 (我邻居) yes yes yes no 不同包子类 (我儿子) yes yes no no 不同包非子类(陌生人) yes no no no内部类
如果一个事物的内部包含另一个事物,那么就是一个类内部包含另一个类 例如:身体和心脏的关系,汽车和发动机的关系 分类: 1.成员内部类 2.局部内部类(包含匿名内部类)
1.成员内部类成员内部类的定义格式:
-
修饰符 class 类名称 { 修饰符 class 内部类名称{
-
}
-
-
}
注意:内用外,随意访问;外用内,需要内部类对象。
如何使用成员内部类?有俩种方法:
1.间接方式:在外部类的方法当中,使用内部类;然后main只是调用外部类的方法
通过外部类的对象,调用外部类的方法,里面间接在使用内部类Heart
2.直接方式:公式:
类名称 对象名 = new 类名称();
【外部名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();】
如果出现重名现象,那么格式是:
外部类名称.this.外部类成员变量名
2.局部内部类如果一个类是定义在一个方法内部的,那么这就是一个局部内部类。 “局部”:只有当前所属的方法才能使用它,出了这个方法外面就不能用了
定义格式:
-
修饰符 class 外部类名称{ 修饰符 返回值类型 外部类方法名称(参数列表){ class 局部内部类名称{ //.... } } }
注意事项: public > protected > (default) > private 定义一个类的时候,权限修饰符规则; 1.外部类:public / (default) 2.成员内部类:public /protected / (default) / private 3.局部内部类:什么都不写
局部内部类,如果希望访问所在方法的局部变量,那么这个局部变量必须是【有效fianl的】
备注:从Java8+开始,只要局部变量事实不变,那么final关键字可以省略。 原因 1.new出来的对象在堆内存当中。 2.局部变量是跟着方法走的,在栈内存当中。 3.方法运行结束之后,立刻出栈,局部变量就会立刻消失。 4.但是new出来的对象会在堆当中持续存在,直到垃圾回收位置
3.匿名内部类如果接口的实现类(或者是父类的子类,)只需要运行一次。 那么这种情况下就可以省略掉该类的定义,而改为使用【匿名内部类】
匿名定义格式: 接口名称 对象名 = new 接口名称(){ //覆盖重写所有抽象方法 };
Object1.sbject 介绍Object类是所有类的父类。
一个类都会直接或者间接的继承自该类该类中提供了一些非常常用的方法!
2.tostring0方法
A:作用打印对象的信息
B:重写前:打印的是包名类名@地址信
C: 写后:打印的是对象中的属性值
3.equals()方法
A工作用:比较两个对象的
B:重写前:比较的是对象的地址值
C:重写后:比较的是对象中的属性值



