java基础---16. String字符串

1 字符串的构造方法和直接创建

/*
java.lang.String类代表字符串
API当中说:Java程序中的所有字符串字面值(如:"abc")都作为此类的实例实现。
其实就是说:程序当中所有的双引号字符串,都是String类的对象。(就算没有new,也照样是。)

字符串特点:
1. 字符串的内容永不可变
2. 正因为字符串不可变,所以字符串是可以共享使用的。
3. 字符串效果上相当于char[]字符数组,但是底层原理是byte[]字节数组。

创建字符串的常见3+1种方式
3种构造方法:
public String():创建一个空白字符串,不含有任何内容。
public String(char[] array):根据字符数组的内容,来创建对应字符串。
public String(byte[] array):根据字节数组的内容,来创建对应字符串。
1种直接创建:
String str = "hello"
 */
public class Demo01String {
    public static void main(String[] args) {
        //使用空参构造
        String str1 = new String();
        System.out.println(str1);//
        //使用字符数组创建字符串
        char[] charArray = {'A','B','C'};
        String str2 = new String(charArray);
        System.out.println(str2);//ABC
        //根据字节数组创建字符串
        byte[] byteArray = {97, 98, 99};
        String str3 = new String(byteArray);
        System.out.println(str3);//abc
        //直接创建
        String str4 = "Hello";
        System.out.println(str4);//Hello
        //注意:str1 str2 str3 str4都是字符串对象(就算str4没有new,也算字符串对象)
    }
}

2 字符串的常量池

/*
字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。

对于基本类型来说, ==是进行数值比较。
对于引用类型来说, ==是进行【地址值】的比较
 */
public class Demo02StringPoor {
    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "abc";
        char[] charArray = {'a','b','c'};
        String str3 = new String(charArray);

        System.out.println(str1 == str2);//true
        System.out.println(str1 == str3);//false
        System.out.println(str2 == str3);//false
    }
}

在堆内存中有这样一个空间,叫做字符串常量池,双引号直接写上的字符串(str1,str2)在常量池中,字符串常量池中的字符串对象保存的是byte字节数组的地址值。

原文地址:https://www.cnblogs.com/deer-cen/p/12227945.html

时间: 2024-10-29 12:56:13

java基础---16. String字符串的相关文章

java基础18 String字符串和Object类

一.String字符串 问:笔试题:new String("abc")创建了几个对象?答:两个对象,一个对象是 位于堆内存,一个对象位于字符串常量池 1 public class Demo1 { 2 public static void main(String[] args) { 3 String str1="hello"; 4 String str2="hello"; 5 String str3=new String("hello&q

Java基础16:Java多线程基础最全总结

Java基础16:Java多线程基础最全总结 Java中的线程 Java之父对线程的定义是: 线程是一个独立执行的调用序列,同一个进程的线程在同一时刻共享一些系统资源(比如文件句柄等)也能访问同一个进程所创建的对象资源(内存资源).java.lang.Thread对象负责统计和控制这种行为. 每个程序都至少拥有一个线程-即作为Java虚拟机(JVM)启动参数运行在主类main方法的线程.在Java虚拟机初始化过程中也可能启动其他的后台线程.这种线程的数目和种类因JVM的实现而异.然而所有用户级线

关于Java基础知识 String StringBuffer StringBuilder三者的区别

Java基础中String StringBuffer StringBuilder 以下介绍 相同点:String,StringBuffer,StringBuilder最终底层存储与操作的都是char数组,StringBuffer和StringBuilder都继承了AbstractStringBuilder 不同点:String:char数组是final的,不可变,修改String时实际上是new一个新String对象返回,线程安全,频繁的增删操作时不建议使用 StringBuffer:线程安全(

【转载】Java基础之String中equals,声明方式,等大总结

转载请注明出处:http://blog.csdn.net/dmk877/article/details/49420141 无论你是一个编程新手还是老手,提到String你肯定感觉特别熟悉,因为String类我们在学习java基础的时候就已经学过,但是String类型有我们想象的那么简单吗?其实不然,String类型的知识点还是比较多的.今天就和大家来一起讨论一下,关于String的一些容易让人疑惑的地方,废话不多说进入正题...如有谬误请批评指正,如果有疑问请留言.我会在第一时间修改或回答 通过

黑马程序员-Java基础之String与StringBuffer

String与StringBuffer < java.lang >-- String字符串 java中用String类进行描述.对字符串进行了对象的封装.这样的好处是可以对字符串这种常见数据进行方便的操作.对象封装后,可以定义N多属性和行为. 如何定义字符串对象呢?String s = "abc";只要是双引号引起的数据都是字符串对象. 特点:字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中. ----------------------------------

黑马程序员----java基础:String与StringBuffer及基本数据类型包装类

java中一些基础类比如String.StringBuffer和基本数据类型包装类都是非常常见且使用非常频繁的类.这些类虽然简单,但是想要熟练使用也必须要学习,虽然API文档对这些类的用法都讲的比较详细,但是我觉得还是有必要再整理一下. 一.String类 1.概述 String就是字符串的意思,首先要明确一点的是String并不属于基本数据类型. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 注意new String()

Java基础笔记-String类

String 类(被final修饰) 字符串是一种特殊的对象,一旦字符串被初始化就不可以被改变了.(内容不变) 例如: String  s = “abc”; String  s1 = new String(“abc”); s在内存中有一个对象, s代表的是一个类类型变量,”abc”是一个对象. s1在内存中有两个对象,分别是new出来的和:  “abc” . s == s1;的结果是false.   因为s和s1它们所对应的地址不同,比较的两个地址,s和s1中存储的地址数值是不同的.因此是fal

Java基础(36):String与基本数据类型之间的双向转换

Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使用String类的 valueOf() 方法 3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串 再来看,将字符串转换成基本类型有两种方法: 1. 调用包装类的 parseXxx 静态方法 2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱 PS:其他基

Java中对String字符串的常用操作

这周遇到了一个需要处理String字符串的问题,用到了split将字符串解析为一个String的数组,还用到了某些替换字符的操作. 1 /* 2 **将String source按','间隔开,再分别对array的每个元素进行操作 3 **注意转义的换行符应该是'\\\\n' 4 */ 5 String[] array = source.split("\\,"); 6 7 /* 8 **将所有a替换为b或者删去所有换行符 9 */ 10 source = source.replacea