o2o网站运维建设方案,博客关键词优化,如何去做电商,实训网站建设的总结1.int和Integer Integer是int的包装类#xff1b;int是基本数据类型。 Integer变量必须实例化后才能使用#xff1b;int变量不需要。 Integer实际是对象的引用#xff0c;当new一个Integer时#xff0c;实际上是生成一个指针指向此对象#xff1b;而int则是直接存储数据值…1.int和Integer Integer是int的包装类int是基本数据类型。 Integer变量必须实例化后才能使用int变量不需要。 Integer实际是对象的引用当new一个Integer时实际上是生成一个指针指向此对象而int则是直接存储数据值。 Integer的默认值是nullint的默认值是0 2.两个new生成的Integer变量的对比 由于Integer变量实际上是对一个Integer对象的引用所以两个通过new生成的Integer变量永远是不相等的因为new生成的是两个对象其内存地址不同。 3.Integer变量和int变量的对比 Integer变量和int变量比较时只要两个变量的值是向等的则结果为true因为包装类Integer和基本数据类型int比较时Java会自动拆包装为int然后进行比较实际上就变为两个int变量的比较 4.非new生成的Integer变量和new Integer()生成变量的对比 非new生成的Integer变量和new Integer()生成的变量比较时结果为false。因为当变量值在-128~127之间时非new生成的Integer变量指向的是java常量池中的对象而new Integer()生成的变量指向堆中新建的对象两者在内存中的地址不同 5.两个非new生成的Integer对象的对比 对于两个非new生成的Integer对象进行比较时如果两个变量的值在区间-128到127之间则比较结果为true如果两个变量的值不在此区间则比较结果为false Integer i 100;
Integer j 100;
System.out.print(i j); //true
Integer i 128;
Integer j 128;
System.out.print(i j); //false
6.和equals区别是什么 补充 在JVM中内存分为堆内存跟栈内存。 他们二者的区别是 当我们创建一个对象new Object时就会调用对象的构造函数来开辟空间将对象数据存储到堆内存中与此同时在栈内存中生成对应的引用当我们在后续代码中调用的时候用的都是栈内存中的引用还需注意的一点基本数据类型是存储在栈内存中 “”是运算符 ①如果比较的对象是基本数据类型则比较的是其存储的值是否相等 ②如果比较的是引用数据类型则比较的是所指向对象的地址值是否相等是否是同一个对象。 equals是Object的方法用来比较两个对象的地址值是否相等。 注意 equals 方法不能用于比较基本数据类型 如果没有对equals 方法进行重写则相当于“”比较的是引用类型的变量所指向的对象的地址值。 一般情况下类会重写equals方法用来比较两个对象的内容是否相等。比如String类中的equals()是被重写了比较的是对象的值 7.值传递和引用传递的区别是什么为什么说java只有值传递 值传递实参传递给形参的值实参和形参再内存上是两个独立的变量对形参的修改不会影响实参的值 引用传递实参是传递给形参的是堆内存上引用的地址形参和实参在内存上指向的是同一地址对形参的改变会影响实参 值传递不论传递的参数类型是值类型还是引用类型都会在调用栈上创建一个形参的副本。不同的是对于值类型来说复制的就是整个原始值的复制。而对于引用类型来说由于在调用栈中只存储对象的引用因此复制的只是这个引用而不是原始对象。
8.什么是不可变对象好处是什么 不可变对象是指对象一旦被创建状态就不能再改变任何修改都会创建一个新的对象如包装类、string 好处是线程安全 9.能否创建一个包含可变对象的不可变对象
可以比如
final person[] personsnew person[]{}.persons是不可变引用但是person实例却是可变的
不要共享可变对象的引用就可以了如果需要变化时就返回原对象的一个拷贝 10.Java创建对象有哪几种方式 java提供了四种创建对象的方式 1.new创建对象例Person p new Person(); 2.通过反射机制可以调用 class类 或者 Constructor类的newInstance() 方法 例Person p1 Person.class.newInstance(); 补充 newInstance()采用的是类加载机制创建一个新的实例使用newInstance()方法时对象身上一定要有一个默认的无参构造方法使用类加载机制可以很灵活的创建类的实例以后更换类的时候无须修改源代码了。 3.采用clone机制 补充 深拷贝和浅拷贝的区别 浅拷贝是创建一个新对象这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型拷贝的就是基本类型的值如果属性是引用类型拷贝的就是内存地址。 深拷贝是将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象。 区别浅拷贝基本类型之前互不影响引用类型其中一个对象改变了地址就会影响另一个对象深拷贝 改变新对象不会影响原对象他们之前互不影响。 4.通过序列化机制调用java.io.ObjectInputStream对象的 readObject()方法