1.写出一维数组初始化的两种方式
int[] s1 = new int[]{1,2,3,44};
int[] s2 = new int[3];
s2[0] = 1;
s2[1]=2;
数组一旦初始化,长度就是一定了,并且长度不可修改
并且存储数据是一块连续存储的空间
2.写出二维数组初始化的两种方式
int[][] s1 = new int[3][6]
int[][] s2 = new int{{3},{}}
3.如何遍历如下的二维数组
int[] arr= new int[][]{1,2,3}{3,4}};
4.不同类型的一维数组元素的默认初始化值各是多少
整数位 0 浮点数为0.0
boolean 为 false
引用数据类型 null
5.一维数组的内存解析
1.什么是方法的重载
在同一个类中,方法名相同参数列表不同。
参数列表不同表现为:
1.参数的个数不同
2.参数的数据类型不同
3.参数的顺序不同
2.说明java方法中的参数传递机制的具体体现?
当传入的是一个引用数据类型的时候,传递的是地址值
传入基本数据类型的时候,传入的是值。
3.成员变量和局部变量在声明的位置上,是否有默认初始化值上,是否能有权限修饰符修饰上,内存分配的位置有何不同?
成员变量由默认初始化值,局部变量没有默认初始化值。
成员可以有,局部不可有
成员变量分配在堆中。
局部变量分配在栈中。当方法执行完就会出栈。
4.谈谈return关键字的使用
return关键字 作用在方法中的时候,无论有多少层循环,当执行到当前return语句的时候,整个方法都会结束。
break,只结束当前循环。
5.提供如下代码的内存解析
1.什么是多态?什么是虚拟方法调用?
父类的引用指向子类的创建,调用父类中被子类重写的方法,实际上调用的是子类中的方法。
2.一个类可以有几个父类?一个父类可以有多少个子类?子类能获取直接父类的父类中的结构吗?子类能否获取父类中private权限的属性或方法?
一个,无数个,可以,不可以
3.方法的重写override/orerwrite的具体规则有哪些
重写:
发生在 子类和父类中,子类可以对父类已有的方法进行功能的扩充。
重写的两个方法 形参列表必须 相同,方法名必须相同,子类中方法的权限不可以大于父类中的权限
子类中出现的异常不能大于父类中出现的异常
重载:
发生在同一个类中,重载的方法之间必须方法名相同,参数列表不同
参数列表不同表现为 个数不同,顺序不同,数据类型不同
4.super调用构造器,有哪些具体的注意点
super关键字必须写在构造器的最前边,他和this在同一个构造器中只能出现一个。
1.static修饰的属性,相较于实例变量,有哪些特别之处?
static:可以修饰的结构:
属性
static修饰的属性称为常量,保存在方法区的静态域中,随着类的加载而加载。
实例变量保存在堆中。
static可以用来修饰变量,方法,
方法
用来修饰方法:方法就成了静态方法
静态方法不能调用普通方法,普通方法可以调用静态方法
代码块
静态代码块。
内部类
2.final可以用来修饰那些结构,分别表示什么意思?
final 可以修饰类:不能被继承
final可以修饰方法:不可被重写
final可以修饰变量:必须立刻赋值,且不能再次赋值。
3.代码实现单例模式的饿汉式?
private static finally Lazyclazz lazyclazz = new Lazyclazz();
private Lazyclazz(){
}
public static void getObject(){
if(lazyclazz!=null){
return this.lazyclazz
}
else{
return new Lazyclazz();
}
}
4.代码实现单例模式的懒汉式?
private static Lazyclazz lazyclazz;
private Lazyclazz(){
}
public sysncnices static void getObject(){
if(lazyclazz!=null){
return this.lazyclazz
}
else{
return new Lazyclazz();
}
}
5。类的属性赋值的位置有哪些?先后顺序为何?
默认初始化,
显示初始化,代码块中初始化
构造器中初始化
通过对象.属性的方法或者对象.方法的方式赋值
1.关于接口和抽象类
接口 :java7 之前,接口中只能有静态常量 和 抽象方法
java8 之后,接口中可以有 默认方法和 静态方法
抽象类:
抽象类中可以有常量 变量 抽象方法 普通方法 静态方法。