扎实基础!
笔试让我明白了自己的一些问题。
1 | byte a = 100; |
1 | package com.lzy.test; |
1 | public class Test2 { |
1 | // 随机数 |
基础知识点
一:== 与 equal的区别:
- == 是一个运算符。
- Equals则是string对象的方法,可以.(点)出来。
- 因为对象变量的存储的是对象在内存中的路径,即内存地址。所以用“==”比较时,即使
对象的值相等,但是他们的内存地址不同(引用数据类型),所以==的结果为false。故“==”用于比较两
个变量的值是否相等,而不是变量引用的对象是否相等。 - equal用于比较两个对象是否相同。
- “==”比较的是值【变量(栈)内存中存放的对象的(堆)内存地址】
equal用于比较两个对象的值是否相同【不是比地址】
【特别注意】Object类中的equals方法和“==”是一样的,没有区别,而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,所以,当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重写equals方法。”==”比”equal”运行速度快,因为”==”只是比较引用.
二:public、protected、private、default(friendly)的区别:
public:可以被其他类访问
private:只能被自己访问和修改
protected:类内部、子类、同一个包中的类之间可以访问
default:作用域是包,可以不写。被认为是friendly
final关键字:
修饰类:表示该类不能被继承,final类的所有成员方法都会被隐式的指定为final方法
修饰方法:变是该方法不能被子类修改,类的private方法会被隐式的指定为final方法
修饰变量:基本数据变量不可以被更改
引用类型变量不可以再更改指向另一个对象
Java线程安全与非线程安全:
多线程安全优点体现在多个线程操作同一个对象,非线程安全 != 不安全
线程安全是通过线程同步控制来实现的,也就是synchronized关键字。
ArrayList是非线程安全 Vector是线程安全;
HashMap是非线程安全 HashTable是线程安全;
StringBuilder是非线程安全 StringBuffer是线程安全;
http://blog.csdn.net/YiZhiCXY/article/details/51335385
String、StringBuffer、StringBuilder的区别:
String: 字符串常量
StringBuffer: 字符串变量(线程安全) 多线程下有优势
StringBuilder: 字符串变量(非线程安全) 单线程下有优势
Array、ArrayList、Vectory、LinkedList的区别:(推荐看源码)
ArrayList是为可变数组实现的,当更多的元素添加到ArrayList的时候,它的大小会动态增大。它的元素可以通过get/set方法直接访问,因为ArrayList本质上是一个数组。
1 | /** |
LinkedList是为双向链表实现的,非线程安全(not )
1 | /** |
Vector与ArrayList相似,但是它是同步的。
1 | /** |
如果你的程序是线程安全的,ArrayList是一个比较好的选择。当更多的元素被添加的时候,Vector和ArrayList需要更多的空间。Vector每次扩容会增加一倍的空间,而ArrayList增加50%。
注意:ArrayList默认的初始空间大小相当的小,通过构造函数去初始化一个更大的空间是一个好习惯,可以避免扩容开销。
部分引自于:https://www.cnblogs.com/chenpi/p/5505375.html
Map、List、Set、Array的区别:
https://www.cnblogs.com/chuanheliu/p/6363948.html
Iterator 的hasNext方法和next方法:
hasNext():如果仍有元素可以迭代,则返回 true。(换句话说,如果 next 返回了元素而不是抛出异常,则返回 true)。
next():返回迭代的下一个元素。
1 | /** |
JAVA多线程和并发基础面试问答:
http://www.cnblogs.com/dolphin0520/p/3932934.html
Oracle数据库中TRUNCATE 与 DELETE 的区别:
- ROLLBACK可以撤销DELETE操作但撤销不了TRUNCATE操作
- TRUNCATE TABLE比DELETE的速度快;
- TRUNCATE TABLE是删除表的所有行,而DELETE是删除表的一行或者多行
- TRUNCATE TABLE在遇到任何一行违反约束(外键约束)时仍然删除表的所有行,但表的结构及其列、约束、索引等保持不变,DELETE则直接返回报错。
- 对于被外键约束的表,不能使用TRUNCATE TABLE,而应该使用不带WHERE语句的DELETE语句。
- 如果想保留标识计数值,要用DELETE,因为TRUNCATE TABLE会对新行标志符列搜用的计数值重置为该列的种子。
序列化的作用:
为了保存在内存中的各种对象的状态(序列化),并且可以把保存的对象状态再读出来(反序列化)。
JAVA 中的 super和this
this的用法
- 指向当前对象本身。
- 形参与成员名字重名,用this来区分
1
2
3
4
5
6
7
8
9
10
11
12public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
// 形参与成员名字重名,用this来区分
this.name = name;
}
}super用法
- 指向当前对象的父类
- 子类中的成员变量或方法与父类同名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19public class TestTest extends Country {
String name;
void value() {
name = "Shanghai";
super.value();
System.out.println(super.name);
}
public static void main(String[] args) {
TestTest tt = new TestTest();
tt.value();
}
}
class Country {
String name;
void value() {
name = "China";
}
}