栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

JavaSE进阶—常用类(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaSE进阶—常用类(一)

JavaSE进阶—常用类(一)

关于Java常用类,我们日常的学习中经常都会遇到,所以只需了解其中常用的方法即可。

  • JavaSE进阶—常用类(一)
    • 一、Object
    • 二、字符串相关类
      • (一)String
      • (二)StringBuffer和StringBuilder
      • (三)总结

一、Object

Object为所有类的父类,当一个类没有继承关系时默认继承于Object。所以因为继承关系,所有类都拥有Object提供的属性与方法,因为多态关系,所有的类的对象,都可以转换为Object的对象。

Object中提供的方法:

  • hashCode:获取对象的哈希码值(可以理解为就是对象的内存地址);

  • toString:将对象转换为字符串,Object提供的该方法是将对象所属的类的全路径,拼接@,在拼接对象的内存地址的16进制值如:com.xxx.xxx.类名@765fd778df, 因为Object提供的该方法使用较为困难,所以一般需要重写toString方法。

  • equals:比较两个对象是否一致, Object提供的该方法是比较两个对象的内存地址是否相同。因为Object提供的该方法只能比较内存地址,无法比较对象的值,所以我们通常会重写该方法。

重写思路:
	1,判断调用该方法的对象与传入的对象内存地址是否相同
	2,判断传入的对象是否属于该类对象
	3,将传入的对象转换为该类对象
	4,使用调用该方法的对象与传入的对象的属性值一一对比
  • getClass: 返回此 Object 的运行时该对象的类,该方法返回一个Class对象 。这里只需要了解即可,具体讲解会在反射篇中讲到。
  • notify、notifyAll和wait:线程间通讯,线程篇会着重讲到。

代码演示:

public class Demo {
	public static void main(String[] args) {
		//创建两个Object对象,仅供测试使用,没有特殊意义
		Object obj01 = new Object();
		Object obj02 = new Object();
		//比较obj01和obj02内存地址是否相同
		boolean b = obj01.equals(obj02);
		System.out.println(b);
		//获取obj01的哈希码值
		System.out.println(obj01.hashCode());
		//toString
		System.out.println(obj02.toString());
	}
}
二、字符串相关类 (一)String

不可变字符串,会在常量区多次占据内存,大量运算时导致程序卡顿,甚至崩溃。使用时运行速率比较慢。
常用方法:(注意,加粗为最常用方法,需要记住)

  • equals:重写Object的方法,可以用来判断字符串内容是否相同

  • equalsIgnoreCase:忽略大小写比较字符串内容是否相同

  • startsWith:判断字符串以什么字符或字符串开始

  • trim:清除字符串前后空格(字符串中空格不能清除)

  • contains:判断子字符是否在当前字符串中存在

  • indexOf:判断子字符串在字符串中第一次出现的位置,如果不存在返回-1

  • lastIndexOf:判断子字符串在字符串中最后一次出现的位置,如果不存在返回-1

  • length:获取字符串长度

  • toCharArray:将字符串转为字符(char)数组

  • getBytes:将字符串转换为字节(byte)数组

  • new String(byte[] bs):将字节数组转换为字符串

  • new String(char[] cs):将字符数组转换为字符串

  • new String(bytes, charset):将字节数组转换为特定编码格式的字符串

  • charAt(int index):获取字符串指定位置的字符

  • replace(oldStr,newStr):替换,将指定字符串替换为新的字符串

  • substring(开始位置):截取,从开始位置截取到字符串末尾

  • substring(开始位置,结束位置):截取,从开始位置截取到结束位置-1

  • split(字符串):切割,参数为切割条件,比如参数为逗号,则按逗号将字符串切割成多个子字符串。

  • toUpperCase:将字符串中小写字母转换为大写字母

  • toLowerCase:将字符串中大写字母转换为小写字母

代码演示:

public class Demo {
	public static void main(String[] args) {
		String str = new String("abcdefg");
		//1.equalsIgnoreCase()判断两个字符串是否相等,忽略大小写,返回值是Boolean
		System.out.println(str.equalsIgnoreCase("ABCDEFG"));
		//2.equals()判断字符串内容是否相等,返回值是Boolean
		System.out.println("qqdd".equals("qQdd"));
		//3.charAt()获取相应位置的字符,返回值是char
		System.out.println(str.charAt(2));
		//4.toCharArray()将字符串转换为字符数组,返回值为字符数组
		char[] chars = str.toCharArray();
		System.out.println(chars);
		//5.indexOf()判断字符串在字符中第一次出现的位置,存在则返回位置,不存在返回-1
		System.out.println(str.indexOf("bc"));
		//6.startsWith()判断字符串是否以相应的字符串开始,如果是则返回true
		System.out.println(str.startsWith("ab"));
		//7.endsWith()判断字符串是否以相应的字符串结束,是则返回true
		System.out.println("helloworld.java".endsWith(".java"));
		System.out.println("-------------优雅的分割线------------");
		//8.getBytes()将字符串转换为字节数组
		byte[] bytes = str.getBytes();
		for (byte b : bytes) {
			System.out.print(b+"  ");			
		}
		
		//9.trim()删除字符串的前导和尾随的空格,返回string,无参数
		System.out.println("n删除后"+"      string   hello    ".trim()+str.trim());
		//10.substring,从指定位置开始截取字符串,结果为开始位置到结束位置-1;
		System.out.println(str.substring(1, 3));
		//11.split(),根据指定的字符分割字符串,返回字符数组
		String[] strs = "a,ab,abc,abcd".split(",");
		for (String str1 : strs) {
			System.out.println(str1);			
		}
		System.out.println("-------------优雅的分割线------------");
		//12.contains()判断字符串是否在字符中存在,如果存在,则返回true
		System.out.println(str.contains("a"));
		//13.replace()替换相应的字符串,返回修改后的字符串
		System.out.println(str.replace("bcd", "123"));
		//14.lastIndexOf()判断子字符串在字符串中出现的最后一次位置
		System.out.println(str.lastIndexOf("f"));
		//15.toUpperCase(),将字符串中的字母转换为大写
		System.out.println(str.toUpperCase());
		//16.toLowerCase(),将字符串中的字母转换为小写
		System.out.println(str.toLowerCase());		
	}	
}
(二)StringBuffer和StringBuilder

可变字符串,使用效率远远高于String;StringBuffer和StringBuilder中的方法完全一样,唯一的区别就在于StringBuffer是线程安全的(线程篇笔记重点讲到)。

常用方法(均常用):

  • append(1):给尾部添加,参数为要添加的字符串;

  • insert:插入,两个参数,分别是1:插入的位置,2:插入的字符串;

  • delete:删除,两个参数,1:开始删除的位置,2:结束删除的位置;

  • replace:替换,三个参数1:开始替换位置,2:结束替换位置,3:替换后的字符串;

  • toString:将StringBuffer对象或StringBuilder对象转换为字符串。

代码演示:

public final class Demo {
	public static void main(String[] args) {
		StringBuilder sb = new StringBuilder("hello");
		//在字符串后追加字符串
		sb.append(" world");
		System.out.println(sb);
		//删除指定未知的内容,从start开始到end-1结束
		sb.delete(5,6);
		System.out.println(sb);
		//在指定的位置插入字符串,1指定的位置,2插入的字符串
		sb.insert(5, "  ");
		System.out.println(sb);		
		//替换字符串
		sb.replace(5, 7, "XXX");
		System.out.println(sb);
		//将StringBuilder对象转换成String对象
		String str = sb.toString();
		System.out.println(str);
	}
}
(三)总结

String 类型和 StringBuffer 的主要性能区别:String 是不可变的对象, 因此在每次对 String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,性能就会降低。 基本原则:如果要操作少量的数据,用String ;单线程操作大量数据,用StringBuilder ;多线程操作大量数据,用StringBuffer。不要使用String类的"+"来进行频繁的拼接,因为那样的性能极差的,应该使用StringBuffer或StringBuilder类。

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1040349.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号