Java.toCharArray()和charAt()的效率对比分析

LeetCode中的一道算法题,使用toCharArray()时间超时,换成charAt()之后通过,所以测试一下两者的运行效率:

 public static void test() {
 String s = "a";
 for(int i = 0; i < 100000; i++) {
  s += "a";
 }

 long start1 = System.currentTimeMillis();
 char[] cs = s.toCharArray();
 for(char c:cs) {
  System.out.println(1); // 需要输入语句进入循环
 }
 long end1 = System.currentTimeMillis();

 long start2 = System.currentTimeMillis();
 for(int i = 0; i < s.length(); i++) {
  char c = s.charAt(i);
  System.out.println(1);
 }
 long end2 = System.currentTimeMillis();

 System.out.println(end1 - start1);
 System.out.println(end2 - start2);
 }

结果证明charAr()效率较高些,运行结果为:

1980

1443

补充知识:JAVA: toCharArray()类 将字符串转为数组

我就废话不多说了,大家还是直接看代码吧~


public class Demo {

	public static void main(String[] args){

		String str = "helloworld";
    char[] data = str.toCharArray();// 将字符串转为数组
    for (int x = 0; x < data.length; x++) {
      System.out.print(data[x] + " ");
      data[x] -= 32;
      System.out.print(data[x] + " ");
    }
    System.out.println(new String(data));
	}
}

以上这篇Java.toCharArray()和charAt()的效率对比分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java内部类的实现原理与可能的内存泄漏说明

    在使用java内部类的时候要注意可能引起的内存泄漏 代码如下 package com.example; public class MyClass { public static void main(String[] args) throws Throwable { } public class A{ public void methed1(){ } } public static class B{ public void methed1(){ } } 编译生成了如下文件 反编译MyClass 反

  • Java 遍历 String 字符串所有字符的操作

    我就废话不多说了,大家还是直接看代码吧~ package com.app.main.utils; /** * Created with IDEA * author:Dingsheng Huang * Date:2019/6/28 * Time:下午8:48 */ public class StringUtils { public static void main(String[] args) { String test = "abc123"; // 遍历所有字符 for (int i

  • java 流与 byte[] 的互转操作

    1. InputStream -> byte[] 引入 apache.commons.is 包 import org.apache.commons.io.IOUtils; byte[] bytes = IOUtils.toByteArray(inputStream); 2. byte[] -> InputStream InputStream inputStream = new ByteArrayInputStream(bytes); 补充知识:byte[]与各种数据类型互相转换示例 在sock

  • Java map 优雅的元素遍历方式说明

    Java 8 , Lambda + foreach 语法糖, 写起来非常的 clean public static void main(String[] args) { // map init Map<String, String> map = new HashMap<>(); map.put("k", "v"); /*=====处理函数只有单条语句=====*/ map.forEach((k, v) -> System.out.pri

  • Java优先队列(PriorityQueue)重写compare操作

    we can custom min heap or max heap by override the method compare. package myapp.kit.quickstart.utils; import java.util.Comparator; import java.util.Queue; /** * priority queue (heap) demo. * * @author huangdingsheng * @version 1.0, 2020/5/8 */ publi

  • 解决java文件流处理异常 mark/reset not supported问题

    原因: 给定的流不支持mark和reset就会报这个错误. 获取到一个网络流,这个网络流不允许读写头来回移动,也就不允许mark/reset机制. 解决办法: 用BufferedInputStream把原来的流包一层. BufferedInputStream buffInputStream = new BufferedInputStream(fileInputStream); 补充知识:Java BufferedReader之mark和reset方法实践 在读取文本的操作中,常常会在读取到文件末

  • Java.toCharArray()和charAt()的效率对比分析

    LeetCode中的一道算法题,使用toCharArray()时间超时,换成charAt()之后通过,所以测试一下两者的运行效率: public static void test() { String s = "a"; for(int i = 0; i < 100000; i++) { s += "a"; } long start1 = System.currentTimeMillis(); char[] cs = s.toCharArray(); for(c

  • php使用file函数、fseek函数读取大文件效率对比分析

    php读取大文件可以使用file函数和fseek函数,但是二者之间效率可能存在差异,本文章向大家介绍php file函数与fseek函数实现大文件读取效率对比分析,需要的朋友可以参考一下. 1. 直接采用file函数来操作 由于 file函数是一次性将所有内容读入内存,而PHP为了防止一些写的比较糟糕的程序占用太多的内存而导致系统内存不足,使服务器出现宕机,所以默认情况下限制只能最大使用内存16M,这是通过php.ini里的 memory_limit = 16M 来进行设置,这个值如果设置-1,

  • Django bulk_create()、update()与数据库事务的效率对比分析

    下面以创建10000个对象为例进行测试: # 用for循环挨个创建,共花费37秒 for i in range(10000): name="String number %s"%i Record.objects.create(name=name) # 用django事务只提交一次,共花费2.65秒 @transaction.commit_manually def manual_transaction(): for i in range(10000): name="String

  • 最好的Java 反编译工具的使用对比分析

    前言 Java 反编译,一听可能觉得高深莫测,其实反编译并不是什么特别高级的操作,Java 对于 Class 字节码文件的生成有着严格的要求,如果你非常熟悉 Java 虚拟机规范,了解 Class 字节码文件中一些字节的作用,那么理解反编译的原理并不是什么问题. 甚至像下面这样的 Class 文件你都能看懂一二. 一般在逆向研究和代码分析中,反编译用到的比较多.不过在日常开发中,有时候只是简单的看一下所用依赖类的反编译,也是十分重要的. 恰好最近工作中也需要用到 Java 反编译,所以这篇文章介

  • Java集合中contains方法的效率对比分析

    最近让部门技术大佬帮忙代码review的时候,他给我指出了一个小的技术细节,就是对于集合的contains方法尽量选用Set而不是List,平时没怎么注意,仔细看了下源码,大佬就是大佬,技术细节也把握的死死的. Java集合List.Set中均有对集合中元素是否存在的判断方法contains(Object o):Map中有对key及value是否存在的判断方法containsKey(Object key)和containsValue(Object value). 1.ArrayList 在Arr

  • PHP遍历数组的三种方法及效率对比分析

    本文实例分析了PHP遍历数组的三种方法及效率对比.分享给大家供大家参考.具体分析如下: 今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个.顺便写个文章总结下,如果总结不全还请朋友们指出 第一.foreach() foreach()是一个用来遍历数组中数据的最简单有效的方法. <?php $urls= array('aaa','bbb','ccc','ddd'); foreach ($urls as $url){ echo "This Site url is $url! <b

  • java中int转string与string转int的效率对比

    目录 int转string与string转int的效率对比 string转int,两种方法 int转string一般用三种方法 string转int问题分析 分析一波 1.针对传入的字符串为空对象或者字符串为空的字符串 2.针对符号位的处理 3.针对错误字符的处理 4.针对整形数据超出范围的处理 5.int数据范围的讨论 原码.反码.补码 小结一下 int转string与string转int的效率对比 string转int,两种方法 Interger.parseInt(String) Inter

  • Kotlin与Java的主客观对比分析

    Kotlin Kotlin是一门相对比较新的JVM语言,JetBrains自2011年以来一直在积极地开发. 多年来,该语言在Android社区受到的关注度越来越高,并在Google IO 2017大会之后成为Android开发领域最热门的话题.这次大会宣布,Android正式支持Kotlin. 遗憾的是,虽然已经有许多关于Kotlin的文章,但并没有多少客观信息,许多开发人员仍然在苦思冥想,迁移到Kotlin是否是一条正确的道路. 在本文的剩余部分,我将尝试提供一个在将Kotlin作为Java

  • java协程框架quasar和kotlin中的协程对比分析

    目录 前言 快速体验 添加依赖 添加javaagent 线程VS协程 协程代码 多线程代码 协程完胜 后记 前言 早就听说Go语言开发的服务不用任何架构优化,就可以轻松实现百万级别的qps.这得益于Go语言级别的协程的处理效率.协程不同于线程,线程是操作系统级别的资源,创建线程,调度线程,销毁线程都是重量级别的操作.而且线程的资源有限,在java中大量的不加限制的创建线程非常容易将系统搞垮.接下来要分享的这个开源项目,正是解决了在java中只能使用多线程模型开发高并发应用的窘境,使得java也能

  • java原生序列化和Kryo序列化性能实例对比分析

    简介 最近几年,各种新的高效序列化方式层出不穷,不断刷新序列化性能的上限,最典型的包括: 专门针对Java语言的:Kryo,FST等等 跨语言的:Protostuff,ProtoBuf,Thrift,Avro,MsgPack等等 这些序列化方式的性能多数都显著优于hessian2(甚至包括尚未成熟的dubbo序列化).有鉴于此,我们为dubbo引入Kryo和FST这 两种高效Java序列化实现,来逐步取代hessian2.其中,Kryo是一种非常成熟的序列化实现,已经在Twitter.Group

随机推荐