目录
1 java 中的对象
对象拷贝:对象赋值存在栈里就是对象拷贝,存在堆里就是引用赋值
Java 使用面向对象编程(Object-Oriented Programming,OOP),这是一种编程风格,它旨在使思考编程更接近思考现实世界。
在面向对象中,每个对象都是一个独立的单位,就像现实世界中的对象一样。
看看周围真实的世界,会发现身边有很多对象,车,猫,人等等。所有这些对象都有自己的状态和行为。
拿一只猫来举例,它的状态有:猫名、猫龄、颜色,行为有:睡觉、吃食和发出声音。
对比现实对象和软件对象,它们之间十分相似。
软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。
在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。
1.1 Java 中创建对象的方式
2 Java 中的类
一个类描述对象将是什么,但是与对象本身是分开的。
换句话说,类可以描述为对象的模板,描述或定义。
您可以使用相同的类作为创建多个对象的模板。第一步是定义类,然后成为对象创建的模板。
每个类都有一个名称,每个类都用于定义属性和行为。
下面通过一个简单的类来理解Java中类的定义:
public class Cat{
String name;
int age;
String color;
void sleeping(){
}
void eating(){
}
void barking(){
}
}
3 Java创建对象有几种方式?
java中提供了以下四种创建对象的方式:
1. new创建新对象
2. 通过反射机制
3. 采用clone机制
4. 通过序列化机制
4 有没有可能两个不相等的对象有相同的hashcode
有可能.在产生hash冲突时,两个不相等的对象就会有相同的 hashcode 值.当hash冲突产生时,一般有以
下几种方式来处理:
1. 拉链法:每个哈希表节点都有一个next指针,多个哈希表节点可以用next指针构成一个单向链表,被分配到同一个索引上的多个节点可以
用这个单向链表进行存储.
2. 开放定址法:一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入
3. 再哈希:又叫双哈希法,有多个不同的Hash函数.当发生冲突时,使用第二个,第三个….等哈希函数计算地址,直到无冲突.
5 拷贝和浅拷贝的区别是什么?
浅拷贝:
被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象.
深拷贝:
被复制对象的所有变量都含有与原来的对象相同的值.而那些引用其他对象的变量将指向被复制过的新对象.而不再是原有的那些被引用的对象.换言之.深拷贝把要复制的对象所引用的对象都复制了一遍.