1. 值传递与引用传递有哪些区别?

  • (1)值传递。在方法调用中,实参会把它的值传递给形参,形参只是用实参的值初始化一个临时的存储单元,因此形参与实参虽然有着相同的值,但是却有着不同的存储单元,因此对形参的改变不会影响实参的值。
  • (2)引用传递。在方法调用中,传递的是对象(也可以看作是对象的地址),这时形参与实参的对象指向同一块存储单元,因此对形参的修改就会影响实参的值。
  • 在Java语言中,原始数据类型在传递参数时都是按值传递,而包装类型在传递参数时是按引用传递的。
  • Java中处理8种基本的数据类型用的是值传递,其他所有类型都用的是引用传递,由于这8种基本数据类型的包装类型都是不可变量,因此增加了对“按引用传递”的理解难度。

2. assert有什么作用?

断言(assert)作为一种软件调试的方法,提供了一种在代码中进行正确性检查的机制,目前很多开发语言都支持这种机制。它的主要作用是对一个boolean 表达式进行检查,一个正确运行的程序必须保证这个boolean表达式的值为true, 若boolean表达式的值为false, 则说明程序已经处于-种不正确的状态下,系统需要提供告警信息并且退出程序。在实际的开发中,assert主要用来保证程序的正确性,通常在程序开发和测试时使用。为了提高程序运行的效率,在软件发布后,assert 检查默认是被关闭的。
assert包括两种表达式,分别为assert expression1与assert expression1 : expression2, 其中,expression1表示一个boolean 表达式,expression2 表示一个基本类型或者是一个对象,基本类型包括boolean、char、 double、 float、 int 和long。

3. “==”、equals和hashCode有什么区别?

1)“==”运算符。用来比较两个变量的值是否相等。也就是说,该运算符用于比较变量对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能使用“==”运算符。如果对两个对象使用“==”运算符,则判断的是这两个对象是否指向同一块存储空间。

2)equals。 equals是Object类提供的方法之一。Object 类中定义的equals(Object) 方法是直接使用“==”运算符比较的两个对象,所以在没有覆盖equals (Object)方法的情况下,equals(Object)与“==”运算符一样,比较的是引用。相比“==”运算符,equals(Object)方法的特殊之处就在于它可以被覆盖,所以可以通过覆盖的方法让它不是比较引用而是比较数据内容,例如String类的equals方法是用于比较两个独立对象的内容是否相同,即堆中的内容是否相同。

3)hashCode()方法。是从Object类中继承过来的,它也用来坚定两个对象是否相等。Object类中的hashCode()方法返回对象在内存中地址转换城的一个int值,所以如果没有重写hashCode()方法, 任何对象的hashCode()方法都是不相等的。

虽然equals()方法也是用来判断两个对象是否相等的,但是它与hashCode()方法是有区别的。一般来讲,equals( )方法是给用户调用的,如果需要判断两个对象是否相等,可以重写equals( )方法,然后在代码中调用,这样就可以判断它们是否相等了。对于hashCode( )方法,用户一般不会去调用它,例如在hashmap中,由于key是不可以重复的,它在判断key是否重复时就判断了hashCode()这个方法,而且也用到了equals( )方法。此处“不可以重复”指的是equals( )和hashCode()只要有一个不等就可以了。所以,hashCode( )方法相当于是一个对象的编码,就好像文件中的md5,它与equals( )方法的不同之处就在于它返回的是int型,比较起来不直观。

一般在覆盖equals()方法的同时也要覆盖hashCode()方法,否则,就会违反Object. hashCode的通用约定,从而导致该类无法与所有基于散列值(hash)' 的集合类(HashMap、HashSet和Hashtable)结合在一-起正常运行。

hashCode( )方法的返回值和equals( )方法的关系如下:如果x. equals(y)返回true,即两个对象根据equals方法比较是相等的,那么调用这两个对象中任意一个对象的hashCode( )方法都必须产生同样的整数结果。如果x. equals(y)返回false, 即两个对象根据equals( )方法比较是不相等的,那么x和y的hashCode( )方法的返回值有可能相等,也有可能不相等。反之,hashCode( )方法的返回值不相等,一-定能推出equals( )方法的返回值也不相等,而hashCode( )方法的返回值相等,equals方法的返回值则可能相等,也可能不相等。
 

4. String、StringBuffer、StringBuilder和StringTokenizer有什么区别?

java restful get入参非必传 java传参用map还是对象_运算符

java restful get入参非必传 java传参用map还是对象_引用传递_02

java restful get入参非必传 java传参用map还是对象_值传递_03

5. Java中数组是不是对象?

java restful get入参非必传 java传参用map还是对象_引用传递_04

6. length属性和length()方法有什么区别?

java restful get入参非必传 java传参用map还是对象_值传递_05

java restful get入参非必传 java传参用map还是对象_运算符_06