java函数返回字符串的方法 Java中string的用法?
Java中string的用法?
对于比较,在我们的第一反应中就是第一个与第二个是否相等,在Java开发语言中,我们经常是使用双等号“==”来进行两个变量的判断,比如3==3为正确(true),但是在Java中使用“==”进行字符串判断的时候,有时候两个变量明明都是一模一样的,但是他的结果却一直是不相等(false),所以对于新手开发者来说,经常会感到迷惑。通常在我们开发的时候,经常使用的比较方法为a.equals(b)来进行判断两个字符串是否相等。
在Java中,使用“==”一般比较的是两个变量的地址,也就是说这两个变量是在同一个内存单元存储,他们的结果才会相等,对于两个字符串String a = "1234" String b = "1234"对于这两个变量a和b,当时用“==”和使用a.equals(b)的时候,他们的结果都是相等的,因为a和b两个字符串后是两个字符串常量,他们在内存中的存储是在同一个地方,所以使用“==”和a.equals(b)两个结果都是相等的;
但是对于String a = new String("1234) String b = new String("1234")虽然a和b的结果都是“1234”,但是使用“==”进行判断的时候,得到的结果却是不相等的,因为此时的a和b是两个对象,他们所存在的内存位置不相等,所以“==”他的判断也就是不相等的了,此时使用a.equals(b)得到的结果就是正确的;
之所以使用a.equals(b)的结果是判断出两个字符串一样,是因为String类重写了equal()的方法,他的比较方法是循环遍历两个字符串中的每个字符,只有当两个字符串中每个位置上的字符都一样的时候,这个方法返回的值才会是相等(true)
因此在我们开发过程中,遇到字符串的比较,使用字符串的equals()的方法进行判断,这样会减少很多的bug同样不仅仅对于字符串的比较,对于任何两个对象的比较,我们都可以使用equal()方法;
看完上面的内容,你了解Java字符串比较了吗?
为什么说java里面只有值传递?
关于这个问题,不同人对它的理解不尽相同。对初学Java的同学来说,可能简单的认为Java中参数传递就是分为值传递和引用传递,至于为什么,因为课本上就是这么说的。对于有些工作年限的程序员来说,可能认为如果传递的参数类型是普通类型,那么就是值传递,如果参数是对象,那么就是引用传递。还有一些人认为Java中只有值传递,就是题主问题中的主题。
对Java编程语言来说,前两种理解是错误的,Java中只有值传递。对于我来说,刚开始也是理解有值传递和引用传递一说的,但是随着自己写代码的积累,慢慢发现并不是那么回事。那为什么只有值传递呢?
首先,来了解一下什么是值传递,什么是引用传递?
值传递是说在调用函数时,将实际参数值复制一份传递到被调用函数中,在被调函数中修改参数值不会影响原实参值。
引用传递是说在调用函数时,将实际参数的地址直接传递到被调用的函数中,在被调函数中修改参数值会影响原实参值。
如果传递的参数类型是普通基本类型,那么一定是复制一份实参值传递给形参的,但是当参数类型是对象的时候,也是复制的一份参数值传递给形参,只不过复制的是对象引用的地址,也就是在内存中分配的存储地址,不是直接传递的引用地址。
此时,可能有人会说那为什么将一个对象传到另一个方法中,在这个方法中修改了这个对象的属性值时,原调用方法中的对象属性值也跟着变了,它不就是引用传递吗?
其实,这是一个很容易迷惑的点。你仔细看看上面的陈述就会发现,不是这么回事。将一个对象传到另一个方法中,传递的是什么?传递的是对象引用的地址,这个对象引用的地址在另一个方法中被修改了吗?原对象引用有受影响吗?并没有吧!
所以,Java中并没有引用传递,只有值传递,不要再搞错了!
我是『Java实战技术』,关注我获取更多原理分析、实战技术!
java函数返回字符串的方法 sql优化常用的几种方法 java如何获取字符串的第一个字符
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。