本篇为Java SE基础知识的10道小题
目录
11.static关键字
12. final关键字
13. JVM是如何管理内存的
14. Java有没有指针
15. Java数据类型有几种,它们的区别
16. int与Integer的区别
17. Java方法参数的传递类型
18. String比较用什么方法,==与equals的区别
19. String与StringBuffer的区别
11.static关键字
static表示静态的,用来修饰类的成员变量,成员方法,还可修饰代码块为静态块
静态变量:静态变量属于类而不属于对象,调用方式为: 类. 属性名
内存空间在方法区内,整个类只有一份。普通变量在堆内,一个对象一份。
静态方法:静态方法属于类而不属于对象,调用方式为: 类. 方法名
静态的只能访问静态,静态方法中只能访问静态变量与其它静态方法,不同访问普通方法。
静态块:当JVM加载完类,如果这个类中有静态块,马上执行其中代码。
12. final关键字
final表示最终的,不变的,可以修饰变量,方法,类。
final修饰类,表示该类不能被继承,他是最后的子类,断子绝孙了。
final修饰的方法,表示该方法不能被重写
final修饰的变量为常量,只能赋值一次
13. JVM是如何管理内存的
JVM向系统申请的内存,分为很多区域,其中重要的是栈,堆,方法区三个区域
栈:对于基本型,存储的是具体的数值,对于引用型,存储的是堆中的内存首地址
堆:存储的是对象的具体数据
方法区:存储的是类结构,所有方法的声明,static变量的数值
14. Java有没有指针
Java中没有指针,因为Java不能声明指针类型的变量。但是Java底层封装了指针,但是也不是所有数据类型都封装了指针,根据是否封装指针,java数据类型分为两种,值类型与引用类型。
值类型又称为基本数据类型,就是没有封装指针的,在Java中只有八个,使用值类型变量,只在栈中有一块内存。
引用数据类型是封装指针的,包括类,抽象类,接口与数组。使用引用类型变量在栈与堆中各一块内存。栈中并不存储具体的数值,存储的是堆中内存地址的引用,具体的数值存储在堆中。
15. Java数据类型有几种,它们的区别
数据类型分为基本数据类型和引用数据类型
基本型:byte, short, int, long, float, double, char, boolean.
引用型:class, interface, 数组.
基本型数据存储在栈中,引用型栈中存储的是堆中的内存首地址,数据存储在队中
16. int与Integer的区别
int是基本数据类型,定义的变量存储在栈中,定义的函数参数为值传递
Integer是一个类,所以是引用数据类型,定义的变量存储在堆中,定义的函数参数为引用传递
int a = 10; //定义变量a
Integer b = new Integer(); //定义变量b
17. Java方法参数的传递类型
void A(int x,int y); //值传递
void A(Integer x,Integer y); //引用传递
18. String比较用什么方法,==与equals的区别
String比较使用equals();方法
equals();方法比较的是堆中的值
“==”比较的是栈中的值
因此,引用类型比较使用equals();基本类型比较使用等于号
19. String,StringBuffer和StringBuilder的区别
String是定长的,创建一个String类型的字符串,若向后添加字符,则在堆内存中重新分配内存空间
StringBuffer是变长的,成倍扩充 (线程安全)
StringBuilder是变长的,(非线程安全)
StringBuffer和StringBuilder类的对象字符串能够被多次的修改,不产生新的堆内存中的对象
String继承interface接口CharSequence
StringBuffer和StringBuilder继承AbstractStringBuilder
AbstractStringBuilder继承接口CharSequence和接口Appendable