Tag: string

java.lang.StringIndexOutOfBoundsException:字符串索引超出范围

嗨,我写了一个java代码,找到由其他单词组成的最长单词。 我的逻辑是从文本文件中读取单词列表并将每个单词添加到一个数组中(在文本中单词是排序的,每行中只有一个单词)之后我们检查数组中的每个元素是否都有其他元素作为子串。 如果是这样,我们计算子串的数量。 结果将是具有最大子串数的元素 当我给出一个只有两个单词的文本文件时代码正在运行。 但是当有两个以上的单词时,我会听到错误 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:3 如果(s.charAt(i1)== w.charAt(j1))我感觉此行中出现错误 import java.util.*; import java.io.*; import java.lang.reflect.Array; public class Parser { public static void main (String[] args) throws IOException { String [] addyArray = null; FileReader inFile = new FileReader (“sample.txt”); BufferedReader in = new BufferedReader (inFile); String line = “”; int a = 0; int size=0; […]

如何在日食中显示日文字符

我使用eclipse Juno作为Java IDE,在我的java代码中,注释和日志声明都是日语。 eclipse显示垃圾字符而不是正确的日文字符。 我按照这篇文章来解决问题并在eclipse.ini文件中进行了更改。 但是现在我得到的字符串文字没有被双引号错误正确关闭 。

Java StringTokenizer,空null标记

我试图将一个字符串拆分为29个令牌….. stringtokenizer不会返回null令牌。 我试过string.split,但我相信我做错了什么: String [] strings = line.split(“,”, 29); 样本输入: 10150,15:58,23:58,16:00,00:00,15:55,23:55,15:58,00:01,16:03,23:58,,,,,16:00,23:22,15:54,00:03,15:59,23:56,16:05,23:59,15:55,00:01,,,, 10155,,,,,,,,,,,07:30,13:27,07:25,13:45,,,,,,,,,,,07:13,14:37,08:01,15:23 10160,10:00,16:02,09:55,16:03,10:06,15:58,09:48,16:07,09:55,16:00,,,,,09:49,15:38,10:02,16:04,10:00,16:00,09:58,16:01,09:57,15:58,,,,

字符串是不可变的 – 这意味着我永远不应该使用+ =而且只能使用StringBuffer?

字符串是不可变的,这意味着,一旦创建它们就无法更改。 那么,这是否意味着如果你用+ =附加东西比你创建一个StringBuffer并附加文本那么需要更多的内存? 如果你使用+ =,每次必须保存在内存中时你会创建一个新的’对象’,不是吗?

‘str = new String(bytes,“UTF8”)’和’bytes = str.getBytes(“UTF8”)’中的字节值不一样

我可以看到它们与我创建字符串的字节不同! 我用“AES / CBC / PKCS5Padding”来获取字符串。 public static void main(String[] args) { try { int randomNumber = CNStationQueueUtil.randInt(0, 99999); String key = “AES_KEY_TAKENUMB”; byte[] bytes = EncryptHelper.encrypt(key, String.format(“%%%d%%%d”, 1001, randomNumber)); String str = new String(bytes, “UTF8”); System.out.println(“str = ” + str); System.out.println(); byte[] utf8Bytes = str.getBytes(“UTF8”); printBytes(utf8Bytes, “utf8Bytes”); } catch (Exception e) { e.printStackTrace(); } […]

未记载的String.compareTo(null)NPE?

以下小测试抛出一个NPE: public class Test { public static void main(String[] args) { String a = “a”; String b = null; System.out.println(a.compareTo(b)); } } 然而, compareTo()的Javadoc没有提到参数不能为null 。 这很奇怪,因为Javadocs通常在参数不能为null时提及。 这只是文档中的一个小故障还是有一个更基本的原因/扭曲我错过了?

字符串实习在Java 7+中如何工作?

所以,我意识到我要提出的问题涉及到一次又一次被打死的话题,然而,即使在阅读了我能找到的所有答案和文档之后,我仍然对此感到困惑。字符串实习。 也许是因为我对JVM缺乏了解; 也许是因为Java 7中引入的变化使许多上述答案和文档贬值。 无论哪种方式,我都被卡住了,我希望有人可以帮助我更清楚地理解这个概念…… String a = “text”; String b = new String(“text”); 在上面的例子中,我理解将创建两个String对象。 我也明白在内存中只有一个包含序列’t’,’e’,’x’和’t’的char数组。 但是,在内存中实际存储的每个字符串对象是什么? 如果我读过的内容我已经正确阅读:变量a的引用将存储在常量池中,而b的引用将存储在堆中,对吧? 如果是这种情况,我对实习池如何维护实习字符串感到困惑。 它是否跟踪常量池中定义的字符串以及从堆中手动内化(调用.intern() )的字符串? JVM是否创建在常量池中定义的字符串对象并将它们加载到实习池中? 我很困惑这一切是如何运作的…… 再次,对于提出这样令人困惑/愚蠢的问题感到遗憾,只是我对JVM的结构和内部工作相对较新,而且其中很多都让我头晕目眩。 谢谢!

字符串常量池和实习生

我最近几天试图理解String常量池和inter的概念,在阅读了很多文章之后我理解了它的一些部分,但仍然对以下几点感到困惑: – 1. String a = “abc”这会在字符串常量池中创建一个对象,但是以下代码行是否在字符串常量池中创建对象“xyz”? String b = (“xyz”).toLowerCase() 2。 String c = “qwe” String d = c.substring(1) d.intern() String e = “we” 如果在类加载期间将文字“we”添加到String consant池中,如果是这样,为什么d==e结果为true,即使d未指向String Constant池也是如此

java:将字符串保存为gzip文件

我是java初学者,我需要这样的东西: String2GzipFile (String file_content, String file_name) String2GzipFile(“Lorem ipsum dolor sit amet, consectetur adipiscing elit.”, “lorem.txt.gz”) 我无法弄清楚如何做到这一点。

真实生活,在Java中使用String.intern()的实际例子?

我已经看到很多原始的例子描述了String intern()的工作原理,但是我还没有看到一个可以从中受益的真实用例。 我梦寐以求的唯一情况是拥有一个接收大量请求的Web服务,由于僵化的架构,每个请求都非常相似。 通过intern()在这种情况下使用请求字段名称,可以显着减少内存消耗。 任何人都可以提供在生产环境中使用intern()并取得巨大成功的示例吗? 也许是一个流行的开源产品的例子? 编辑:我指的是手动实习,而不是字符串文字的保证实习等。