社区
Java SE
帖子详情
String类型字符串是不是有长度限制,为什么我赋给一个很长的字符串时,输出即只有一半
cds1
2007-07-10 09:24:26
假设我s=kkkkkkkkkkkssssss
输出是s=kkkkkkkkkkkss
以上只是假设,实际上我赋给s的字符串要长得多
求解
...全文
5109
33
打赏
收藏
String类型字符串是不是有长度限制,为什么我赋给一个很长的字符串时,输出即只有一半
假设我s=kkkkkkkkkkkssssss 输出是s=kkkkkkkkkkkss 以上只是假设,实际上我赋给s的字符串要长得多 求解
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
33 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
火龙果被占用了
2007-07-10
打赏
举报
回复
在这里,大家都在帮忙了,用不着再开张帖吧!!
火龙果被占用了
2007-07-10
打赏
举报
回复
8613719716 这个数字在 long 范围之内的啊,long 的数值长度基本上有 19 位了,一般可以满足要求了,你的数字是什么?
sunggwei
2007-07-10
打赏
举报
回复
BigInteger
cds1
2007-07-10
打赏
举报
回复
试过long型了,还是不行
抛出异常的点还是一样的
火龙果被占用了
2007-07-10
打赏
举报
回复
那就使用 long 型的可以吗?
cds1
2007-07-10
打赏
举报
回复
那这个问题要怎么解决呢,我还是要把它转换成自己需要的整型数据,长度也必须那么长
求解
ykrocku
2007-07-10
打赏
举报
回复
>但是把字符减少一位变成"861371971"时又不出抛出异常
基础知识不牢固
java中int是32位,表示不了这么大的数。
你可以使用String 的 parseLong...
火龙果被占用了
2007-07-10
打赏
举报
回复
上面的那个代码错在了第二行上,8613719716 这个数字已经超出了 int 类型的范围(-2147483648~2147483647)之间,所以就报异常啰。查看 int 类型的最大值和最小值可以采用 Integer.MAX_VALUE、Integer.MIN_VALUE 来获得,同理 long 类型的也是类似的。
也可以这么说,int 类型的最大值也就是 String 类型的最大长度,因为在 String 的源代码中它的长度就是使用 int 类型的。
weiqiyiji
2007-07-10
打赏
举报
回复
更正一下,int最大值是2147483646,即2的31次方再减一,Math(2,31)-1
weiqiyiji
2007-07-10
打赏
举报
回复
int的最大值是2147483647
你的值超过了这个最大值
cds1
2007-07-10
打赏
举报
回复
太感谢bao的回答了,这个问题已解决
现在有另一个问题请教一下
String line3[1]="8613719716";
int int1=java.lang.Integer.parseInt(line3[1]);
以上是程序中的一小段,但是在运行的过程中总是抛出异常
Exception in thread "main" java.lang.NumberFormatException: For input string: "8613719716"
但是把字符减少一位变成"861371971"时又不出抛出异常,我想问下这到底是不是字符长度的问题,或者是其它的原因
火龙果被占用了
2007-07-10
打赏
举报
回复
你的 reader 和 wri 没有关!
cds1
2007-07-10
打赏
举报
回复
但是我的字符长度只有十几k啊,所以绝对超不过限制的
我的程序如下:
import java.io.*;
import java.util.*;
public class modifytxt
{
public static void main(String[] args)
{
File f = new File("tbl_DotServiceCode2.txt");
File f1 = new File("modify.txt");
try
{
InputStreamReader read = new InputStreamReader (new FileInputStream(f));
BufferedReader reader=new BufferedReader(read);
String line0="";
String line;
Properties pp = System.getProperties();
String newLine = pp.getProperty("line.separator");
//String ss=line;
//byte[] bytes=new byte[1024];
for(int i=0;;i++)
{
line=reader.readLine();
if(line==null)
break;
String[] line1=line.split(",");
String[] line2=line1[0].split(" ");
String[] line3=line2[0].split("\"");
int int1=java.lang.Integer.parseInt(line3[1]);
String[] line4=line1[1].split(" ");
String[] line5=line4[0].split("\"");
int int2=java.lang.Integer.parseInt(line5[1].substring(0,line3[1].length()));
if(int1==int2)
{
line0=line0+line+newLine;
//bytes=line.getBytes();
}
else
{
for(int j=0;j<=(int2-int1);j++)
{
System.out.println(j);
String str1=((Integer)(int1+j)).toString();
String str2=str1+line5[1].substring(line3[1].length());
line="\""+str1+" \",\""+str2+" \",\"111 \",\"GSM\"";
line0=line0+line+newLine;
//bytes=ss.getBytes();
}
}
}
OutputStreamWriter wri = new OutputStreamWriter (new FileOutputStream(f1));
//BufferedWriter writer=new BufferedWriter(wri);
wri.write(line0,0,line0.length());
//FileOutputStream fos = new FileOutputStream("modify.txt");
//fos.write(bytes);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch(UnsupportedEncodingException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
火龙果被占用了
2007-07-10
打赏
举报
回复
从 String 类中的 length() 方法返回的是 int 型来看的。
火龙果被占用了
2007-07-10
打赏
举报
回复
据说最大的长度是 2GB,不过我没有测试过,内存没有那么大~~
cds1
2007-07-10
打赏
举报
回复
好的,以后要慢慢多用一点
火龙果被占用了
2007-07-10
打赏
举报
回复
没有什么了~~,建议你以后使用 Eclipse 工具吧,用 EditPlus 写的话,编写、调试都不是很方便。
cds1
2007-07-10
打赏
举报
回复
又学到了很多东西,bao兄还有什么要说的吗,没有就送分了
火龙果被占用了
2007-07-10
打赏
举报
回复
如果源文件中含有空行的话,需要在 While 循环内再加上
if (line.trim().length() < 1) {
continue;
}
cds1
2007-07-10
打赏
举报
回复
正在理解中…………………………
加载更多回复(13)
String
字符串
的最大
长度
是多少?
转自:
String
字符串
的最大
长度
是多少?在学习和开发过程中,我们经常会讨论 short ,int 和 long 这些基本数据
类型
的取值范围,但是对于
String
类型
我们好像很少注意它的“取值范围”。那么对于
String
类型
,它到底有没有
长度
限制
呢? 其实
String
类型
的对象,他们是有
长度
限制
的,
String
对象并不能“存储”无限
长度
的
字符串
。关于
String
的
长度
限制
要从编译
时
限制
和运行
时
限制
两方面考虑。 编译期
限制
有JVM虚拟机相关知识的同学肯定知道,下面定义的
字符串
常量“
C++中求
string
类型
字符串
长度
的三种方法
C++中求
string
类型
的
字符串
长度
以及length、size和strlen的本质区别
java
字符串
长度
限制
_Java 中的
String
有没有
长度
限制
?
原标题:Java 中的
String
有没有
长度
限制
?作者 l Hollis来源 l Hollis(ID:hollischuang)关于
String
有没有
长度
限制
的问题,我之前单独写过一篇文章分析过,最近我又抽空回顾了一下这个问题,发现又有了一些新的认识。于是准备重新整理下这个内容。这次在之前那篇文章的基础上除了增加了一些验证过程外,还有些错误内容的修正。我这次在分析过程中会尝试对Jdk的编译过程...
String
长度
的
限制
String
字符串
长度
限制
分为2种 1:编译期
限制
String
长度
之所以会受
限制
,是因为JVM规范对常量池有所
限制
,常量池中每种数据项都有自己的
类型
。JAVA中UTF-8编码的Unicode
字符串
在常量池中CONSTANT_Utf8
类型
表示。 CONSTANT_Utf8的数据结构如下: CONSTANT_Utf8_info { u1 tag; u2 length; u1 bytes[length]; } bytes数组是真正存储常量数据的地方,而 length 就是数组可以存储的最大字
Java中
String
字符串
长度
String
类是Java中最为常用的类,我们知道
String
是个final类,不能修改内容。但是
String
类型
是否有
长度
限制
呢,下面来一探究竟。 想要搞清楚这个问题,首先我们需要翻阅一下
String
的源码,看下其中是否有关于
长度
的
限制
或者定义。
String
类中有很多重载的构造函数,其中有几个是支持用户传入length 来执行
长度
的: public
String
(byte bytes[], int offset, int length) { checkBounds(bytes,
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章