【基础练习 1】字符串的比较。
【目标】理解==和 equals 方法的使用差异性。
第 1 步:调试如下程序。
差异:
(1)“==” 比较的是两个引用在内存中指向的是不是同一对象(即同一内存空间),也就是说在内存空间中的存储位置是否一致。如果两个对象的引用相同时(指向同一对象时),“==”操作符返回true,否则返回flase。
(2)equals方法是由Object类提供的,可以由子类来进行重写。object类默认的实现方法如下:
这里的String类是重写了equals方法,则此时比较的是内容是否相等。而如果直接使用的是object类的equals方法,则该默认的实现是直接通过==来比较的,和==是没有任何区别的。比如:
所以在此处“==”用来比较两个变量所在内存地址是否一样;而equals方法则需要观察Object类是否被重写,如果被子类重写,则比较的是变量的内容,没有被重写,则用法和“==”一样。
小总结:
"==":
①基本类型比较的是值;
②引用类型比较的是地址;
③不同类型不能用它比较,无法通过编译。
第 2 步:调试如下程序。
- 用compareTo()比较字符串时,若长度相同,从第一位开始比较,如果相同返回0,如果不同则马上返回这两个字符的ascii值的差值;若长度不同,直接返回长度差值
- equals()在此处则是比较内容
- equalsIgnoreCase(String str):用于将字符串与指定的对象比较,不考虑大小写。虽然也是用来比较的,但是不同于equals,它是String自己的方法而不是重写Object的方法,只有String对象能调用,而且入参只能是String
【基础练习 2】字符串数据的提取。
【目标】熟悉字符串的字符提取方法的应用。
第 1 步:调试如下程序,在串中取字符。
(1)charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。
(2)substring() 方法返回字符串的子字符串。
第 2 步:将程序改为查找串是否含有 a 字符
(1)Java indexOf() 方法返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回-1。
(2)startsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“开头”的,根据判断结果返回 true 或 false。
【基础练习 3】字符串参数传递。
【目标】理解 String 类型参数和 StringBuffer 类型参数的数据变化规律。
第 1 步: String 类型参数情形
注意,在java中虽然分为基本类型和引用类型,但是在传参数时,实际上就只有值传递而已,没有引用传递,这点需要注意。对于基本类型,就是传值,而引用类型传递的是引用地址的值。所以在java中传参就是传值。
在传参时,如果使用的是String,那么当使用+=等操作符对其进行操作,实际上生成了新对象,所以进行这类操作会改变引用地址。而如果需要在方法中修改实参,那么就应该使用StringBuffer类,这个类可以修改自身所代表的字符串。总的来说就是String不可以改变字符串,使用操作符产生的改变实际上指向新对象,使用StringBuffer可以改变字符串。
第 2 步: StringBuffer 类型参数情形
可以看见StringBuffer类用于可变串,穿对象构建后,内容可修改。
【基础练习 4】基本数据类型包装类的使用。
【目标】理解包装类的作用
int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别:int 是基本类型,直接存数值,而Integer是对象,用一个引用指向这个对象。
Java中int和Integer关系是比较微妙的。关系如下:
1.int是基本的数据类型;
2.Integer是int的封装类;
3.int和Integer都可以表示某一个数值;
4.int和Integer不能够互用,因为他们两种不同的数据类型;
总而言之:如果我们定义一个int类型的数,只是用来进行一些加减乘除的运算or作为参数进行传递,那么就可以直接声明为int基本数据类型,但如果要像对象一样来进行处理,那么就要用Integer来声明一个对象,因为java是面向对象的语言,因此当声明为对象时能够提供很多对象间转换的方式与一些常用的方法。
参考链接:
https://blog.csdn.net/lcsy000/article/details/82782864
https://www.cnblogs.com/whcwkw1314/p/8044947.html
https://blog.csdn.net/feng2147685/article/details/91358722
https://www.cnblogs.com/tiny-me/p/11768281.html
https://blog.csdn.net/feng2147685/article/details/91358722
https://www.runoob.com/java/java-string-charat.html