为了账号安全,请及时绑定邮箱和手机立即绑定

java中,char[ ] subStr=new char[8]是什么意思?

/ 猿问

java中,char[ ] subStr=new char[8]是什么意思?

倚天杖 2019-02-04 15:05:05

java中,char[ ] subStr=new char[8]是什么意思?


查看完整描述

4 回答

?
翻翻过去那场雪

char[ ] subStr=new char[8] 在内存中开辟一个空间储存了八个字符的数组对象
String 分两种String str = "hello" 是将hello放在字符串池中
而String str = new String("hello") 是在内存中开一个空间储存了一个字符串对象
至于你问的跟字符串的区别:这个可以没什么太大的联系,各自的方法跟属性都不一样,虽然可以相互转化,但是在JAVA中都是属于同一个东西,都可以看做对象。一个苹果切8分 跟另外一个苹果,那8分是一个整体,而另一个是一个整体,那8分可以是别的比如香蕉什么的。性质不同的两种类型。

查看完整回答
反对 回复 2019-03-14
?
LEATH

定义了一个长度为8的由单个字符组成的数组
区别为一个是"hello",一个是['h','e','l','l','o']
对它们两个能做的操作方法不同

查看完整回答
反对 回复 2019-03-14
?
犯罪嫌疑人X

是定义一个初始长度为8的字符数组,是指单个字符,要用' '来初始化,比如'a','b',如果写成'ab'就会出错
String定义的是字符串,要用" "来初始化,比如"abd",而且可以使用toCharArray()方法来把字符串转换成字符数组。

查看完整回答
反对 回复 2019-03-14
?
侃侃无极

/*
* 按照你给的截图修正了下,看看是不是你要的
*/
#include<iostream>
#include<cstdio>
using namespace std;
const int MAXSTRLENGTH=99999;//字符串最大长度
/*
***************字符串处理函数的声明*************
*/
int mystrlen(char* s1);
void mystrcpy(char* s2,char* s1);
void mystrcat(char* s1,char* s2);
void mystrcut(char* s1,char* strsub,int m,int len);
void mysort(char* s1);
/*
*********************main函数********************
*/
void main(void)
{
char* s1=new char[MAXSTRLENGTH];
char* substr=new char[0];
substr[0]='\0';
int flg=-1;
cout<<"input s1:"<<endl;
gets(s1);
char* s2=new char[mystrlen(s1)+1];
s2[0]='\0';
while(flg!=0)
{
cout<<"你想对字符串s1做什么操作: input:"<<endl;
cout<<"0:exit(退出)\t\t"<<"1:copy(复制到s2中)\t\t"<<"2:cat s2(连接s2)"<<endl
<<"3:length(获取长度)\t"<<"4:cut(截取)\t\t\t"<<"5:sort(排序)"<<endl;
cin>>flg;
switch(flg)
{
case 0:exit(0);//退出
case 1:
mystrcpy(s2,s1);
cout<<"复制到s2的字符串为:"<<s2<<endl;
break;
case 2:
mystrcat(s1,s2);
cout<<"连接后的字符串为:"<<s1<<endl;
break;
case 3:
cout<<"得到字符串s1的长度为:"<<mystrlen(s1)<<endl;
break;
case 4:
cout<<"输入要截取的字符串s1的位置和长度: :"<<endl;
int m,len;
cin>>m>>len;
mystrcut(s1,substr,m,len);
cout<<"截取串s1下标为"<<m<<"开始的"<<len<<"个字符构成的字符串为:"<<substr<<endl;
break;
case 5:
mysort(s1);
cout<<"排序后字符串s1为:"<<s1<<endl;
break;
default:cerr<<"选择有误,请重新选择!"<<endl;
}
cout<<"\n*******************************************************"<<endl;
}
}
/*
************字符串处理的函数实现*****************
*/
int mystrlen(char* s1)//字符串长度
{
int i=0;
while(true)
{
if(s1[i]=='\0')
i++;
}
return i;
}
void mystrcpy(char* s2,char* s1)//字符串拷贝
{
unsigned int i=0;
unsigned int len=mystrlen(s1);
for(;i<len;i++)
{
s2[i]=s1[i];
}
s2[i]='\0';
}
void mystrcat(char* s1,char* s2)//字符串连接
{
int l1=mystrlen(s1);
int l2=mystrlen(s2);
int i=0;
for(;i<l2;i++,l1++)//此处字符串的长度尽然会自动增加,而无需用new非配内存!?
{
s1[l1]=s2[i];
}
s1[l1]='\0';
}
void mystrcut(char* s1,char* strsub,int m,int len)//字符串截取
{
if( (m+len) > mystrlen(s1) )
{
cerr<<"Index or length is bad"<<endl;
return;
}
int j=0;
for(int i=m;i<(m+len);i++,j++)
{
strsub[j]=s1[i];
}
strsub[len]='\0';
}
void mysort(char* s1)//字符串排序
{
int n=mystrlen(s1);
char tmp;
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(s1[i]>s1[j])
{
tmp=s1[i];
s1[i]=s1[j];
s1[j]=tmp;
}
}
}
}



查看完整回答
反对 回复 2019-03-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信