String是字符串常量
String描述的字符串,所有在java程序中使用双引号引用起来的数据都是一个对象
特点:
(1)字符串常量,它是属于一个对象存储在常量池中
(2)将存储完成就不能被修改
(3)共享
equals方法没有过滤大小写
equalsIgnoreCase方法过滤大小写
装箱和拆箱的执行过程?
装箱是通过调用包装类的valueOf方法实现
拆装是通过调用包装类XXXValue方法实现的,XXX代表对应的基本数据类型
如int装箱的时候自动调用Integer的valueOf(int)方法,Integer拆箱的时候自动调用Intege的intValue方法
final在java中的作用是什么?
final语义是不可改变的
(1)被final修饰的类,不能够被继承
(2)被final修饰的成员变量必须要初始化,赋初值后不能再重新赋值(可以调用本对象方法修改属性值)。
对基本类型来说是其值不可变;对引用变量来说其引用不可变,即不能再指向其他的对象。
(3)被fianl修饰的方法代表不能重写
finalize()是在object里定义的,当对象被回收时调用。
mapper接收参数的方式有两种:
(1)#{}预编译
用#{}也需要使用@param()这个注解接收,要不然就将就会报错
(2)
非
预
编
译
用
{}非预编译 用
非预编译用{}进行接收参数有哪些问题?
(1)直接拼接,不能方式sql注入
(2)在注入时,参数不能指定,只能用value来代替,所以后续推荐了@param()这个注释。
参数类型有三种:
1.基本数据类型
2.HashMap(使用方式和pojo类似)
3.pojo自定义包装类
person p1= new person(“小明”,20,“男”)
person p2= new person(“小红”,23,“女”)
通过反射创建对象的3种方式:
(1)创建Class对象的方式一:(对象.getClass(),获取person类中的字节码文件
Class class1 = p1.getClass();
(2)创建Class对象的方式二:(类.class:需要输入一个明确的类,任意一个类型都有一个静态的class属性)
Class class2 = person.classs;
(3)创建Class对象的方式三:(forName():传入是只需要以字符串的方式传入即可)
Class class3 = Class.forName(“cn.itcast.person”);