JAVA
switch(c==b):
错误: 表达式可以放: byte, short, char, int, JDK1.5: 枚举, JDK1.7: String ;—没有Boolean类型
下列程序段的输出结果是
public class Test {
public static void main(String[] args) {
int x = 1, a = 0, b = 0;
switch (x) {
case 0:
b++;
case 1:
a++;
case 2:
a++;
b++;
}
System.out.println("a=" + a);
System.out.println("b=" + b);
}
}
a2,b1
’方法’易错点:
public class MethodDemo03 {
public static void main(String[] args) {
int number = 100;
System.out.println("调用change方法前:" + number); //100
change(number); //实参.
System.out.println("调用change方法后:" + number); //100
}
public static void change(int number) { //形参. //number = 100;
number = 200;
}
}
形参是定义方法时存在,没有实际意义
实参是调用方法时传入的参数参与计算
斐波那契数列:1,1,2,3,5,8…
问:a12=?数组解决
把1~100之间的奇数, 按照6个一行的格式进行输出.
//核心点: 统计遍历, 输出一个就++, 标记变量: 几个一行.
Son类继承自Father类,那么创建Son类的对象的时候先加载谁的.class文件呢?
带分数的计算要小心数据类型转换问题:
7/4=1,4/7=0
’默认’代表default吗?
错:默认代表什么都不写
System.out.println(10.equals(10))结果是什么?
==跟equals有何区别? 运算符和方法
(集合)填写泛型的时候可以写int 错:泛型只能用引用类型
(集合)
s1 = new Student("刘亦菲", 33);
s2 = new Student("刘亦菲", 33);
s3 = new Student("赵丽颖", 31);
s4 = new Teacher("刘亦菲", 33);
问题:下面选项正确的是(不确定选项)
A.s1和s2不属于同一对象
B.s1和s3不属于同一对象
C.s2和s4属于同一对象
D.s1==s2
答:B 实际开发中, 我们认为, 如果同一个类的两个对象, 各个属性都相同, 那么它们就是同一个对象
(集合)同一个对象哈希值肯定相同,不同对象哈希值肯定不同
重地和通话, 儿女和农丰
(集合)
HashMap hm=new HashMap();
Collections.shuffle(hm.keyset());
哪一步错了?为什么?
第二步错了,shuffle参数只能传List
Arrays.toString()传入的参数只能是int类型的
错:基本类型都可以传
为什么Set集合么有get方法?而List集合有?
Set集合没有索引
问题:
- 基本类型在堆区有没有地址值?
- 成员变量和局部变量的区别是什么?
- 构造方法存在的意义是什么?
- 解释什么是索引越界异常(Array Index Out Of Bounds Exception)?
- return 的作用是什么?
- 编译过程有时不必过于纠结合法值问题,前端一般已经解决过这个问题了,后端不用考虑
- 继承的弊端是什么?
- 继承体系中调用成员变量和成员方法的规则是什么?
- 如何让父类也能使用子类独有的方法?
- 被final修饰的方法可以被继承吗?被final修饰的变量无法被子类调用怎么办?
- 方法重写和方法重载之各自的定义区别是什么?(面试题)
- this关键字的作用是什么?它代表谁?
- 键盘录入字符串使用Scanner 的哪个方法?
- 定义标准类的注意事项:
- String类中,用于拼接字符串的方法名是什么?
- String和StringBuilder和StringBuffer之间的区别是什么?
- SimpleDateFormat类的作用是什么?
- 什么是匿名内部类?它的位置可以写在哪里?
- 匿名内部类是用来干什么的?
- List和Set通常通过谁来实现?
- 集合中谁带索引谁不带索引?
- nullPointerException是什么情况下出现?
- 什么是并发修改异常?产生原因是什么?怎么拼写?
- 遍历集合有哪几种方式?
- Map如何获取键值对集合?
- HashSet和Map的键中存储自定义对象的时候不能忘了什么?
- Map中的put方法返回什么?
- Lambda 表达式不能做什么?
- 什么是可变参数?它的本质是什么?
- Lambda表达式的省略的规则
- Lambda和匿名内部类之间的区别是什么?
- 请用所学,模拟栈和队列数据结构的特点
- 为什么会出现乱码的情况?
- Java是多线程的吗?
- 异常的最顶层类是叫什么名字?
- synchronized(同步)代码块的原理是什么?
- 实现Runnable接口不用写static?为什么?
- Runnable和Thread开启线程各自的坏处是什么?
- 为什么notify() notifyAll() wait() 写在Object类中而不是Thread类中?
- 什么是序列化,什么是反序列化?
- 多线程并行与并发的区别是什么?
- 多线程的执行具有??性和??性,为什么?
- Lambda表达式似乎只能当成参数传递,不能单独调用方法?
- Thread.currentThread在没有其他线程的默认情况下返回的是哪个线程?
- 网络通信三要素?
- final ,finally ,finalize区别是什么?
- 什么是InetAddress?
- InetAddress的常用方法?
- TCP三次握手是什么?
- 字符流和字节流哪个好用?
- 出现异常怎么办?
- 如下代码
//为了写入方便, 将其封装成: 字符高效流.
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
//4. 定义变量, 记录读取到的数据.
String line;
//5. 循环读取, 只要条件满足, 就一直读, 并将读取到的内容赋值给变量line
while ((line = br.readLine()) != null) {
//6. 将读取到的内容写给服务器端.
bw.write(line);
bw.newLine();
bw.flush();
}
//7. 释放资源.
br.close();
socket.close();
为什么socket关了,还要有flush操作?
- 多线程卖票出现负数票的原因是什么?
- 什么是死锁?
- 如何寻找线程安全的类?
- 线程池里的Future是什么?
- 加载一个类的流程是怎样的?
- 加入线程,和守护线程是什么?
- Properties添加元素和加载流用什么方法?
- 如何将通常的数组内容转化为字符串形式?
- 何为元注解?
- 权限修饰符
- 什么是序列化?
- 序列化到底是什么意思?
问题答案:
1 [解析: 比如int a=10;只是属于引用10所在的空间,只有像引用类型中使用了new才会开辟新空间.
注意:如int数组类型int[] arr={1,2,3}和String类型的String s="sdf"这种写法虽然没有出现new,但这只是写法上的一种省略而已,俗称’语法糖’,本质上还是跟new没有区别 ]
2
1.定义位置不同.
–成员变量: 定义在类中, 方法外.
–局部变量: 定义在方法中, 或者方法声明上.
2.在内存中的存储位置不同.
–成员变量: 存储在堆内存.
–局部变量: 存储在栈内存.
3.生命周期不同.
–成员变量: 随着对象的创建而存在, 随着对象的消失而消失.
–局部变量: 随着方法的调用而存在, 随着方法的调用完毕而消失.
4.初始化值不同.
–成员变量: 有默认值.
–局部变量: 没有默认值, 必须先定义, 再赋值, 然后才能使用.
3 看java笔记构造方法
4 当你访问的数据索引大于该数组的最大索引时,会报索引越界异常
5 结束方法,捎带着返回值
6 …
7 增加了类与类之间的关系,提升了耦合性,举例:父类中包含了子类不需要的功能,子类也需要继承,增加了冗余代码
8.Java中使用变量遵循就近原则,先从局部位置找,局部位置没有就从成员变量找,子类没有就从父类的成员变量找,没有就报错.调用成员方法时,也是同理,先看本类再看父类.
9 答:使用多态向下转型强制类型转换
10 答:(1)可以 (2)final一般要结合static ,public或者private来使用
11 定义如下:
12 避免成员变量和局部变量重名问题;代表调用方法或者变量的对象
13 Scanner#nextLine();
14 成员变量无特殊情况用private修饰
15 答:concat
16 答:String长度固定,后者长度可变
17 答:是用来在Date和String之间做转换用的
18 答:匿名内部类就是没有名字的成员内部类,可以写在成员方法中和方法的参数列表里
19 答:把抽象类或者接口实例化
20 ArrayList和 LinkedList,HashSet和TreeSet
21 集合中带索引的都是list结尾的
22 出现null
23 使用普通迭代器遍历集合时添加元素会产生并发修改异常
产生原因是使用了集合对象添加元素
24 Collection三种List独有两种
25 entrySet方法
26 重写HashCode和equals方法
27 键不存在就直接添加, 并返回null; 键存在, 会用新值覆盖旧值, 并返回旧值.
28 答:不能继承类,只能实现接口,且接口中只能有一个抽象方法
29 它是JDK1.5的特性, 它的本质就是一个数组.
30
参数类型可以省略。但是有多个参数的情况下,不能只省略一个
如果参数有且仅有一个,那么小括号可以省略
如果代码块的语句只有一条,可以省略大括号和分号,和return关键字
31 匿名内部类和Lambda区别?
32 LinkedList
33 编解码不一致
34 是,至少开启了(main)线程和(GC)线程
35 Throwable
36 答: 设置一个锁,让线程去抢,谁抢到了谁先执行
37 因为只new了一个资源对象
38 Runnable接口里只有一个方法,所以子类干不了别的事情
Thread干不了的事它的子类也干不了除非实现接口
39 因为锁对象是任意类型的对象
40 写进去,弄出来
41 并行是两个及以上的线程同时执行(需要多核CPU),并发是交替执行,不停地在程序间切换
42 随机性,延迟性;因为CPU在进行高效的切换
43 Lambda表达式的本质是做事情而不是创建对象,所以它不可能调用任何方法,因为它已经把事情做完了.
44 答:main线程
45 IP,端口号,协议
46 finalize是方法,finally在try catch中释放资源的.exit除外,否则finally中的代码必定会执行
47 答:IP地址包装类: InetAddress(它是IP地址对象的对象形式)
48 答: 通过主机名或者字符串类型的IP得到Inet地址->getByName(s); Inet 转 String -> getHostName(), getHostAddress()
49
客户端发送连接请求,等待确认
服务器端发送信息确认收到请求
服务器端同意连接,发送信息
50 文本文件字符流好用,否则就是字节流好用
51 查API
52 答:想将数据流刷新出来要通过bw.close()的方法,否则就用flush(),关socket没用,只不过flush是立即刷新,close是一起刷新
53
出现负数票的原因是因为: 当tickets的值等于1的时候, 此时如果4个线程都抢到了资源, 就会全部越过if校验, 情况如下:
***tickets是被static修饰的所以是被共享的,也就说线程1执行完后,tickets变成了0,那后面醒来的线程只能从0开始算***
假设 线程1 先醒来, 此时打印: 售卖出第 1 张票, 然后执行tickets--, 此时tickets的值为: 0
假设 线程2 后醒来, 此时打印: 售卖出第 0 张票, 然后执行tickets--, 此时tickets的值为: -1
假设 线程3 后醒来, 此时打印: 售卖出第 -1 张票, 然后执行tickets--, 此时tickets的值为: -2
假设 线程4 后醒来, 此时打印: 售卖出第 -2 张票, 然后执行tickets--, 此时tickets的值为: -3
//因此要加同步避免这种情况的出现
54 同步代码块的嵌套可能会导致死锁
55 Collections 里面有Synchronized的方法
56 是线程执行后, 用于接收线程返回结果的.
57 AppClassLoader(SystemClassLoader)询问ExtClassloader(PlatFormLoader )询问BootStrap
58 父死子才能继承(join)但是有可能父会中断所以要try, 大哥死二弟三弟也要死(setDaemon)但是有延迟
59 setProperty 添加元素,load加载流
60 Arrays.toString(arr[])
61 对注解使用位置有限制的注解
62
1.private: 强调的是给自己使用.
2.默认: 强调的是给同包下的类使用.
3.protected: 强调的是给子类使用.
4.public: 强调的是给大家使用.
63 将数据转化为二进制
64 主要用于IO流中,用流传输对象的时候,则该对象必须实现序列化接口
//1. 创建序列化流, 封装目的地文件.
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("day12/data/1.txt"));
//2. 创建JavaBean对象.
Student s = new Student("刘dd", 33);
//3. 进行序列化操作.
oos.writeObject(s);
JDBC
问题
- 工具类方法中如何处理异常?
- 事务的四大特性是什么?
- 不考虑隔离性的并发访问问题有哪些?
- jdbc工具类封装的是哪几步?
- 什么是事务?
- 配置文件一般放在哪?
问题答案
- 只能try不能抛
原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性(Consistency)事务前后数据的完整性必须保持一致。
隔离性(Isolation)事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。
持久性(Durability)持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。
脏读:一个事务读到了另一个事务未提交的数据.
不可重复读:一个事务读到了另一个事务已经提交(update)的数据。引发另一个事务,在事务中的多次查询结果不一致。
虚读 /幻读:一个事务读到了另一个事务已经提交(insert)的数据。导致另一个事务,在事务中多次查询的结果不一致。
1 注册驱动 2 获取连接 6 释放资源
- 事务是逻辑上的一组操作,组成这组操作的各个单元要么全都成功,要么全都失败.
- resource包下
maven
问题
- idea中如何让一个包具有特殊功能
- tomcat的作用是什么?
- Lombok的作用是什么?
问题答案
- 右键,选择make directory as
- 方便web服务器操作使用以支持web项目
- 只要加上注释,对象直接可以调用用set,get,全参和空参构造