1.java八大基本数据类型及包装类
byte Byte
short Short
Int Integer
long Long
Char Charater
boolean Boolean
double Double
float Float
2.引用数据类型
数组、字符串
3.==和equals区别
==:两个字符串中内存地址(堆内存)数值是否相同,属于数值比较
equals:比较的是两个字符串的内容是否相同
比如:
int a=22;float b=22f; 如果用==比较,结果是true;如果用equals比较是false
4.装箱和拆箱
int i=10;
手动装箱:Integer a=nex Integer(i);
自动装箱:Integer b=10
Integer j=new Integer(10);
手动拆箱:Int b=j.intValue(j);
自动拆箱:int n=j;
5.switch支持哪些数据类型
jdk5之前:byte char int short 包装类:Byte Charater integer Short 枚举
jdk7加入了String
6.Object有哪些公用方法
clone、finalize、wait、getclass、equals、notify、toString、hashcode、notifyall
7.final finally finalize区别
final用来修饰类、方法、变量(成员变量、局部变量);修饰的类不能被继承,修饰的方法不能被重写,修饰的变量不能修改
finally:在处理异常时候有些程序必须要执行,就可以放在finally中,finally中的程序最后都会执行(除非finally前面有system.exit(0))
finalize:垃圾回收机制
8.修饰符的范围:
default private protected public
同类 * * * *
同包、子类 * * *
同包、非子类 * * *
不同包、子类 *
不同包、非子类 *
9.get和post区别
URL的可见性:get参数脇可见;post不可见
数据传输方式:get通过拼接URL进行传输参数;post是通过body体传输参数
缓存性:get请求可以缓存;post不可以
后退页面反应:get后退页面不产生影响;post会重新发送请求
数据传输大小:get数据(2-4k,但也会因浏览器觉得,不会相差太大);post是根据php.ini文件决定,可以无限大
安全性
10.什么是字符串常量池
字符串常量池是java堆内存中一个特殊的存储区域,当创建一个String对象,假如此字符串值已经存在于常量池中,则不会创建一个新的对象,而是引用已经存在的对象
11.为什么字符串是不可变的
在定义String a="123" a="234" (在堆中有两个对象(123和234),只是对于栈内存的a对于堆内存的引用改变了,变成a引用234,所以“字符串是不可改变的”表示的堆内存中的对象值没改变)
12.String a=new String("111");
总共有两个对象,一个对象存储在String池中,一个存储在堆中,所以是两个对象,并把堆中的对象交给s持有。
如果String a1="111":表示有一个对象a1存储在String池中,所以a==a1为false
字符串不可b
13 final、finally、finalize区别
final 用于声明属性,方法和类,分别表示属性不可改变,方法不可覆盖,类不可继承。
finally 是异常处理语句结构的一部分,表示总是执行。
finalize 是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例 如关闭文件等。
14. &和&&的区别 ?
&和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;
但是&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止
15.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
12 -11
16.数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,String有length()
17.Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
Overload 方法参数名、个数、类型不同,返回值也可以不同,在一个类中可以实现
Override 方法签名必须相同,返回值也必须相同,在两个类中实现
18.最常见到的runtime exception ?
ClassCastException, 类型强制转换异常
ClassNotFoundException 类没找到时,抛出该异常
FileNotFoundException, 文件未找到异常
IndexOutOfBoundsException, 下标越界异常
IOException, 输入输出异常
NullPointerException, 空指针异常
SQLException, 操作数据库异常
SystemException, 系统异常
19.error和exception有什么区别?
Exception 和Error 都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出或者捕获,它是异常处理机制的基本类型
Exception是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。
Error是指正常情况下,不大可能出现的情况,绝大部分的Error都会导致程序处于非正常的、不可恢复的状态。
20.List, Set, Map是否继承自Collection接口 ?
List,Set是,Map不是。
21.abstract class和interface有什么区别 ?
抽象类可以有构造方法,接口不行。
抽象类可以有普通成员变量,接口不行。
抽象类可以包含非抽象方法,接口不行。
抽象类中可以包含静态方法,接口不行。
抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,
但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
22.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口
抽象类可以实现接口
抽象类可继承具体类也可以继承抽象类。
23.启动一个线程是用run()还是start()? 选答题
start()来启动
实现并启动线程有两种方法
1、写一个类继承自Thread类,重写run方法。用start方法启动线程
24.是否可以继承String类?
不可以,被 final 修饰
25.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,后
26.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
不对,如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同;
如果两个对象的hashCode相同,它们并不一定相同。
27.float f=3.4;是否正确?
不正确。java 里面带点号的默认是 double 类型,不带点的是 int 类型。这里 double 转 float ,精度不够,需要强转
28.char 型变量中能不能存贮一个中文汉字?为什么?
可以。在Java中,char类型占2个字节,而且Java默认采用Unicode编码,一个Unicode码是16位,所以一个Unicode码占两个字节,Java中无论汉子还是英文字母都是用Unicode编码来表示的。所以,在Java中,char类型变量可以存储一个中文汉字。
29.构造器Constructor是否可被override?
不能
30.arraylist和linklist区别
都是实现list接口的列表,arraylist是数组类型的数据结构,linklist是基于链表的数据结构,对于查询某个元素来说:arraylist比linklist快,arraylist只需要通过 数组下标就可以获取,linklist则需要移动指针;但如果是添加元素或者删除元素:linklist比arraylist快,只需要将指针移到指定的位置添加或者删除就可以,而 arraylist要移动数据
Vector相对于ArrayList来说:前者是同步,线程安全
31.如何让多线程共享数据(只需创建一个Runnable,这个Runnable里有那个共享数据。
public class ThreadData implements Runnable{
private int ticked=10;
public void run() {
while (ticked>0){
ticked--;
System.out.println("当前票数:"+ticked);
}
}
public static void main(String[] args) {
ThreadData threadData=new ThreadData();
new Thread(threadData).start();
new Thread(threadData).start();
}
32.sleep和wait区别:
(1)sleep,wait调用后都会暂停当前线程并让出cpu的执行时间,但不同的是sleep不会释放当前持有的对象的锁资源,到时 间后会继续执行,而wait会放弃所有锁并需要notify/notifyAll后重新获取到对象锁资源后才能继续执行
(2)sleep需要捕获或者抛出异常,而wait/notify/notifyAll不需要
33.java的四种引用方式(https://www.cnblogs.com/huajiezh/p/5835618.html)
强引用,软引用,弱引用,虚引用
作用:
第一是可以让程序员通过代码的方式决定某些对象的生命周期;
第二是有利于JVM进行垃圾回收。
强引用:是指创建一个对象并把这个对象赋给一个引用变量。
缺点:强引用有引用变量指向时永远不会被垃圾回收,JVM宁愿抛出OutOfMemory错误也不会回收这种对象。
软引用(用于网页缓存、图片缓存):
如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;
如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。
弱引用:弱引用也是用来描述非必需对象的,当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对 象。
虚引用:
虚引用和前面的软引用、弱引用不同,它并不影响对象的生命周期。在java中用java.lang.ref.PhantomReference类 表示。如果一个对象与虚引用关联,则跟没有引用与之关联一样,在任何时候都可能被垃圾回收器回收。
34.用最有效率的方法计算2乘以8?
2<<3
35.switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:在Java 5以前,switch(expr)中,expr只能是byte、short、char、int;从Java 5开始,Java中引入了枚举类型,expr也可以是enum类型;从Java 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。
!
35.String和StringBuilder、StringBuffer的区别?
答:Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder,它们可以储存和操作字符串。其中String是只读字符串,也就意味着String引用的字符串内容是不能被改变的。而StringBuffer/StringBuilder类表示的字符串对象可以直接进行修改。StringBuilder是Java 5中引入的,它和StringBuffer的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方面都没有被synchronized修饰(非同步),因此它的效率也比StringBuffer要高。
框架:
1.spring的ico和aop
ioc:将类的创建和依赖关系写入配置文件中,由配置文件进行注入,实现松耦合
aop:将关于事务、安全的功能提取出来,由spring配置文件进行添加,提高了复用性
2.mybatis中$和#区别
mybatis中#和$区别:在mybatis中sql传参数#默认是为参数添加单引号,$没有
#{}: 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符,一个 #{ } 被解析为一个参数占位符 。
${}: 仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换。
name-->cy
eg: select id,name,age from student where name=#{name} -- name='cy'
select id,name,age from student where name=${name} -- name=cy
3.
本文详细介绍了Java的基本数据类型、引用类型、字符串常量池、修饰符的作用范围等核心概念,并对比了==与equals的区别、get与post的不同之处,还探讨了final、finally与finalize的区别。

被折叠的 条评论
为什么被折叠?



