字符串是字符序列,但在java中,它们被视为对象并且本质上是不可变的; java 提供了 java.lang.String 包,提供了不同的方法来操作字符串,但我们也可以在 java 中创建可变字符串。
开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
我们可以使用字符串文字和 new 关键字来定义它。但区别在于,文字不会创建新对象,除非并且直到它在字符串池中不可用。然而,无论字符串常量池如何,new关键字总是会创建新对象,因为它在堆区域中创建字符串。
在java中,我们可以使用以下两种方式定义字符串:
我们使用literal创建的字符串直接进入字符串常量池。这意味着如果请求的字符串已经存在于字符串池中,那么将返回现有的字符串,如果请求的字符串不存在,则只会创建该字符串的新实例并将其放入池中以供将来参考。 JVM 执行所有这些事情。
语法:
String s="abc"; String s1 = "abc" ;
在上述场景中,字符串池中只会创建一个对象,因为 JVM 将无法找到所请求的对象,因此它将创建该对象并将其放入池中,并且 s1 将仅指向该引用以供进一步使用。因此,字符串文字还可以通过不再创建相同的实例来节省内存。因此,它们使我们的代码内存效率更高。
在java中,我们使用new关键字来创建一个新对象。每当我们使用 new 关键字时,它都会为我们创建一个新对象。另外,使用 new 关键字创建的对象会被放入堆内存区域。
语法:
String s = new Stirng("abc");
在上面的例子中,这个对象会被放入堆内存区域,而不是字符串池,因为我们使用new关键字创建它。
示例:
public class Main { public static void main(String[] args) { String s = "abc"; String s1 = "abc"; String ss = new String("abc"); System.out.println("Output will be :: " + s + " "+ s1 +" "+ ss); } }
输出:
它是不可变的,因此一旦分配我们就无法更改它的值。因此,为了创建可变字符串,我们需要使用字符串缓冲区。
需要记住的几点:
可用的各种方法如下:
此外,字符串类还实现了一个接口,即 CharSequence 接口; StringBuilder和String Buffer也实现了这个接口。 StringBuffer和StringBuilder用于在java中创建可变字符串。
代码:
public class Demo{ public static void main(String[] args) { StringBuffer sb=new StringBuffer("creating string "); sb.append("executed");//original string will get chnage System.out.println("Result is " +sb);//it will print creating string executed } }
输出:
代码:
public class Main{ public static void main(String[] args) { StringBuilder sb=new StringBuilder("Creating string"); sb.append(" using string Builder");//original will get change System.out.println("Result is "+sb); } }
输出:
以下是示例:
代码:
public class Main{ public static void main(String[] args) { String s1="demoforsting"; System.out.println("String is " +s1.substring(2,4)); System.out.println( "with one parameter " +s1.substring(2)); } }
输出:
Code:
public class Demo{ public static void main(String[] args) { String s1="abc"; String s2="abc"; String s3="ABC"; String s4="java"; System.out.println("Result is " +s1.equals(s2));//true System.out.println("Result is " +s1.equals(s3));//false System.out.println("Result is " +s1.equals(s4));//false } }
Output:
Code:
public class Demo{ public static void main(String[] args) { String s1="convert it into uppercase"; String upper=s1.toUpperCase(); System.out.println("result is "+upper); } }
Output:
Code:
public class Demo{ public static void main(String[] args) { String s1="CONVERT IT INTO LOWER CASE"; String s1upper=s1.toLowerCase(); System.out.println("result is "+s1upper); } }
Output:
Code:
public class Main{ public static void main(String[] args) { String name="Demo to check contains method"; System.out.println("Result for conatins mehtod is " +name.contains("check")); System.out.println("Result for conatins mehtod is " +name.contains("method")); System.out.println("Result for conatins mehtod is " +name.contains("move")); } }
Output:
Code:
public class Main{ public static void main(String[] args) { String str1 = "Demo for"; String str2 = "Concat"; String str3 = "Method"; // doing for string one String str4 = str1.concat(str2); System.out.println("Result is "+str4); // for multiple string String str5 = str1.concat(str2).concat(str3); System.out.println("Result is "+str5); } }
Output:
Code:
public class Main { public static void main(String[] args) { String s1 =" Provide space to see use of trim method in java "; System.out.println(s1.length()); System.out.println("without trim output is "+s1); //Not using trim here String tr = s1.trim(); System.out.println(tr.length()); System.out.println("with trim output is "+tr); //using trim here } }
Output:
So java string is an immutable object that provides security in various aspects like URL reading, database username and password, port, and many other things. But if we want to create a mutable string, we should use a string buffer and builder.
以上是Java 中的字符串的详细内容。更多信息请关注PHP中文网其他相关文章!