Array和ArrayList的区别
Array:最高效;但是其容量固定且无法动态改变;
ArrayList: 容量可动态增长;但牺牲效率;
基于效率和类型检验,应尽可能使用Array,无法确定数组大小时才使用ArrayList!
不过当你试着解决更一般化的问题时,Array的功能就可能过于受限。
Array的用法和c/c++的数组没有多大区别,ArrayList的用法如下:
ArrayList<数据类型> 数组名称 = new ArrayList<>();
ArrayList,尖括号代表泛型,泛型只能是引用类型不能是基本类型;
ArrayList想要存储基本类型数据,需要使用基本类型对应的包装类如下:
byte -> Byte
short -> Short
int -> Integer
long -> Long
float -> Float
double -> Double
char -> Character
boolean -> Boolean
a=a+b与a+=b有什么区别吗?
+= 操作符会进行隐式自动类型转换,此处a+=b隐式的将加操作的结果类型强制转换为持有结果的类型, 而a=a+b则不会自动进行类型转换.
final、finalize、finally
final为关键字;
final为用于标识常量的关键字,final标识的关键字存储在常量池中
finalize()为方法;
finalize()方法在Object中进行了定义,用于在对象“消失”时,由JVM进行调用用于对对象进行垃圾回收,类似于C++中的析构函数;用户自定义时,用于释放对象占用的资源(比如进行I/0操作);
finally为区块标志,用于try语句中;
finally{}用于标识代码块,与try{}进行配合,不论try中的代码执行完或没有执行完(这里指有异常),该代码块之中的程序必定会进行;
java反射
java一般通过new创建对象,也可以通过java的放射创建对象,有4种实现方式
1)Class.forName(“类的路径”);
2)类名.class
3)对象名.getClass()
4)基本类型的包装类,可以调用包装类的Type属性来获得该包装类的Class对象
jdbc加载mysql驱动的时候就是使用反射机制来实现Class.forName(‘com.mysql.jdbc.Driver.class’);
类加载后,可以实现java反射的类有以下4种
1)Class:表示正在运行的Java应用程序中的类和接口
注意: 所有获取对象的信息都需要Class类来实现。
2)Field:提供有关类和接口的属性信息,以及对它的动态访问权限。
3)Constructor:提供关于类的单个构造方法的信息以及它的访问权限
4)Method:提供类或接口中某个方法的信息
可以利用Class 对象的 newInstance()或者调用 Constructor 对象的 newInstance()来进行反射动态创建对象实例
关于反射类的知识详情移步[(https://blog.csdn.net/sinat_38259539/article/details/71799078?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163163163816780274189712%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163163163816780274189712&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-71799078.pc_search_insert_download&utm_term=java%E5%8F%8D%E5%B0%84&spm=1018.2226.3001.4187)]