java基础刷题笔记6
Java刷题笔记6
T1 静态变量
静态变量只能在类主体中定义,不能在方法中定义
PS :
类的final成员变量必须满足以下其中一个条件
1、在构造函数中赋值
2、定义时初始化赋值
3、初始化块中初始化,但是不可在静态初始化块中初始化,只能是静态的final成员变量才能在静态初始化块中初始化
T2 抽象类 & 接口
抽象类
特点:
1.抽象类中可以构造方法
2.抽象类中可以存在普通属性,方法,静态属性和方法。
3.抽象类中可以存在抽象方法。
4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。
5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
6.抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰
7.抽象类中得方法访问修饰符默认是default
8.抽象类可以实现接口关键字使用注意:
抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。接口
1.在接口中只有方法的声明,没有方法体。
2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static final
3.在接口中的方法,永远都被public来修饰。
4.接口中没有构造方法,也不能实例化接口的对象。(所以接口不能继承类)
5.接口可以实现多继承
6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法则实现类定义为抽象类。
7.接口可以继承接口,用extends作者:存在moring
链接:https://www.nowcoder.com/exam/test/74837104/submission?pid=53549264&testCallback=undefined
来源:牛客网
T3 堆栈
下列Java代码中的变量a、b、c分别在内存的__存储区存放。
1 | class A { |
答案: 堆区、栈区、栈区
a是类中的成员变量,存放在堆区 b、c都是方法中的局部变量,存放在栈区
堆区:只存放类对象,线程共享;
方法区:又叫静态存储区,存放class文件和静态数据,线程共享;
栈区:存放方法局部变量,基本类型变量区、执行环境上下文、操作指令区,线程不共享;
T4 ??
这题先放下不表
其实已经考虑过了i++和=的赋值先后的问题了,但还不是很明白
这里(i++)赋给i的值还是0,同时i还在等待++
按照答案来做马后炮的分析,是i先执行了++,然后又被之前的0赋值回去变为0了
很神奇吧, JVM