**1.程序的结构有那些?**
顺序结构
选择结构
循环结构
**2.数组实例化有几种方式?**
静态实例化:创建数组的时候已经指定数组中的元素,
```java
int[] a=new int[]{1,3,3}
```
动态实例化:实例化数组的时候,只指定了数组程度,数组中所有元素都是数组类型的默认值
**3.Java中各种数据默认值**
Byte,short,int,long默认是都是0
Boolean默认值是false
Char类型的默认值是’’
Float与double类型的默认是0.0
对象类型的默认值是null
**4.Java常用包有那些?**
Java.lang
Java.io
Java.sql
Java.util
Java.awt
Java.net
Java.math
**5.Java最顶级的父类是哪个?**
Object
**6.Object类常用方法有那些?**
Equals
Hashcode
toString
wait
notify
clone
getClass
**7.java中有没有指针?**
有指针,但是隐藏了,开发人员无法直接操作指针,由jvm来操作指针
**8.java中是值传递引用传递?**
理论上说,java都是引用传递,对于基本数据类型,传递是值的副本,而不是值本身。对于对象类型,传递是对象的引用,当在一个方法操作操作参数的时候,其实操作的是引用所指向的对象。
**9.假设把实例化的数组的变量当成方法参数,当方法执行的时候改变了数组内的元素,那么在方法外,数组元素有发生改变吗?**
改变了,因为传递是对象的引用,操作的是引用所指向的对象
**10.实例化数组后,能不能改变数组长度呢?**
不能,数组一旦实例化,它的长度就是固定的
**11.假设数组内有5个元素,如果对数组进行反序,该如何做?**
创建一个新数组,从后到前循环遍历每个元素,将取出的元素依次顺序放入新数组中
**12.形参与实参**
形参:全称为“形式参数”,是在定义方法名和方法体的时候使用的参数,用于接收调用该方法时传入的实际值;实参:全称为“实际参数”,是在调用方法时传递给该方法的实际值。
**13.构造方法能不能显式调用?**
不能构造方法当成普通方法调用,只有在创建对象的时候它才会被系统调用
**14.构造方法能不能重写?能不能重载?**
不可以重写,可以重载
**15.什么是方法重载?**
方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或者类型不同即可。在这种情况下,该方法就叫被重载了,这个过程称为方法的重载(Overloading)
**16.内部类与静态内部类的区别?**
静态内部类相对与外部类是独立存在的,在静态内部类中无法直接访问外部类中变量、方法。如果要访问的话,必须要new一个外部类的对象,使用new出来的对象来访问。但是可以直接访问静态的变量、调用静态的方法;
普通内部类作为外部类一个成员而存在,在普通内部类中可以直接访问外部类属性,调用外部类的方法。
如果外部类要访问内部类的属性或者调用内部类的方法,必须要创建一个内部类的对象,使用该对象访问属性或者调用方法。
如果其他的类要访问普通内部类的属性或者调用普通内部类的方法,必须要在外部类中创建一个普通内部类的对象作为一个属性,外同类可以通过该属性调用普通内部类的方法或者访问普通内部类的属性
如果其他的类要访问静态内部类的属性或者调用静态内部类的方法,直接创建一个静态内部类对象即可。
**17.Static关键字有什么作用?**
Static可以修饰内部类、方法、变量、代码块
Static修饰的类是静态内部类
Static修饰的方法是静态方法,表示该方法属于当前类的,而不属于某个对象的,静态方法也不能被重写,可以直接使用类名来调用。在static方法中不能使用this或者super关键字。
Static修饰变量是静态变量或者叫类变量,静态变量被所有实例所共享,不会依赖于对象。静态变量在内存中只有一份拷贝,在JVM加载类的时候,只为静态分配一次内存。
Static修饰的代码块叫静态代码块,通常用来做程序优化的。静态代码块中的代码在整个类加载的时候只会执行一次。静态代码块可以有多个,如果有多个,按照先后顺序依次执行。
**18.Final在java中的作用**
Final可以修饰类,修饰方法,修饰变量。
修饰的类叫最终类。该类不能被继承。
修饰的方法不能被重写。
修饰的变量叫常量,常量必须初始化,一旦初始化后,常量的值不能发生改变。
**19.Java中操作字符串使用哪个类?**
String,StringBuffer,StringBuilder
**20.StringBuffer,Stringbuilder有什么区别?**
StringBuffer与StringBuilder都继承了AbstractStringBulder类,而AbtractStringBuilder又实现了CharSequence接口,两个类都是用来进行字符串操作的。
在做字符串拼接修改删除替换时,效率比string更高。
StringBuffer是线程安全的,Stringbuilder是非线程安全的。所以Stringbuilder比stringbuffer效率更高,StringBuffer的方法大多都加了synchronized关键字