Java复习笔记11【字符串常用方法2】
来源:互联网 发布:java技术手册 编辑:程序博客网 时间:2024/04/30 23:27
package com.lesson10.example;
/*
* 二、比较属性
* 1、string.equals(str) 判断两个字符串是否相等
* (1)参数:String
* (2)返回值:boolean
* 2、string.compareTo(str) 比较两个字符串,得到字符串之间的差值
* (1)参数:String
* (2)返回值:int 两个字符串的差值
* 0 string==str
* >0 string>str
* <0 string<str
* ---------------------------------------------------
* 注意:equals和compareTo都区分大小写,如果判断时需要忽略大小写,就使用
* equalsIgnoreCase()和compareToIgnoreCase()进行比较
* */
class Value{ //自定义类,用于EqualsExample中的例子
int i;Object o;public Value(Object o){
this.o = o;
}
}
class EqualsExample{//比较 == 和 equals的用法
/*
* 基本类型比较:只能使用 == ,不能使用equals
* */
public void compare1(){
int a = 1;int b = 1;byte c = 1;System.out.println("a == b " + (a == b));// trueSystem.out.println("a == b " + (a == c));// true//System.out.println(a.equals(b));//error,equals不能比较数值型
}
/*
* 字符串类型比较(最好使用equals比较)
* 1、== 比较变量本身的值,即两个变量在内存中的首地址
* 2、equals 比较变量的内容
* */
public void compare2(){
String str1 = "abc";String str2 = "abc";String str3 = new String("abc");char a = 'a';String str4 = a + "bc";//这种方法是不放入字符串池的System.out.println("str1 == str2 " + (str1 == str2));// true// 在JVM内存在字符串池,保存着很多String对象,可以被共享使用//新建"abc"字符串时,系统会先到内存中查找是否存在'a'、'b'、'c',如果存在则直接引用,否则新建//索引str1和str2引用的是同一个字符串System.out.println("str1 == str3 " + (str1 == str3));// false//每new一次分配一块新的内存,是一个新的对象System.out.println("str1 == str4 " + (str1 == str4));// falseSystem.out.println("str1.equals(str2) " + (str1.equals(str2)));// trueSystem.out.println("str1.equals(str3) " + (str1.equals(str3)));// trueSystem.out.println("str1.equals(str4) " + (str1.equals(str4)));// true
}
/*
* 对象类型比较
* == 和 equals都是判断是否指向同一个对象(如果重写equals方法,则可设置equals比较对象的内容)
* */
public void compare3(){
Value v1 = new Value("ab");Value v2 = new Value("ab");Value v3 = new Value("abc");v1.i = v2.i = 100;//v1和v2不是同一个对象,所以v1.i和v2.i也不是同一个变量
System.out.println("v1 == v2 " + (v1 == v2));//falseSystem.out.println("v1.equals(v2) " + (v1.equals(v2)));//false//如果在自定义类中设置新的equals方法,则可以用来比较对象的内容。//但是Value没有重写equals,所以只能比较地址v3 = v1; //v3执行v1对象,则v3和v1是同一个对象System.out.println("v1 == v3 " + (v1 == v3)); //trueSystem.out.println("v1.equals(v3) " + (v1.equals(v3))); //true}
}
class CompareExample{//了解compareTo()方法的用法
/*
* 【compareTo()方法的比较方法】
* 1、从两个字符串的第一个字符开始比较,结果为两个字符的ASCII码值的差,如果前一个字符比较的字符差值为0,
* 再比较下一个字符,依次类推。(如果字符ASCII码的差值不为0,则比较结束,返回该ASCII码差值)
* 2、如果当其中一个字符串已经结束,还没有比较出大小(即前面所有比较的字符都相同),则返回字符串的长度差
* ---------------------------------------------------------------
* 【总结】优先依次比较字符ASCII码差值,ASCII码差值相同再比较长度差
* */
public void compare(){
String str1 = "abc";String str2 = "bcd";String str3 = "abef";String str4 = "abc1234";String str5 = "Abc";System.out.println("abc和bcd的compareTo值为:"+str1.compareTo(str2));//-1,差值为第一个字母的ASCII码的差值'a'-'b'=-1System.out.println("abc和abef的compareTo值为:"+str1.compareTo(str3));//-2,差值为第三个字母的ASCII码的差值'c'-'e'=-2System.out.println("abc和abc1234的compareTo值为:"+str1.compareTo(str4));//-4,差值为两个字符串的长度差,因为"abc"-"abc"=0,所以返回长度差System.out.println("abc和Abc的compareTo值为:"+str1.compareTo(str5));//32,差值为'a'-'A'=32,compareTo区分大小写System.out.println("abc和Abc的compareToIgnoreCase值为:"+str1.compareToIgnoreCase(str5));//0,compareToIgnoreCase可以忽略大小写
}
}
public class StringExample3 {
public static void main(String args[]){
//equals()方法EqualsExample ee = new EqualsExample();ee.compare1();//比较基本类型ee.compare2();//比较字符串类型ee.compare3();//比较对象类型//compare()方法CompareExample ce = new CompareExample();ce.compare();
}
}
0 0
- Java复习笔记11【字符串常用方法2】
- Java复习笔记10【字符串常用方法1】
- Java复习笔记12【字符串常用方法3】
- Java复习笔记----字符串
- JAVA笔记复习2
- Java字符串常用方法
- java字符串常用方法
- java字符串常用方法
- Java字符串常用方法
- Java复习笔记—常用类库
- 5.7-全栈Java笔记:字符串String的常用方法
- python 复习字典排序,字符串, list, tuple常用方法
- JAVA【字符串】字符串方法笔记
- java SE复习笔记11
- java SE复习笔记2
- java基础复习笔记2
- Java的常用方法--字符串
- java中常用字符串方法
- 存储过程
- 关于ManagementFactory cannot be resolved的问题!
- 广告推荐系统-逻辑回归问题导出
- 母函数详解
- CGImageCreateWithImageInRect截图问题
- Java复习笔记11【字符串常用方法2】
- 智能摄影师,拍出最美的你
- android ListView连接到网络
- 【转自Oracle ACE --杨廷琨】sqlplus注释导致语句重复执行
- C++对象模型
- Windows下 Qt断点调试,查看变量
- JqGrid中文实例
- Android之AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作
- 引水入城