标签:初始化 类加载 new 最大值 次方 关键字 参数 单例 因此
一、Finally是肯定会进行执行的
1. finally具有return 则返回finally的return
2. try 具有return 则记录
二、String 对象
String s = "xx"+"cc";//1个对象 会进行优化
String f = new String("xxx")// 二个对象
三、局部变量必须进行初始化才能编译成功、全局变量默认有初始值
四、接口的属性不加任何修饰符会自动加上public static final ,属性不能使用private protected default
五、插入排序、冒泡排序最优的情况下是O(n)次方,插入、选择 平均为n2 然后快排、堆排、希尔、归并 NlogN,二分查找 logN,然后插入、冒泡、归并都是稳定,其他是不稳定的,然后快排需要空间复杂度为n 或logn 其他的都是1.
六、数组复制的方法,System.arrayCopy效率最高
七、子类构造器必须调用父类的构造器,如父类没有重载构造器,则子类会默认调用无参的默认构造器
八、Math常用方法
public static int abs(int a) //取绝对值
public static double ceil(double a) //ceil 天花板 获取向上取整。结果是一个double类型
public static double floor(double a) //floor 地板 获取向下取整。结果是一个double类型
public static int max(int a,int b) min自学 //获取两个值中的最大值。
public static double pow(double a,double b) // a是底数。b是指数
public static double random() //0.0~1.0 之间的小数。包括0.0不包括1.0
public static int round(float a) 参数为double的自学 //四舍五入 在原基础上加0.5 然后向下取整
public static double sqrt(double a) //平方根
九、SPring的Controller线程安不安全
bean默认为singleton 也就是单例,可以设置为protetype 原型,也就是每来一个创建一个对象,但是这个对象的生命周期是不归spring进行管理的。
建议是创建单例,使用一些同步机制进行对共享的数据进行控制,比如ThreadLocal
十、那些是Java的关键字
case break goto long native float const try
保留字和关键字有啥区别
Java保留字是指现有Java版本尚未使用 但以后版本可能会作为关键字使用。
保留字、false \true\goto const null
goto const 是保留字也是关键字 而 false\true\null 是保留字 不属于关键字
十一、类加载器的7中主动触发类加载的过程
1、使用类的Static变量
2、调用这个类的子类
3、new一个类
4、jvm main方法的那个类
5、使用invoke反射的类
6、调用类的static方法
7、对Static变量赋值
然后 父类的初始化要优化与子类
STATIC final的变量会在编译器的时候就已经确定,会加载到类的常量池,如果调用final是不会触发类的加载
类的加载为加载、链接(验证、准备)初始化
1)只有直接定义了静态字段的类,才会被初始化。如果用子类调用父类的静态方法或属性,则视为是父类的主动使用,而不是对子类的主动使用 因此不会去加载子类.首先初始化父类的static变量和块,按出现顺序
// 当对类进行加载的时候,会根据以下顺序进行初始化,在类加载的时候解析阶段会进行对变量进行地址引用,并且设置默认值。
* 1.初始化父类的static变量和块,按出现顺序
* 2.初始化子类的static变量和块,按出现顺序
* 3.初始化父类的普通变量,调用父类的构造函数
* 4.初始化子类的普通变量,调用子类的构造函数
标签:初始化 类加载 new 最大值 次方 关键字 参数 单例 因此
原文地址:https://www.cnblogs.com/fc520/p/11745710.html