11.Integer和int的区别?
- Integer是int的包装类,int是Java的基本数据类型
- Integer变量必须实例话后才能使用,int不需要
- Integer实际上是对象的使用,当new一个Integer时,实际上是生成一个指针指向新生成的对象,int是数据的存储
- Integer的默认值是null,int的默认值是0
12.new Integer (1)和 Integer a = 1有什么区别?
Integer a = 1
Integer 变量指向的是常量池中的对象
new Integer (1)
new Integer ()变量指向的是堆中新建的对象,两者的内存地址不同
13.Integer a=128 b=128 system.out.print(a==b)的结果为false为什么?
直接使用Integer包装类它的范围在[-128,127]之间不会生成新的对象,通过查看源码可以得知调用的是Integer.valueof方法,就相当于直接int赋值,直接使用Java常量池中的对象,超过过了这个范围就会在堆中new一个对象
14.Java中操作字符串的类有哪些,他们之间有什么区别?
Java中操作字符串的类有string,stringBuffer,stringBuilder ,string和stringBuffer,stringBuilder的区别在于String生成的是不可变的对象,每次操作string都会生成一个新的对象,然后指向新的对象,stringBuffer,stringBuilder是在原有的基础上进行操作的,所以在经常改动的情况下不使用string。
stringBuffer,stringBuilder的区别在于stringBuffer是线程安全的,stringBuilder是非线程安全的,stringBuilder的性能高于stringBuffer,单线程情况下推荐使用stringBuilder多线程情况下推荐使用stringBuffer。
15.String str="i"与 String str=new String("i")一样吗?
不一样,内存的分配方式不一样,String str="i"会被java虚拟机分配到常量池中,String str=new String("i")会被分配到堆内存中
16.如何将字符串反转?
先将数据转换成stringBuffer或stringBuilder的类型然后使用reverse方法
17.字符串的常用方法?
- indexOf 获取指定字符处索引
- charAt 返回指定索引的字符
- equals 字符串的比较
- trim 去除字符串两端的空白
- substring 截取字符串
- replace 字符串替换
- tolowercase 将字符串转成小写
- touppercase 将字符串转成大写
- split 分割字符串,并返回分割后的字符串数组
- length 返回字符串长度
- getBytes 返回字串中byte类型的数组
18.普通类和抽象类的区别?
普通类没有抽象方法,抽象类有抽象方法
抽象类并不能直接实例化,普通类可以直接实例化
19.抽象类中必须要有抽象方法吗?
不需要,抽象类中可以没有抽象方法
20.抽象类可以使用final修饰吗?
不可以,定义抽象类就是为了方便别的类进行继承的,final修饰就不能再被继承,两者相互冲突会产生矛盾,所以抽象类不可以使用final修饰