当前位置:首页 » 编程语言 » stringjava

stringjava

发布时间: 2022-01-08 09:10:03

java string是什么类型

Java中String是一个特殊的包装类数据,有两种创建形式:

  1. String s = "abc";
  2. String s = new String("abc");

第一种先在栈中创建一个对String类的对象引用变量s,然后去查找"abc"是否被保存在字符串常量池中,如果没有则在栈中创建三个char型的值'a'、'b'、'c',然后在堆中创建一个String对象object,它的值是刚才在栈中创建的三个char型值组成的数组{'a'、'b'、'c'},接着这个String对象object被存放进字符串常量池,最后将s指向这个对象的地址,如果"abc"已经被保存在字符串常量池中,则在字符串常量池中找到值为"abc"的对象object,然后将s指向这个对象的地址。

第一种特点:JVM会自动根据栈中数据的实际情况来决定是否有必要创建新对象。

第二种可以分解成两步1、String object = "abc"; 2、String s = new String(object); 第一步参考第一种创建方式,而第二步由于"abc"已经被创建并保存到字符串常量池中,因此jvm只会在堆中新创建一个String对象,它的值共享栈中已有的三个char型值。

第二种特点:一概在堆中创建新对象,而不管其字符串值是否相等,是否有必要创建新对象。

在讲字符串比较前,必须要了解==和equals的区别:

因为java所有类都继承于Object基类,而Object中equals用==来实现,所以equals和==是一样的,都是比较对象地址,java api里的类大部分都重写了equals方法,包括基本数据类型的封装类、String类等。对于String类==用于比较两个String对象的地址,equals则用于比较两个String对象的内容(值)。

㈡ java中string和String的区别

java中string和String的区别如下:

String 一般指 java.lang.String 类,作为字符串
string 一般用来作为一个String类型对象的名称

packagecom.qiu.lin.he;

publicclassCeShi{

publicstaticvoidmain(String[]args){
Stringstring="测试String和string的区别";
System.out.println(string);
}

}

结果如下:

㈢ java中string什么意思啊

1. 首先String不属于8种基本数据类型,String是一个对象。 因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。
2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;
3. String str=”kvill”; String str=new String (“kvill”);的区别: 在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念。 常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。

㈣ java中string怎么使用

以下是关于string的七种用法,注意哦,记得要时常去查看java的API文档,那个里面也有很详细的介绍

1>获取

1.1:字符串中包含的字符数,也就是字符串的长度。
int length():获取长度

1.2:根据位置获取位置上某个字符。
char charAt(int index)

1.3:根据字符获取该字符在字符串中的位置。
int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置。

int indexOf(String str):返回的是str在字符串中第一次出现的位置。
int indexOf(String str,int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置。

1.4:int lastIndexOf(String str):反向索引。

2>判断
2.1:字符串中是否包含某一个子串。
boolean contains(str);
特殊之处:indexOf(str):可以索引str第一次出现为止,如果返回-1,表示该str不在字符串中存在。
所以,也可以用于对指定判断是否包含。
if(str.indexOf("a")!=1)
而且该方法既可以判断,也可以获取出现的位置。
2.2:字符串中是否有内容。
boolean isEmpty():原理就是判断长度是否为0。

2.3:字符串是否以指定内容开头。
boolean startsWith(str);

2.4:字符串是否以指定内容结尾。
boolean endsWith(str);

2.5:判断字符内容是否相同,复写了object类中的equals方法。
boolean equals(str);

2.6:判断内容是否相同,并忽略大小写。
boolean.equalsIgnorecase();
3>转换

3.1:将字符数组转成字符串。
构造函数:String(char[])
String(char[],offset,count):将字符数组中的一部分转成字符串
静态方法:
static String ValueOf(char[]);
static String ValueOf(char[] data,int offset,int count);
static String valueOf(char[]);

3.2:将字符串转成字符组
char[] tocharArray();
3.3:将字节数组转成字符串。
String(byte[])
String(byte[],offset,count):将字节数组中的一部分转成字符串

3.4:将字符串转成字节数组。
byte[] getBytes()
3.5:将基本数据类型转成字符串,
static String valueOf(int)
static String valueOf(double)
// 3+"" 与 String.valueOf(3)的值是一样的
特殊:字符串和字节数组在转换过程中,是可以指定编码的。
4>替换
String replace(oldchar,newchar);
5>切割
String[] split(regex);
6>子串。获取字符串中的而一部分
String subString(begin);
String subString(begin,end);
7>转换,去除空格,比较。

7.1:将字符串转成大写或小写
String toUpperCsae() 大转小
String toLowerCsae() 小转大
7.2:将字符串两端的多个空格去除
String trim();
7.3:对两个字符串进行自然顺序的比较
int compareTo(string);
请看如下代码,下面的代码都是针对上面string七种用法而进行一一举例说明:

复制代码 代码如下:

class StringMethodDemo
{
public static void method_Zhuanhuan_Qukong_Bijiao()
{
String s = " hello Java ";

//打印结果是:(hello和java前后门都有空格)hello java
sop(s.toUpperCase());

//打印结果是:(HELLO和JAVA前后门都有空格)HELLO JAVA
sop(s.toLowerCase());
//打印及结果是:不带空格的“hello java”
sop(s.trim());
//比较数的大写,打印结果是:1,因为b对应ascii值是98,
//a对应是97,所以b-a=1
String s1 = "abc";
String s2 = "aaa";
sop(s1.compareTo(s2));
}
public static void method_sub()
{
String s = "abcdef";
//打印结果是:cdef,从指定位置开始到结尾。如果角标不存在,会出现字符串角标越界。
sop(s.substring(2));
//打印结果是:cd,包含头,不包含尾。
sop(s.substring(2,4));
}
public static void method_split()
{
String s = "zhangsan,lisi,wangwu";
String[] arr = s.split(",");
for(int x=0; x<arr.length; x++)
{
sop(arr[x]);
}
}
public static void method_replace()
{
String s = "hello java";
//String s1 = s.replace('a','n');
//String s1 = s.replace('w','n'); 如果要替换的字符不存在,返回的还是原串

String s1 = s.replace("java","world");//打印结果是:hello world
sop("s="+s); //打印结果是:hello java因为字符串一旦被初始化,值就不可被改变
sop("s1="+s1);//打印结果是:hello jnvn
}
public static void method_trans()
{
char[] arr = {'a','b','c','d','e','f'};
String s = new String(arr,1,3);
sop("s="+s);//打印结果是:bcd
String s1 = "zxcvbnm";
char[] chs = s1.toCharArray();
for(int x=0; x<chs.length; x++)
{
sop("ch="+chs[x]);//打印结果是:ch=z,x,c,v,b,n,m
}
}
public static void method_is()
{
String str = "ArrayDemo.java";
//判断文件名称是否是Array单词开头
sop(str.startsWith("Array"));

//判断文件名称是否是.java的文件
sop(str.endsWith(".java"));

//判断文件中是否包含Demo
sop(str.contains("Demo"));
}

public static void method_get()
{
String str = "abcdeakpf";
//长度
sop(str.length());
//根据索引获取字符
sop(str.charAt(4));
//sop(str.charAt(40));当访问到字符串中不存在的角标时会发生(字符串角标越界异常)
//根据字符获取索引
//sop(str.indexOf('a'));
sop(str.indexOf('a',3));//打印的是5,因为角标3是d,
//所以从d后面开始找a,第5个角标是a
//sop(str.indexOf('t',3))打印:-1,如果没有找到角标,返回-1

//反向索引一个字符出现的位置(从右往左查找,但是角标还是从左开始)
sop(str.lastIndexOf("a"));
}
public static void main(String[] args)
{
method_Zhuanhuan_Qukong_Bijiao();
//method_sub();
//method_split();
//method_replace();
//method_trans();
//method_is();
//method_get();
/*
String s1 = "abc";
String s2 = new String("abc");
String s3 = "abc";
System.out.println(s1==s2);
System.out.println(s1==s3);
*/
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}

㈤ java中的string用法

java中的string用法,可以到java api查找方法的使用方式:

classStringMethodDemo
{
publicstaticvoidmethod_Zhuanhuan_Qukong_Bijiao()
{
Strings="helloJava";

//打印结果是:(hello和java前后门都有空格)hellojava
sop(s.toUpperCase());

//打印结果是:(HELLO和JAVA前后门都有空格)HELLOJAVA
sop(s.toLowerCase());

//打印及结果是:不带空格的“hellojava”
sop(s.trim());

//比较数的大写,打印结果是:1,因为b对应ascii值是98,
//a对应是97,所以b-a=1
Strings1="abc";
Strings2="aaa";
sop(s1.compareTo(s2));

}

publicstaticvoidmethod_sub()
{
Strings="abcdef";

//打印结果是:cdef,从指定位置开始到结尾。如果角标不存在,会出现字符串角标越界。
sop(s.substring(2));

//打印结果是:cd,包含头,不包含尾。
sop(s.substring(2,4));
}
publicstaticvoidmethod_split()
{
Strings="zhangsan,lisi,wangwu";

String[]arr=s.split(",");

for(intx=0;x<arr.length;x++)
{
sop(arr[x]);
}
}

publicstaticvoidmethod_replace()
{
Strings="hellojava";

//Strings1=s.replace('a','n');
//Strings1=s.replace('w','n');如果要替换的字符不存在,返回的还是原串

Strings1=s.replace("java","world");//打印结果是:helloworld

sop("s="+s);//打印结果是:hellojava因为字符串一旦被初始化,值就不可被改变
sop("s1="+s1);//打印结果是:hellojnvn

}

publicstaticvoidmethod_trans()
{
char[]arr={'a','b','c','d','e','f'};

Strings=newString(arr,1,3);

sop("s="+s);//打印结果是:bcd

Strings1="zxcvbnm";
char[]chs=s1.toCharArray();

for(intx=0;x<chs.length;x++)
{
sop("ch="+chs[x]);//打印结果是:ch=z,x,c,v,b,n,m
}
}

publicstaticvoidmethod_is()
{
Stringstr="ArrayDemo.java";

//判断文件名称是否是Array单词开头
sop(str.startsWith("Array"));

//判断文件名称是否是.java的文件
sop(str.endsWith(".java"));

//判断文件中是否包含Demo
sop(str.contains("Demo"));
}


publicstaticvoidmethod_get()
{
Stringstr="abcdeakpf";

//长度
sop(str.length());

//根据索引获取字符
sop(str.charAt(4));
//sop(str.charAt(40));当访问到字符串中不存在的角标时会发生(字符串角标越界异常)

//根据字符获取索引
//sop(str.indexOf('a'));
sop(str.indexOf('a',3));//打印的是5,因为角标3是d,
//所以从d后面开始找a,第5个角标是a
//sop(str.indexOf('t',3))打印:-1,如果没有找到角标,返回-1


//反向索引一个字符出现的位置(从右往左查找,但是角标还是从左开始)
sop(str.lastIndexOf("a"));
}

publicstaticvoidmain(String[]args)
{
method_Zhuanhuan_Qukong_Bijiao();
//method_sub();
//method_split();
//method_replace();
//method_trans();
//method_is();
//method_get();
/*
Strings1="abc";
Strings2=newString("abc");

Strings3="abc";
System.out.println(s1==s2);
System.out.println(s1==s3);
*/
}

publicstaticvoidsop(Objectobj)
{
System.out.println(obj);
}
}

㈥ string在java中怎么用

当执行String a="abc";时,JAVA虚拟机会在栈中创建三个char型的值'a'、'b'和'c',然后在堆中创建一个String对象,它的值(value)是刚才在栈中创建的三个char型值组成的数组{'a','b','c'},最后这个新创建的String对象会被添加到字符串池中。如果我们接着执行String b=new String("abc");代码,由于"abc"已经被创建并保存于字符串池中,因此JAVA虚拟机只会在堆中新创建一个String对象,但是它的值(value)是共享前一行代码执行时在栈中创建的三个char型值值'a'、'b'和'c'.
String a="abc"; 创建了一个对象 这个对象是在字符串池里吧 而不是堆里 所以只创建了一个对象
而String b=new String("abc");在字符串常量池以及 堆里都有对象所以是两个对象
String a="abc"; 在常量池中
new String("abc"); 在堆中
String str1 = "abc";引用的对象在栈(或者叫String池)中。
String str1 =new String ("abc"); 引用的对象在内存/堆中。

㈦ java中string是什么

就是那个意思。
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。例如:

String str = "abc";
等效于:

char data[] = {'a', 'b', 'c'};
String str = new String(data);

㈧ java中String[][] 是什么东西string[]又是什么东西

String[][]是二维数组。例如:String[][]str=newString[4][4],这是创建了一个有4行4列元素的数组。

String[]代表一维数组。例如:String[]str=newString[4],这个创建一个有4个元素的数组。

String[]代表格式为String数组;如str[1] str[2]等。String[][]代表多维数组了.[][],可以理解为几行几列。

String是编程语言中的字符串,String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。

(8)stringjava扩展阅读:

String的主要功能:

String 类提供的成员执行以下操作:比较 String 对象;返回 String 对象内字符或字符串的索引;复制 String 对象的值;分隔字符串或组合字符串;修改字符串的值;将数字、日期和时间或枚举值的格式设置为字符串;对字符串进行规范化。

使用 Compare、CompareOrdinal、CompareTo、Equals、EndsWith 和 StartsWith 方法进行比较。

使用 IndexOf、IndexOfAny、LastIndexOf 和 LastIndexOfAny 方法可获取字符串中子字符串或 Unicode 字符的索引。

使用 Copy 和 CopyTo 可将字符串或子字符串复制到另一个字符串或 Char 类型的数组。

使用 Substring 和 Split 方法可通过原始字符串的组成部分创建一个或多个新字符串;使用 Concat 和 Join 方法可通过一个或多个子字符串创建新字符串。

使用 Insert、Replace、Remove、PadLeft、PadRight、Trim、TrimEnd 和 TrimStart 可修改字符串的全部或部分。

使用 ToLower、ToLowerInvariant、ToUpper 和 ToUpperInvariant 方法可更改字符串中 Unicode 字符的大小写。

使用 Length 属性可获取字符串中 Char 对象的数量;使用 Chars 属性可访问字符串中实际的 Char 对象。

使用 IsNormalized 方法可测试某个字符串是否已规范化为特定的范式。使用 Normalize 方法可创建规范化为特定范式的字符串。

㈨ 关于java中String类!!!!

ava字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生。
一、从根本上认识java.lang.String类和String池
首先,我建议先看看String类的源码实现,这是从本质上认识String类的根本出发点。从中可以看到:
1、String类是final的,不可被继承。public final class String。
2、String类是的本质是字符数组char[], 并且其值不可改变。private final char value[];
然后打开String类的API文档,可以发现:
3、String类对象有个特殊的创建的方式,就是直接指定比如String x = "abc","abc"就表示一个字符串对象。而x是"abc"对象的地址,也叫
做"abc"对象的引用。
4、String对象可以通过“+”串联。串联后会生成新的字符串。也可以通过concat()来串联,这个后面会讲述。
6、Java运行时会维护一个String Pool(String池),JavaDoc翻译很模糊“字符串缓冲区”。String池用来存放运行时中产生的各种字符串,
并且池中的字符串的内容不重复。而一般对象不存在这个缓冲池,并且创建的对象仅仅存在于方法的堆栈区。
5、创建字符串的方式很多,归纳起来有三类:
其一,使用new关键字创建字符串,比如String s1 = new String("abc");
其二,直接指定。比如String s2 = "abc";
其三,使用串联生成新的字符串。比如String s3 = "ab" + "c";
二、String对象的创建
String对象的创建也很讲究,关键是要明白其原理。
原理1:当使用任何方式来创建一个字符串对象s时,Java运行时(运行中JVM)会拿着这个X在String池中找是否存在内容相同的字符串对象,
如果不存在,则在池中创建一个字符串s,否则,不在池中添加。
原理2:Java中,只要使用new关键字来创建对象,则一定会(在堆区或栈区)创建一个新的对象。
原理3:使用直接指定或者使用纯字符串串联来创建String对象,则仅仅会检查维护String池中的字符串,池中没有就在池中创建一个,有则罢
了!但绝不会在堆栈区再去创建该String对象。
原理4:使用包含变量的表达式来创建String对象,则不仅会检查维护String池,而且还会在堆栈区创建一个String对象。
另外,String的intern()方法是一个本地方法,定义为public native String intern(); intern()方法的价值在于让开发者能将注意力集中到
String池上。当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池
中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。
三、不可变类
不可改变的字符串具有一个很大的优点:编译器可以把字符串设置为共享。
不可变类String有一个重要的优点-它们不会被共享引用。
是这样的,JAVA为了提高效率,所以对于String类型进行了特别的处理---为string类型提供了串池
定义一个string类型的变量有两种方式:
string name= "tom ";
string name =new string( "tom ")
使用第一种方式的时候,就使用了串池,
使用第二中方式的时候,就是一种普通的声明对象的方式
如果你使用了第一种方式,那么当你在声明一个内容也是 "tom "的string时,它将使用串池里原来的那个内存,而不会重新分配内存,也就是说,string saname= "tom ",将会指向同一块内存
另外关于string类型是不可改变的问题:
string类型是不可改变的,也就是说,当你想改变一个string对象的时候,比如name= "madding "
那么虚拟机不会改变原来的对象,而是生成一个新的string对象,然后让name去指向它,如果原来的那个 "tom "没有任何对象去引用它,虚拟机的垃圾回收机制将接收它。
据说这样可以提高效率!!!

㈩ java中String是什么

Java字符串,在开发中用的是比较频繁的一个类,我们平时要表达一句话的含义,就可以使用字符串(String)来详细的描述;

Java中已经将字符串进行了很好的封装,我们可以使用String类将字符串进行随意的操作,比如字符串的反转,字符串的分割,字符串的拼接等。

Java String类提供了很多的构造方法,他可以根据我们传入的不同的参数,转换成我们想要的数据;比如可以将字符数组,字节数据,ASCII码数组转换为字符串,而且可以根据传入的参数,判断将数据的哪些位置的内容转换为字符串;

在java中除了String之外还有几个常用的字符串类StringBuffer和StringBuilder,在执行效率方面StringBuilder最快,String最慢,在Java源码中,String类里面有个常量private final char value[];用来存储字符串信息,多以对象一旦创建成功之后,内容就不会改变,但实际上修改值得时候,是不断的创建回收内容,所以String速率最慢;StringBuffer和StringBuilder都是继承于AbstractStringBuilder这个类,在这个类中有个变量char[] value;数组进行字符串内容的存储,变量是可变的,所以不用随时去分配空间,速度相对于String就会快;对于StringBuffer和StringBuffer两个类,在源码中由于StringBuffer中很多方法都被synchronized修饰,所以StringBuffer是线程安全的,也是由于这个原因,StringBuffer速度就相对于StringBuilder慢;

在我们操作比较少量的数据的时候可以使用String,如果数据在多个线程中共享,需要考虑到线程安全,可以使用StringBuffer;

以下为java中String常用的方法示例:

更多java学习方面的问题可以访问这个网页,网页链接,希望我的回答能帮到你。

热点内容
安卓上哪里下大型游戏 发布:2024-12-23 15:10:58 浏览:189
明日之后目前适用于什么配置 发布:2024-12-23 14:56:09 浏览:55
php全角半角 发布:2024-12-23 14:55:17 浏览:829
手机上传助手 发布:2024-12-23 14:55:14 浏览:733
什么样的主机配置吃鸡开全效 发布:2024-12-23 14:55:13 浏览:830
安卓我的世界114版本有什么 发布:2024-12-23 14:42:17 浏览:711
vbox源码 发布:2024-12-23 14:41:32 浏览:278
诗经是怎么存储 发布:2024-12-23 14:41:29 浏览:660
屏蔽视频广告脚本 发布:2024-12-23 14:41:24 浏览:420
php解析pdf 发布:2024-12-23 14:40:01 浏览:819